summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex1734
1 files changed, 1144 insertions, 590 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 52982c3fe50..be777b6ab07 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -70,7 +70,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2021-02-18}%
+\def\ExplFileDate{2021-05-07}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -1303,6 +1303,7 @@
\__kernel_primitive:NN \omathchardef \tex_omathchardef:D
\__kernel_primitive:NN \omathcode \tex_omathcode:D
\__kernel_primitive:NN \oradical \tex_oradical:D
+ \__kernel_primitive:NN \tracingstacklevels \tex_tracingstacklevels:D
\tex_endgroup:D
\tex_ifdefined:D \@@end
\tex_let:D \tex_end:D \@@end
@@ -1617,12 +1618,12 @@
\cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
\cs_set_protected:Npn \debug_on:n #1
{
- \__kernel_msg_error:nnx { kernel } { enable-debug }
+ \__kernel_msg_error:nnx { debug } { enable-debug }
{ \tl_to_str:n { \debug_on:n {#1} } }
}
\cs_set_protected:Npn \debug_off:n #1
{
- \__kernel_msg_error:nnx { kernel } { enable-debug }
+ \__kernel_msg_error:nnx { debug } { enable-debug }
{ \tl_to_str:n { \debug_off:n {#1} } }
}
\cs_set_protected:Npn \debug_suspend: { }
@@ -1754,7 +1755,7 @@
#8
{ \exp_args:Nc #2 { #4 : #5 T } #6 }
{ { #7 \exp_end: \use:n \use_none:n } }
- { #7 \exp_after:wN \use_ii:nn \fi: \use_none:n }
+ { #7 \__prg_T_true:w \fi: \use_none:n }
}
\cs_set_protected:Npn \__prg_generate_F_form:wNNnnnnN
#1 \s__prg_stop #2#3#4#5#6#7#8
@@ -1762,7 +1763,7 @@
#8
{ \exp_args:Nc #2 { #4 : #5 F } #6 }
{ { #7 \exp_end: { } } }
- { #7 \exp_after:wN \use_none:nn \fi: \use:n }
+ { #7 \__prg_F_true:w \fi: \use:n }
}
\cs_set_protected:Npn \__prg_generate_TF_form:wNNnnnnN
#1 \s__prg_stop #2#3#4#5#6#7#8
@@ -1770,9 +1771,12 @@
#8
{ \exp_args:Nc #2 { #4 : #5 TF } #6 }
{ { #7 \exp_end: } }
- { #7 \exp_after:wN \use_ii:nnn \fi: \use_ii:nn }
+ { #7 \__prg_TF_true:w \fi: \use_ii:nn }
}
-\cs_set:Npn \__prg_p_true:w \fi: \c_false_bool { \fi: \c_true_bool }
+\cs_set:Npn \__prg_p_true:w \fi: \c_false_bool { \fi: \c_true_bool }
+\cs_set:Npn \__prg_T_true:w \fi: \use_none:n { \fi: \use:n }
+\cs_set:Npn \__prg_F_true:w \fi: \use:n { \fi: \use_none:n }
+\cs_set:Npn \__prg_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn }
\cs_set_protected:Npn \prg_set_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_set_eq:cc }
\cs_set_protected:Npn \prg_new_eq_conditional:NNn
@@ -3438,7 +3442,7 @@
\cs_new_protected:Npn \__quark_new_test_aux:Nn #1 #2
{
\if_meaning:w \q_nil #2 \q_nil
- \__kernel_msg_error:nnx { kernel } { invalid-quark-function }
+ \__kernel_msg_error:nnx { quark } { invalid-function }
{ \token_to_str:N #1 }
\else:
\__quark_new_test:Nccn #1
@@ -3462,11 +3466,11 @@
\cs_new_protected:Npn \__quark_new_conditional:Nnnn #1#2#3#4
{
\if_meaning:w \q_nil #2 \q_nil
- \__kernel_msg_error:nnx { kernel } { invalid-quark-function }
+ \__kernel_msg_error:nnx { quark } { invalid-function }
{ \token_to_str:N #1 }
\else:
\if_meaning:w \q_nil #3 \q_nil
- \__kernel_msg_error:nnx { kernel } { invalid-quark-function }
+ \__kernel_msg_error:nnx { quark } { invalid-function }
{ \token_to_str:N #1 }
\else:
\exp_last_unbraced:Nf \__quark_new_test_aux:nnNNnnnn
@@ -3481,7 +3485,7 @@
{
\cs_if_exist_use:cTF { __quark_new_#5_#2:Nnnn } { #4 }
{
- \__kernel_msg_error:nnxx { kernel } { invalid-quark-function }
+ \__kernel_msg_error:nnxx { quark } { invalid-function }
{ \token_to_str:N #4 } {#2}
\use_none:nnn
}
@@ -3610,7 +3614,7 @@
{
\tl_if_in:NnTF \g__scan_marks_tl { #1 }
{
- \__kernel_msg_error:nnx { kernel } { scanmark-already-defined }
+ \__kernel_msg_error:nnx { scanmark } { already-defined }
{ \token_to_str:N #1 }
}
{
@@ -4731,8 +4735,16 @@
{
\__kernel_chk_defined:NT #2
{
- \exp_args:Ne #1
- { \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} }
+ \exp_args:Nf \tl_if_empty:nTF
+ { \cs_prefix_spec:N #2 \cs_argument_spec:N #2 }
+ {
+ \exp_args:Ne #1
+ { \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} }
+ }
+ {
+ \__kernel_msg_error:nnxxx { kernel } { bad-type }
+ { \token_to_str:N #2 } { \token_to_meaning:N #2 } { tl }
+ }
}
}
\cs_new_protected:Npn \tl_show:n #1
@@ -4752,6 +4764,28 @@
\cs_new:Npn \__tl_show:w #1 > #2 . \s__tl_stop {#2}
\cs_new_protected:Npn \tl_log:n #1
{ \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n }
+\cs_new_protected:Npn \__kernel_chk_tl_type:NnnT #1#2#3#4
+ {
+ \__kernel_chk_defined:NT #1
+ {
+ \exp_args:Nf \tl_if_empty:nTF
+ { \cs_prefix_spec:N #1 \cs_argument_spec:N #1 }
+ {
+ \tl_set:Nx \l__tl_internal_a_tl {#3}
+ \tl_if_eq:NNTF #1 \l__tl_internal_a_tl
+ {#4}
+ {
+ \__kernel_msg_error:nnxxxx { kernel } { bad-type }
+ { \token_to_str:N #1 } { \tl_to_str:N #1 }
+ {#2} { \tl_to_str:N \l__tl_internal_a_tl }
+ }
+ }
+ {
+ \__kernel_msg_error:nnxxx { kernel } { bad-type }
+ { \token_to_str:N #1 } { \token_to_meaning:N #1 } {#2}
+ }
+ }
+ }
\scan_new:N \s__tl_nil
\scan_new:N \s__tl_mark
\scan_new:N \s__tl_stop
@@ -4981,7 +5015,7 @@
\cs_new:Npn \str_map_function:nN #1#2
{
\exp_after:wN \__str_map_function:w
- \exp_after:wN \__str_map_function:Nn \exp_after:wN #2
+ \exp_after:wN \__str_map_function:nn \exp_after:wN #2
\__kernel_tl_to_str:w {#1}
\q__str_recursion_tail ? ~
\prg_break_point:Nn \str_map_break: { }
@@ -4990,12 +5024,12 @@
{ \exp_args:No \str_map_function:nN }
\cs_new:Npn \__str_map_function:w #1 ~
{ #1 { ~ { ~ } \__str_map_function:w } }
-\cs_new:Npn \__str_map_function:Nn #1#2
+\cs_new:Npn \__str_map_function:nn #1#2
{
\if_meaning:w \q__str_recursion_tail #2
\exp_after:wN \str_map_break:
\fi:
- #1 #2 \__str_map_function:Nn #1
+ #1 #2 \__str_map_function:nn {#1}
}
\cs_generate_variant:Nn \str_map_function:NN { c }
\cs_new_protected:Npn \str_map_inline:nn #1#2
@@ -5046,6 +5080,16 @@
{ \prg_map_break:Nn \str_map_break: { } }
\cs_new:Npn \str_map_break:n
{ \prg_map_break:Nn \str_map_break: }
+\cs_new:Npn \str_map_tokens:nn #1#2
+ {
+ \exp_args:Nno \use:nn
+ { \__str_map_function:w \__str_map_function:nn {#2} }
+ { \__kernel_tl_to_str:w {#1} }
+ \q__str_recursion_tail ? ~
+ \prg_break_point:Nn \str_map_break: { }
+ }
+\cs_new:Npn \str_map_tokens:Nn { \exp_args:No \str_map_tokens:nn }
+\cs_generate_variant:Nn \str_map_tokens:Nn { c }
\cs_new:Npn \__kernel_str_to_other:n #1
{
\exp_after:wN \__str_to_other_loop:w
@@ -5377,10 +5421,18 @@
\str_new:N \g_tmpa_str
\str_new:N \g_tmpb_str
\cs_new_eq:NN \str_show:n \tl_show:n
-\cs_new_eq:NN \str_show:N \tl_show:N
+\cs_new_protected:Npn \str_show:N #1
+ {
+ \__kernel_chk_tl_type:NnnT #1 { str } { \tl_to_str:N #1 }
+ { \tl_show:N #1 }
+ }
\cs_generate_variant:Nn \str_show:N { c }
\cs_new_eq:NN \str_log:n \tl_log:n
-\cs_new_eq:NN \str_log:N \tl_log:N
+\cs_new_protected:Npn \str_log:N #1
+ {
+ \__kernel_chk_tl_type:NnnT #1 { str } { \tl_to_str:N #1 }
+ { \tl_log:N #1 }
+ }
\cs_generate_variant:Nn \str_log:N { c }
%% File: l3seq.dtx
\scan_new:N \s__seq
@@ -5388,7 +5440,7 @@
\scan_new:N \s__seq_stop
\cs_new:Npn \__seq_item:n
{
- \__kernel_msg_expandable_error:nn { kernel } { misused-sequence }
+ \__kernel_msg_expandable_error:nn { seq } { misused }
\use_none:n
}
\tl_new:N \l__seq_internal_a_tl
@@ -5454,42 +5506,48 @@
}
\cs_generate_variant:Nn \seq_const_from_clist:Nn { c }
\cs_new_protected:Npn \seq_set_split:Nnn
- { \__seq_set_split:NNnn \__kernel_tl_set:Nx }
+ { \__seq_set_split:NNNnn \__kernel_tl_set:Nx \tl_trim_spaces:n }
\cs_new_protected:Npn \seq_gset_split:Nnn
- { \__seq_set_split:NNnn \__kernel_tl_gset:Nx }
-\cs_new_protected:Npn \__seq_set_split:NNnn #1#2#3#4
+ { \__seq_set_split:NNNnn \__kernel_tl_gset:Nx \tl_trim_spaces:n }
+\cs_new_protected:Npn \seq_set_split_keep_spaces:Nnn
+ { \__seq_set_split:NNNnn \__kernel_tl_set:Nx \exp_not:n }
+\cs_new_protected:Npn \seq_gset_split_keep_spaces:Nnn
+ { \__seq_set_split:NNNnn \__kernel_tl_gset:Nx \exp_not:n }
+\cs_new_protected:Npn \__seq_set_split:NNNnn #1#2#3#4#5
{
- \tl_if_empty:nTF {#3}
+ \tl_if_empty:nTF {#4}
{
\tl_set:Nn \l__seq_internal_a_tl
- { \tl_map_function:nN {#4} \__seq_wrap_item:n }
+ { \tl_map_function:nN {#5} \__seq_wrap_item:n }
}
{
\tl_set:Nn \l__seq_internal_a_tl
{
- \__seq_set_split_auxi:w \prg_do_nothing:
- #4
+ \__seq_set_split:Nw #2 \prg_do_nothing:
+ #5
\__seq_set_split_end:
}
- \tl_replace_all:Nnn \l__seq_internal_a_tl { #3 }
+ \tl_replace_all:Nnn \l__seq_internal_a_tl {#4}
{
\__seq_set_split_end:
- \__seq_set_split_auxi:w \prg_do_nothing:
+ \__seq_set_split:Nw #2 \prg_do_nothing:
}
\__kernel_tl_set:Nx \l__seq_internal_a_tl { \l__seq_internal_a_tl }
}
- #1 #2 { \s__seq \l__seq_internal_a_tl }
+ #1 #3 { \s__seq \l__seq_internal_a_tl }
}
-\cs_new:Npn \__seq_set_split_auxi:w #1 \__seq_set_split_end:
+\cs_new:Npn \__seq_set_split:Nw #1#2 \__seq_set_split_end:
{
- \exp_not:N \__seq_set_split_auxii:w
- \exp_args:No \tl_trim_spaces:n {#1}
+ \exp_not:N \__seq_set_split:w
+ \exp_args:No #1 {#2}
\exp_not:N \__seq_set_split_end:
}
-\cs_new:Npn \__seq_set_split_auxii:w #1 \__seq_set_split_end:
+\cs_new:Npn \__seq_set_split:w #1 \__seq_set_split_end:
{ \__seq_wrap_item:n {#1} }
\cs_generate_variant:Nn \seq_set_split:Nnn { NnV }
\cs_generate_variant:Nn \seq_gset_split:Nnn { NnV }
+\cs_generate_variant:Nn \seq_set_split_keep_spaces:Nnn { NnV }
+\cs_generate_variant:Nn \seq_gset_split_keep_spaces:Nnn { NnV }
\cs_new_protected:Npn \seq_concat:NNN #1#2#3
{ \tl_set:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_new_protected:Npn \seq_gconcat:NNN #1#2#3
@@ -5610,7 +5668,7 @@
{
\int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
{
- \__kernel_msg_error:nnx { kernel } { shuffle-too-large }
+ \__kernel_msg_error:nnx { seq } { shuffle-too-large }
{ \token_to_str:N #2 }
}
{
@@ -6036,20 +6094,31 @@
\prg_new_eq_conditional:NNn \seq_pop:cN \seq_pop_left:cN { T , F , TF }
\prg_new_eq_conditional:NNn \seq_gpop:NN \seq_gpop_left:NN { T , F , TF }
\prg_new_eq_conditional:NNn \seq_gpop:cN \seq_gpop_left:cN { T , F , TF }
-\cs_new_protected:Npn \seq_show:N { \__seq_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \seq_show:N { \__seq_show:NN \__kernel_msg_show:nnxxxx }
\cs_generate_variant:Nn \seq_show:N { c }
-\cs_new_protected:Npn \seq_log:N { \__seq_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \seq_log:N { \__seq_show:NN \__kernel_msg_log:nnxxxx }
\cs_generate_variant:Nn \seq_log:N { c }
\cs_new_protected:Npn \__seq_show:NN #1#2
{
- \__kernel_chk_defined:NT #2
+ \__kernel_chk_tl_type:NnnT #2 { seq }
{
- #1 { LaTeX/kernel } { show-seq }
+ \s__seq
+ \exp_after:wN \use_i:nn \exp_after:wN \__seq_show_validate:nn #2
+ \q_recursion_tail \q_recursion_tail \q_recursion_stop
+ }
+ {
+ #1 { seq } { show }
{ \token_to_str:N #2 }
{ \seq_map_function:NN #2 \msg_show_item:n }
{ } { }
}
}
+\cs_new:Npn \__seq_show_validate:nn #1#2
+ {
+ \quark_if_recursion_tail_stop:n {#2}
+ \__seq_wrap_item:n {#2}
+ \__seq_show_validate:nn
+ }
\seq_new:N \l_tmpa_seq
\seq_new:N \l_tmpb_seq
\seq_new:N \g_tmpa_seq
@@ -6162,24 +6231,26 @@
}
\cs_generate_variant:Nn \int_new:N { c }
\cs_new_protected:Npn \int_const:Nn #1#2
+ { \exp_args:Ne \__int_const:nN { \int_eval:n {#2} } #1 }
+\cs_new_protected:Npn \__int_const:nN #1#2
{
- \int_compare:nNnTF {#2} < \c_zero_int
+ \int_compare:nNnTF {#1} < \c_zero_int
{
- \int_new:N #1
+ \int_new:N #2
\tex_global:D
}
{
- \int_compare:nNnTF {#2} > \c__int_max_constdef_int
+ \int_compare:nNnTF {#1} > \c__int_max_constdef_int
{
- \int_new:N #1
+ \int_new:N #2
\tex_global:D
}
{
- \__kernel_chk_if_free_cs:N #1
+ \__kernel_chk_if_free_cs:N #2
\tex_global:D \__int_constdef:Nw
}
}
- #1 = \__int_eval:w #2 \__int_eval_end:
+ #2 = \__int_eval:w #1 \__int_eval_end:
}
\cs_generate_variant:Nn \int_const:Nn { c }
\if_int_odd:w 0
@@ -6998,7 +7069,17 @@
\cs_new_protected:Npn \__bool_show:NN #1#2
{
\__kernel_chk_defined:NT #2
- { \exp_args:Nx #1 { \token_to_str:N #2 = \__bool_to_str:n {#2} } }
+ {
+ \token_case_meaning:NnF #2
+ {
+ \c_true_bool { \exp_args:Nx #1 { \token_to_str:N #2 = true } }
+ \c_false_bool { \exp_args:Nx #1 { \token_to_str:N #2 = false } }
+ }
+ {
+ \__kernel_msg_error:nnxxx { kernel } { bad-type }
+ { \token_to_str:N #2 } { \token_to_meaning:N #2 } { bool }
+ }
+ }
}
\bool_new:N \l_tmpa_bool
\bool_new:N \l_tmpb_bool
@@ -7201,7 +7282,7 @@
\cs_new:cpn { __prg_replicate_first_-:n } #1
{
\exp_end:
- \__kernel_msg_expandable_error:nn { kernel } { negative-replication }
+ \__kernel_msg_expandable_error:nn { prg } { negative-replication }
}
\cs_new:cpn { __prg_replicate_first_0:n } #1 { \exp_end: }
\cs_new:cpn { __prg_replicate_first_1:n } #1 { \exp_end: #1 }
@@ -7992,16 +8073,16 @@
{
\clist_if_empty:NF #1
{
- \exp_last_unbraced:NNo \__clist_map_function:Nw #2 #1
+ \exp_last_unbraced:NNo \__clist_map_function:nw #2 #1
, \q__clist_recursion_tail ,
\prg_break_point:Nn \clist_map_break: { }
}
}
-\cs_new:Npn \__clist_map_function:Nw #1#2 ,
+\cs_new:Npn \__clist_map_function:nw #1#2 ,
{
\__clist_if_recursion_tail_break:nN {#2} \clist_map_break:
#1 {#2}
- \__clist_map_function:Nw #1
+ \__clist_map_function:nw {#1}
}
\cs_generate_variant:Nn \clist_map_function:NN { c }
\cs_new:Npn \clist_map_function:nN #1#2
@@ -8013,11 +8094,11 @@
\cs_new:Npn \__clist_map_function_n:Nn #1 #2
{
\__clist_if_recursion_tail_break:nN {#2} \clist_map_break:
- \__clist_map_unbrace:Nw #1 #2,
+ \__clist_map_unbrace:wn #2 , #1
\exp_after:wN \__clist_map_function_n:Nn \exp_after:wN #1
\exp:w \__clist_trim_next:w \prg_do_nothing:
}
-\cs_new:Npn \__clist_map_unbrace:Nw #1 #2, { #1 {#2} }
+\cs_new:Npn \__clist_map_unbrace:wn #1, #2 { #2 {#1} }
\cs_new_protected:Npn \clist_map_inline:Nn #1#2
{
\clist_if_empty:NF #1
@@ -8025,7 +8106,7 @@
\int_gincr:N \g__kernel_prg_map_int
\cs_gset_protected:cpn
{ __clist_map_ \int_use:N \g__kernel_prg_map_int :w } ##1 {#2}
- \exp_last_unbraced:Nco \__clist_map_function:Nw
+ \exp_last_unbraced:Nco \__clist_map_function:nw
{ __clist_map_ \int_use:N \g__kernel_prg_map_int :w }
#1 , \q__clist_recursion_tail ,
\prg_break_point:Nn \clist_map_break:
@@ -8062,6 +8143,33 @@
\__clist_map_variable:Nnw #1 {#2}
}
\cs_generate_variant:Nn \clist_map_variable:NNn { c }
+\cs_new:Npn \clist_map_tokens:Nn #1#2
+ {
+ \clist_if_empty:NF #1
+ {
+ \exp_last_unbraced:Nno \__clist_map_function:nw {#2} #1
+ , \q__clist_recursion_tail ,
+ \prg_break_point:Nn \clist_map_break: { }
+ }
+ }
+\cs_generate_variant:Nn \clist_map_tokens:Nn { c }
+\cs_new:Npn \clist_map_tokens:nn #1#2
+ {
+ \__clist_map_tokens_n:nw {#2}
+ \prg_do_nothing: #1 , \q__clist_recursion_tail ,
+ \prg_break_point:Nn \clist_map_break: { }
+ }
+\cs_new:Npn \__clist_map_tokens_n:nw #1#2 ,
+ {
+ \tl_if_empty:oF { \use_none:nn #2 ? }
+ {
+ \exp_args:No \__clist_if_recursion_tail_break:nN {#2} \clist_map_break:
+ \tl_trim_spaces_apply:oN {#2} \__clist_use_ii_i:nn
+ \__clist_map_unbrace:wn , {#1}
+ }
+ \__clist_map_tokens_n:nw {#1} \prg_do_nothing:
+ }
+\cs_new:Npn \__clist_use_ii_i:nn #1#2 { #2 #1 }
\cs_new:Npn \clist_map_break:
{ \prg_map_break:Nn \clist_map_break: { } }
\cs_new:Npn \clist_map_break:n
@@ -8196,25 +8304,33 @@
{ \clist_item:Nn #1 { \int_rand:nn { 1 } { \clist_count:N #1 } } }
}
\cs_generate_variant:Nn \clist_rand_item:N { c }
-\cs_new_protected:Npn \clist_show:N { \__clist_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_show:N { \__clist_show:NN \__kernel_msg_show:nnxxxx }
\cs_generate_variant:Nn \clist_show:N { c }
-\cs_new_protected:Npn \clist_log:N { \__clist_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_log:N { \__clist_show:NN \__kernel_msg_log:nnxxxx }
\cs_generate_variant:Nn \clist_log:N { c }
\cs_new_protected:Npn \__clist_show:NN #1#2
{
- \__kernel_chk_defined:NT #2
+ \__kernel_chk_tl_type:NnnT #2 { clist } { \exp_not:o #2 }
{
- #1 { LaTeX/kernel } { show-clist }
- { \token_to_str:N #2 }
- { \clist_map_function:NN #2 \msg_show_item:n }
- { } { }
+ \int_compare:nNnTF { \clist_count:N #2 }
+ = { \exp_args:No \clist_count:n #2 }
+ {
+ #1 { clist } { show }
+ { \token_to_str:N #2 }
+ { \clist_map_function:NN #2 \msg_show_item:n }
+ { } { }
+ }
+ {
+ \__kernel_msg_error:nnxx { kernel } { non-clist }
+ { \token_to_str:N #2 } { \tl_to_str:N #2 }
+ }
}
}
-\cs_new_protected:Npn \clist_show:n { \__clist_show:Nn \msg_show:nnxxxx }
-\cs_new_protected:Npn \clist_log:n { \__clist_show:Nn \msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_show:n { \__clist_show:Nn \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_log:n { \__clist_show:Nn \__kernel_msg_log:nnxxxx }
\cs_new_protected:Npn \__clist_show:Nn #1#2
{
- #1 { LaTeX/kernel } { show-clist }
+ #1 { clist } { show }
{ } { \clist_map_function:nN {#2} \msg_show_item:n } { } { }
}
\clist_new:N \l_tmpa_clist
@@ -8356,9 +8472,9 @@
{
\if_int_compare:w #2 = 10 \exp_stop_f:
\if_int_compare:w #1 = 0 \exp_stop_f:
- \__kernel_msg_expandable_error:nn { kernel } { char-null-space }
+ \__kernel_msg_expandable_error:nn { char } { null-space }
\else:
- \__kernel_msg_expandable_error:nn { kernel } { char-space }
+ \__kernel_msg_expandable_error:nn { char } { space }
\fi:
\else:
\if_int_odd:w 0
@@ -8366,14 +8482,14 @@
\if_int_compare:w #2 = 5 \exp_stop_f: 1 \fi:
\if_int_compare:w #2 = 9 \exp_stop_f: 1 \fi:
\if_int_compare:w #2 > 13 \exp_stop_f: 1 \fi: \exp_stop_f:
- \__kernel_msg_expandable_error:nn { kernel }
- { char-invalid-catcode }
+ \__kernel_msg_expandable_error:nn { char }
+ { invalid-catcode }
\else:
\if_int_odd:w 0
\if_int_compare:w #1 < 0 \exp_stop_f: 1 \fi:
\if_int_compare:w #1 > \c_max_char_int 1 \fi: \exp_stop_f:
- \__kernel_msg_expandable_error:nn { kernel }
- { char-out-of-range }
+ \__kernel_msg_expandable_error:nn { char }
+ { out-of-range }
\else:
\__char_generate_aux:nnw {#1} {#2}
\fi:
@@ -8402,7 +8518,7 @@
{
#3
\if_int_compare:w #2 = 13 \exp_stop_f:
- \__kernel_msg_expandable_error:nn { kernel } { char-active }
+ \__kernel_msg_expandable_error:nn { char } { active }
\else:
\__char_generate_auxii:nnw {#1} {#2}
\fi:
@@ -9187,7 +9303,7 @@
%% File: l3prop.dtx
\scan_new:N \s__prop
\cs_new:Npn \__prop_pair:wn #1 \s__prop #2
- { \__kernel_msg_expandable_error:nn { kernel } { misused-prop } }
+ { \__kernel_msg_expandable_error:nn { prop } { misused } }
\tl_new:N \l__prop_internal_tl
\tl_const:Nn \c_empty_prop { \s__prop }
\scan_new:N \s__prop_mark
@@ -9281,7 +9397,7 @@
\str_if_eq:nnTF {#2} { = }
{ \prop_put:Nnn \l__prop_internal_prop {#3} {#1} }
{
- \__kernel_msg_error:nnx { kernel } { prop-keyval }
+ \__kernel_msg_error:nnx { prop } { prop-keyval }
{ \exp_not:o {#4} }
}
}
@@ -9521,20 +9637,31 @@
{ \prg_map_break:Nn \prop_map_break: { } }
\cs_new:Npn \prop_map_break:n
{ \prg_map_break:Nn \prop_map_break: }
-\cs_new_protected:Npn \prop_show:N { \__prop_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \prop_show:N { \__prop_show:NN \__kernel_msg_show:nnxxxx }
\cs_generate_variant:Nn \prop_show:N { c }
-\cs_new_protected:Npn \prop_log:N { \__prop_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \prop_log:N { \__prop_show:NN \__kernel_msg_log:nnxxxx }
\cs_generate_variant:Nn \prop_log:N { c }
\cs_new_protected:Npn \__prop_show:NN #1#2
{
- \__kernel_chk_defined:NT #2
+ \__kernel_chk_tl_type:NnnT #2 { prop }
+ {
+ \s__prop
+ \exp_after:wN \use_i:nn \exp_after:wN \__prop_show_validate:w #2
+ \__prop_pair:wn \q_recursion_tail \s__prop { } \q_recursion_stop
+ }
{
- #1 { LaTeX/kernel } { show-prop }
+ #1 { prop } { show }
{ \token_to_str:N #2 }
{ \prop_map_function:NN #2 \msg_show_item:nn }
{ } { }
}
}
+\cs_new:Npn \__prop_show_validate:w #1 \__prop_pair:wn #2 \s__prop #3
+ {
+ \quark_if_recursion_tail_stop:n {#2}
+ \exp_not:N \__prop_pair:wn \tl_to_str:n {#2} \s__prop \exp_not:n { {#3} }
+ \__prop_show_validate:w
+ }
%% File: l3msg.dtx
\tl_new:N \l__msg_internal_tl
\str_new:N \l__msg_name_str
@@ -9553,7 +9680,7 @@
{
\msg_if_exist:nnT {#1} {#2}
{
- \__kernel_msg_error:nnxx { kernel } { message-already-defined }
+ \__kernel_msg_error:nnxx { msg } { already-defined }
{#1} {#2}
}
}
@@ -9921,7 +10048,7 @@
\cs_new:Npn \__msg_class_chk_exist:nT #1
{
\cs_if_free:cTF { __msg_ #1 _code:nnnnnn }
- { \__kernel_msg_error:nnx { kernel } { message-class-unknown } {#1} }
+ { \__kernel_msg_error:nnx { msg } { class-unknown } {#1} }
}
\tl_new:N \l__msg_class_tl
\tl_new:N \l__msg_current_class_tl
@@ -9947,7 +10074,7 @@
\__msg_use_redirect_name:n { #2 / #3 }
}
}
- { \__kernel_msg_error:nnxx { kernel } { message-unknown } {#2} {#3} }
+ { \__kernel_msg_error:nnxx { msg } { unknown } {#2} {#3} }
\cs_if_exist_use:N \conditionally@traceon
}
\cs_new_protected:Npn \__msg_use_code: { }
@@ -10036,7 +10163,7 @@
{
\prop_put:cnn { l__msg_redirect_ #2 _prop } {#3} {#2}
\__kernel_msg_warning:nnxxxx
- { kernel } { message-redirect-loop }
+ { msg } { redirect-loop }
{ \seq_item:Nn \l__msg_class_loop_seq { 1 } }
{ \seq_item:Nn \l__msg_class_loop_seq { 2 } }
{#3}
@@ -10106,8 +10233,14 @@
\__msg_kernel_class_new:nN { error } \__msg_error_code:nnnnnn
\__msg_kernel_class_new:nN { warning } \msg_warning:nnxxxx
\__msg_kernel_class_new:nN { info } \msg_info:nnxxxx
+\cs_new_protected:Npn \__kernel_msg_log:nnnnnn #1
+ { \msg_log:nnnnnn { LaTeX / #1 } }
+\cs_generate_variant:Nn \__kernel_msg_log:nnnnnn { nnxxxx }
+\cs_new_protected:Npn \__kernel_msg_show:nnnnnn #1
+ { \msg_show:nnnnnn { LaTeX / #1 } }
+\cs_generate_variant:Nn \__kernel_msg_show:nnnnnn { nnxxxx }
\group_end:
-\__kernel_msg_new:nnnn { kernel } { message-already-defined }
+\__kernel_msg_new:nnnn { msg } { already-defined }
{ Message~'#2'~for~module~'#1'~already~defined. }
{
\c__msg_coding_error_text_tl
@@ -10115,7 +10248,7 @@
by~the~module~'#1':~this~message~already~exists.
\c__msg_return_text_tl
}
-\__kernel_msg_new:nnnn { kernel } { message-unknown }
+\__kernel_msg_new:nnnn { msg } { unknown }
{ Unknown~message~'#2'~for~module~'#1'. }
{
\c__msg_coding_error_text_tl
@@ -10123,14 +10256,14 @@
by~the~module~'#1':~this~message~does~not~exist.
\c__msg_return_text_tl
}
-\__kernel_msg_new:nnnn { kernel } { message-class-unknown }
+\__kernel_msg_new:nnnn { msg } { class-unknown }
{ Unknown~message~class~'#1'. }
{
LaTeX~has~been~asked~to~redirect~messages~to~a~class~'#1':\\
this~was~never~defined.
\c__msg_return_text_tl
}
-\__kernel_msg_new:nnnn { kernel } { message-redirect-loop }
+\__kernel_msg_new:nnnn { msg } { redirect-loop }
{
Message~redirection~loop~caused~by~ {#1} ~=>~ {#2}
\tl_if_empty:nF {#3} { ~for~module~' \use_none:n #3 ' } .
@@ -10149,16 +10282,6 @@
#2~arguments.~
TeX~allows~between~0~and~9~arguments~for~a~single~function.
}
-\__kernel_msg_new:nnn { kernel } { char-active }
- { Cannot~generate~active~chars. }
-\__kernel_msg_new:nnn { kernel } { char-invalid-catcode }
- { Invalid~catcode~for~char~generation. }
-\__kernel_msg_new:nnn { kernel } { char-null-space }
- { Cannot~generate~null~char~as~a~space. }
-\__kernel_msg_new:nnn { kernel } { char-out-of-range }
- { Charcode~requested~out~of~engine~range. }
-\__kernel_msg_new:nnn { kernel } { char-space }
- { Cannot~generate~space~chars. }
\__kernel_msg_new:nnnn { kernel } { command-already-defined }
{ Control~sequence~#1~already~defined. }
{
@@ -10236,7 +10359,55 @@
LaTeX~has~been~asked~to~define~the~conditional~form~'#1'~of~
the~function~'#2',~but~only~'TF',~'T',~'F',~and~'p'~forms~exist.
}
-\__kernel_msg_new:nnnn { kernel } { key-no-property }
+\__kernel_msg_new:nnnn { kernel } { variant-too-long }
+ { Variant~form~'#1'~longer~than~base~signature~of~'#2'. }
+ {
+ \c__msg_coding_error_text_tl
+ LaTeX~has~been~asked~to~create~a~variant~of~the~function~'#2'~
+ with~a~signature~starting~with~'#1',~but~that~is~longer~than~
+ the~signature~(part~after~the~colon)~of~'#2'.
+ }
+\__kernel_msg_new:nnnn { kernel } { invalid-variant }
+ { Variant~form~'#1'~invalid~for~base~form~'#2'. }
+ {
+ \c__msg_coding_error_text_tl
+ LaTeX~has~been~asked~to~create~a~variant~of~the~function~'#2'~
+ with~a~signature~starting~with~'#1',~but~cannot~change~an~argument~
+ from~type~'#3'~to~type~'#4'.
+ }
+\__kernel_msg_new:nnnn { kernel } { invalid-exp-args }
+ { Invalid~variant~specifier~'#1'~in~'#2'. }
+ {
+ \c__msg_coding_error_text_tl
+ LaTeX~has~been~asked~to~create~an~\iow_char:N\\exp_args:N...~
+ function~with~signature~'N#2'~but~'#1'~is~not~a~valid~argument~
+ specifier.
+ }
+\__kernel_msg_new:nnn { kernel } { deprecated-variant }
+ {
+ Variant~form~'#1'~deprecated~for~base~form~'#2'.~
+ One~should~not~change~an~argument~from~type~'#3'~to~type~'#4'
+ \str_case:nnF {#3}
+ {
+ { n } { :~use~a~'\token_if_eq_charcode:NNTF #4 c v V'~variant? }
+ { N } { :~base~form~only~accepts~a~single~token~argument. }
+ {#4} { :~base~form~is~already~a~variant. }
+ } { . }
+ }
+\__kernel_msg_new:nnn { char } { active }
+ { Cannot~generate~active~chars. }
+\__kernel_msg_new:nnn { char } { invalid-catcode }
+ { Invalid~catcode~for~char~generation. }
+\__kernel_msg_new:nnn { char } { null-space }
+ { Cannot~generate~null~char~as~a~space. }
+\__kernel_msg_new:nnn { char } { out-of-range }
+ { Charcode~requested~out~of~engine~range. }
+\__kernel_msg_new:nnn { char } { space }
+ { Cannot~generate~space~chars. }
+\__kernel_msg_new:nnnn { ior } { quote-in-shell }
+ { Quotes~in~shell~command~'#1'. }
+ { Shell~commands~cannot~contain~quotes~("). }
+\__kernel_msg_new:nnnn { keys } { no-property }
{ No~property~given~in~definition~of~key~'#1'. }
{
\c__msg_coding_error_text_tl
@@ -10245,30 +10416,27 @@
\iow_indent:n { #1 .<property> } \\ \\
LaTeX~did~not~find~a~'.'~to~indicate~the~start~of~a~property.
}
-\__kernel_msg_new:nnnn { kernel } { key-property-boolean-values-only }
+\__kernel_msg_new:nnnn { keys } { property-boolean-values-only }
{ The~property~'#1'~accepts~boolean~values~only. }
{
\c__msg_coding_error_text_tl
The~property~'#1'~only~accepts~the~values~'true'~and~'false'.
}
-\__kernel_msg_new:nnnn { kernel } { key-property-requires-value }
+\__kernel_msg_new:nnnn { keys } { property-requires-value }
{ The~property~'#1'~requires~a~value. }
{
\c__msg_coding_error_text_tl
LaTeX~was~asked~to~set~property~'#1'~for~key~'#2'.\\
No~value~was~given~for~the~property,~and~one~is~required.
}
-\__kernel_msg_new:nnnn { kernel } { key-property-unknown }
+\__kernel_msg_new:nnnn { keys } { property-unknown }
{ The~key~property~'#1'~is~unknown. }
{
\c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~set~the~property~'#1'~for~key~'#2':~
this~property~is~not~defined.
}
-\__kernel_msg_new:nnnn { kernel } { quote-in-shell }
- { Quotes~in~shell~command~'#1'. }
- { Shell~commands~cannot~contain~quotes~("). }
-\__kernel_msg_new:nnnn { kernel } { invalid-quark-function }
+\__kernel_msg_new:nnnn { quark } { invalid-function }
{ Quark~test~function~'#1'~is~invalid. }
{
\c__msg_coding_error_text_tl
@@ -10278,16 +10446,16 @@
{ with~signature~'#2',~but~that~signature~ }
is~not~valid.
}
-\__kernel_msg_new:nnn { kernel } { invalid-quark }
+\__kernel_msg_new:nnn { quark } { invalid }
{ Invalid~quark~variable~'#1'. }
-\__kernel_msg_new:nnnn { kernel } { scanmark-already-defined }
+\__kernel_msg_new:nnnn { scanmark } { already-defined }
{ Scan~mark~#1~already~defined. }
{
\c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~create~a~new~scan~mark~'#1'~
but~this~name~has~already~been~used~for~a~scan~mark.
}
-\__kernel_msg_new:nnnn { kernel } { shuffle-too-large }
+\__kernel_msg_new:nnnn { seq } { shuffle-too-large }
{ The~sequence~#1~is~too~long~to~be~shuffled~by~TeX. }
{
TeX~has~ \int_eval:n { \c_max_register_int + 1 } ~
@@ -10302,42 +10470,32 @@
LaTeX~has~been~asked~to~show~a~variable~#1,~but~this~has~not~
been~defined~yet.
}
-\__kernel_msg_new:nnnn { kernel } { variant-too-long }
- { Variant~form~'#1'~longer~than~base~signature~of~'#2'. }
- {
- \c__msg_coding_error_text_tl
- LaTeX~has~been~asked~to~create~a~variant~of~the~function~'#2'~
- with~a~signature~starting~with~'#1',~but~that~is~longer~than~
- the~signature~(part~after~the~colon)~of~'#2'.
- }
-\__kernel_msg_new:nnnn { kernel } { invalid-variant }
- { Variant~form~'#1'~invalid~for~base~form~'#2'. }
+\__kernel_msg_new:nnnn { kernel } { bad-type }
+ { Variable~'#1'~is~not~a~valid~#3. }
{
\c__msg_coding_error_text_tl
- LaTeX~has~been~asked~to~create~a~variant~of~the~function~'#2'~
- with~a~signature~starting~with~'#1',~but~cannot~change~an~argument~
- from~type~'#3'~to~type~'#4'.
+ The~variable~'#1'~with~\tl_if_empty:nTF {#4} {meaning} {value}\\\\
+ \iow_indent:n {#2}\\\\
+ should~be~a~#3~variable,~but~
+ \tl_if_empty:nTF {#4}
+ { it~is~not \str_if_eq:nnF {#3} { bool } { ~a~short~macro } . }
+ {
+ it~does~not~have~the~correct~
+ \str_if_eq:nnTF {#2} {#4}
+ { category~codes. }
+ { internal~structure:\\\\\iow_indent:n {#4} }
+ }
}
-\__kernel_msg_new:nnnn { kernel } { invalid-exp-args }
- { Invalid~variant~specifier~'#1'~in~'#2'. }
+\__kernel_msg_new:nnnn { kernel } { non-clist }
+ { Variable~'#1'~is~not~a~valid~clist. }
{
\c__msg_coding_error_text_tl
- LaTeX~has~been~asked~to~create~an~\iow_char:N\\exp_args:N...~
- function~with~signature~'N#2'~but~'#1'~is~not~a~valid~argument~
- specifier.
- }
-\__kernel_msg_new:nnn { kernel } { deprecated-variant }
- {
- Variant~form~'#1'~deprecated~for~base~form~'#2'.~
- One~should~not~change~an~argument~from~type~'#3'~to~type~'#4'
- \str_case:nnF {#3}
- {
- { n } { :~use~a~'\token_if_eq_charcode:NNTF #4 c v V'~variant? }
- { N } { :~base~form~only~accepts~a~single~token~argument. }
- {#4} { :~base~form~is~already~a~variant. }
- } { . }
+ The~variable~'#1'~with~value\\\\
+ \iow_indent:n {#2}\\\\
+ should~be~a~clist~variable,~but~it~includes~empty~or~blank~items~
+ without~braces.
}
-\__kernel_msg_new:nnnn { kernel } { enable-debug }
+\__kernel_msg_new:nnnn { debug } { enable-debug }
{ To~use~'#1'~set~the~'enable-debug'~option. }
{
The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
@@ -10350,13 +10508,13 @@
{ Misused~\exp_end_continue_f:w or~:nw }
\__kernel_msg_new:nnn { kernel } { bad-variable }
{ Erroneous~variable~#1 used! }
-\__kernel_msg_new:nnn { kernel } { misused-sequence }
+\__kernel_msg_new:nnn { seq } { misused }
{ A~sequence~was~misused. }
-\__kernel_msg_new:nnn { kernel } { misused-prop }
+\__kernel_msg_new:nnn { prop } { misused }
{ A~property~list~was~misused. }
-\__kernel_msg_new:nnn { kernel } { negative-replication }
+\__kernel_msg_new:nnn { prg } { negative-replication }
{ Negative~argument~for~\iow_char:N\\prg_replicate:nn. }
-\__kernel_msg_new:nnn { kernel } { prop-keyval }
+\__kernel_msg_new:nnn { prop } { prop-keyval }
{ Missing/extra~'='~in~'#1'~(in~'..._keyval:Nn') }
\__kernel_msg_new:nnn { kernel } { unknown-comparison }
{ Relation~'#1'~unknown:~use~=,~<,~>,~==,~!=,~<=,~>=. }
@@ -10367,23 +10525,23 @@
\__kernel_msg_new:nnn { kernel } { e-type }
{ #1 ~ in~e-type~argument }
}
-\__kernel_msg_new:nnn { kernel } { show-clist }
+\__kernel_msg_new:nnn { clist } { show }
{
The~comma~list~ \tl_if_empty:nF {#1} { #1 ~ }
\tl_if_empty:nTF {#2}
{ is~empty \\>~ . }
{ contains~the~items~(without~outer~braces): #2 . }
}
-\__kernel_msg_new:nnn { kernel } { show-intarray }
+\__kernel_msg_new:nnn { intarray } { show }
{ The~integer~array~#1~contains~#2~items: \\ #3 . }
-\__kernel_msg_new:nnn { kernel } { show-prop }
+\__kernel_msg_new:nnn { prop } { show }
{
The~property~list~#1~
\tl_if_empty:nTF {#2}
{ is~empty \\>~ . }
{ contains~the~pairs~(without~outer~braces): #2 . }
}
-\__kernel_msg_new:nnn { kernel } { show-seq }
+\__kernel_msg_new:nnn { seq } { show }
{
The~sequence~#1~
\tl_if_empty:nTF {#2}
@@ -10579,11 +10737,11 @@
}
}
\cs_generate_variant:Nn \ior_close:N { c }
-\cs_new_protected:Npn \ior_show_list: { \__ior_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \ior_log_list: { \__ior_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \ior_show_list: { \__ior_list:N \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \ior_log_list: { \__ior_list:N \__kernel_msg_log:nnxxxx }
\cs_new_protected:Npn \__ior_list:N #1
{
- #1 { LaTeX / kernel } { show-streams }
+ #1 { kernel } { show-streams }
{ ior }
{
\prop_map_function:NN \g__ior_streams_prop
@@ -10594,19 +10752,19 @@
\cs_new_eq:NN \if_eof:w \tex_ifeof:D
\prg_new_conditional:Npnn \ior_if_eof:N #1 { p , T , F , TF }
{
- \cs_if_exist:NTF #1
- {
- \int_compare:nTF { -1 < #1 < \c__ior_term_ior }
- {
- \if_eof:w #1
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
- { \prg_return_true: }
- }
- { \prg_return_true: }
+ \if_int_compare:w -1 < #1
+ \if_int_compare:w #1 < \c__ior_term_ior
+ \if_eof:w #1
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ \else:
+ \prg_return_true:
+ \fi:
+ \else:
+ \prg_return_true:
+ \fi:
}
\cs_new_protected:Npn \ior_get:NN #1#2
{ \ior_get:NNF #1 #2 { \tl_set:Nn #2 { \q_no_value } } }
@@ -10775,11 +10933,11 @@
}
}
\cs_generate_variant:Nn \iow_close:N { c }
-\cs_new_protected:Npn \iow_show_list: { \__iow_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \iow_log_list: { \__iow_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \iow_show_list: { \__iow_list:N \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \iow_log_list: { \__iow_list:N \__kernel_msg_log:nnxxxx }
\cs_new_protected:Npn \__iow_list:N #1
{
- #1 { LaTeX / kernel } { show-streams }
+ #1 { kernel } { show-streams }
{ iow }
{
\prop_map_function:NN \g__iow_streams_prop
@@ -11188,98 +11346,81 @@
\__kernel_quark_new_test:N \__file_if_recursion_tail_stop_do:nn
\cs_new:Npn \__kernel_file_name_sanitize:n #1
{
- \exp_args:Ne \__kernel_file_name_trim_spaces:n
+ \exp_args:Ne \__file_name_trim_spaces:n
{
- \exp_args:Ne \__kernel_file_name_strip_quotes:n
- {
- \__kernel_file_name_expand_loop:w #1
- \q__file_recursion_tail \q__file_recursion_stop
- }
+ \exp_args:Ne \__file_name_strip_quotes:n
+ { \__file_name_expand:n {#1} }
}
}
-\cs_new:Npn \__kernel_file_name_expand_loop:w #1 \q__file_recursion_stop
+\cs_new:Npn \__file_name_expand:n #1
{
- \tl_if_head_is_N_type:nTF {#1}
- { \__kernel_file_name_expand_N_type:Nw }
- {
- \tl_if_head_is_group:nTF {#1}
- { \__kernel_file_name_expand_group:nw }
- { \__kernel_file_name_expand_space:w }
- }
- #1 \q__file_recursion_stop
+ \exp_after:wN \__file_name_expand_cleanup:Nw
+ \cs:w __file_name = #1 \cs_end:
+ \__file_name_expand_end:
}
-\cs_new:Npn \__kernel_file_name_expand_N_type:Nw #1
+\cs_new:Npn \__file_name_expand_cleanup:Nw #1 #2 \__file_name_expand_end:
{
- \__file_if_recursion_tail_stop:N #1
- \bool_lazy_and:nnTF
- { \token_if_expandable_p:N #1 }
- {
- \bool_not_p:n
- {
- \bool_lazy_any_p:n
- {
- { \token_if_protected_macro_p:N #1 }
- { \token_if_protected_long_macro_p:N #1 }
- { \token_if_active_p:N #1 }
- }
- }
- }
- { \exp_after:wN \__kernel_file_name_expand_loop:w #1 }
- {
- \token_to_str:N #1
- \__kernel_file_name_expand_loop:w
- }
+ \tl_if_empty:nF {#2}
+ { \__file_name_expand_error:Nw #2 \__file_name_expand_end: }
+ \exp_after:wN \__file_name_expand_cleanup:w \token_to_str:N #1
}
-\cs_new:Npx \__kernel_file_name_expand_group:nw #1
+\exp_last_unbraced:NNNNo
+\cs_new:Npn \__file_name_expand_cleanup:w #1 \tl_to_str:n { __file_name = } { }
+\cs_new:Npn \__file_name_expand_end:
{
- \c_left_brace_str
- \exp_not:N \__kernel_file_name_expand_loop:w
- #1
- \c_right_brace_str
+ \__kernel_msg_expandable_error:nn
+ { kernel } { filename-missing-endcsname }
+ \cs_end: \__file_name_expand_end:
}
-\exp_last_unbraced:NNo
- \cs_new:Npx \__kernel_file_name_expand_space:w \c_space_tl
- {
- \c_space_tl
- \exp_not:N \__kernel_file_name_expand_loop:w
- }
-\cs_new:Npn \__kernel_file_name_strip_quotes:n #1
+\cs_new:Npn \__file_name_expand_error:Nw #1 #2 \__file_name_expand_end:
+ { \__file_name_expand_error_aux:Nw #1 #2 \cs_end: \__file_name_expand_end: }
+\cs_new:Npn \__file_name_expand_error_aux:Nw #1 #2 \cs_end: #3
+ \__file_name_expand_end:
+ {
+ \__kernel_msg_expandable_error:nnff
+ { kernel } { filename-chars-lost }
+ { \token_to_str:N #1 } { \exp_stop_f: #2 }
+ }
+\cs_new:Npn \__file_name_strip_quotes:n #1
{
- \__kernel_file_name_strip_quotes:nnnw {#1} { 0 } { }
- #1 " \q__file_recursion_tail " \q__file_recursion_stop
+ \__file_name_strip_quotes:nw { 0 }
+ #1 " \q__file_recursion_tail " \q__file_recursion_stop {#1}
}
-\cs_new:Npn \__kernel_file_name_strip_quotes:nnnw #1#2#3#4 "
+\cs_new:Npn \__file_name_strip_quotes:nw #1#2 "
{
- \__file_if_recursion_tail_stop_do:nn {#4}
- { \__kernel_file_name_strip_quotes:nnn {#1} {#2} {#3} }
- \__kernel_file_name_strip_quotes:nnnw {#1} { #2 + 1 } { #3#4 }
+ \if_meaning:w \q__file_recursion_tail #2
+ \__file_name_strip_quotes_end:wnwn
+ \fi:
+ #2
+ \__file_name_strip_quotes:nw { #1 + 1 }
}
-\cs_new:Npn \__kernel_file_name_strip_quotes:nnn #1#2#3
+\cs_new:Npn \__file_name_strip_quotes_end:wnwn \fi: #1
+ \__file_name_strip_quotes:nw #2 \q__file_recursion_stop #3
{
- \int_if_even:nT {#2}
+ \fi:
+ \int_if_odd:nT {#2}
{
\__kernel_msg_expandable_error:nnn
- { kernel } { unbalanced-quote-in-filename } {#1}
+ { kernel } { unbalanced-quote-in-filename } {#3}
}
- #3
}
-\cs_new:Npn \__kernel_file_name_trim_spaces:n #1
- { \__kernel_file_name_trim_spaces:nw {#1} #1 . \q__file_nil . \s__file_stop }
-\cs_new:Npn \__kernel_file_name_trim_spaces:nw #1#2 . #3 . #4 \s__file_stop
+\cs_new:Npn \__file_name_trim_spaces:n #1
+ { \__file_name_trim_spaces:nw {#1} #1 . \q__file_nil . \s__file_stop }
+\cs_new:Npn \__file_name_trim_spaces:nw #1#2 . #3 . #4 \s__file_stop
{
\__file_quark_if_nil:nTF {#3}
{
- \exp_args:Ne \__kernel_file_name_trim_spaces_aux:n
- { \tl_trim_spaces:n { #1 \s__file_stop } }
+ \tl_trim_spaces_apply:nN { #1 \s__file_stop }
+ \__file_name_trim_spaces_aux:n
}
{ \tl_trim_spaces:n {#1} }
}
-\cs_new:Npn \__kernel_file_name_trim_spaces_aux:n #1
- { \__kernel_file_name_trim_spaces_aux:w #1 }
-\cs_new:Npn \__kernel_file_name_trim_spaces_aux:w #1 \s__file_stop {#1}
+\cs_new:Npn \__file_name_trim_spaces_aux:n #1
+ { \__file_name_trim_spaces_aux:w #1 }
+\cs_new:Npn \__file_name_trim_spaces_aux:w #1 \s__file_stop {#1}
\cs_new:Npn \__kernel_file_name_quote:n #1
- { \__kernel_file_name_quote:nw {#1} #1 ~ \q__file_nil \s__file_stop }
-\cs_new:Npn \__kernel_file_name_quote:nw #1 #2 ~ #3 \s__file_stop
+ { \__file_name_quote:nw {#1} #1 ~ \q__file_nil \s__file_stop }
+\cs_new:Npn \__file_name_quote:nw #1 #2 ~ #3 \s__file_stop
{
\__file_quark_if_nil:nTF {#3}
{ #1 }
@@ -11335,65 +11476,71 @@
\cs_new:Npn \__file_full_name:n #1
{
\tl_if_blank:nF {#1}
+ { \exp_args:Nne \__file_full_name_aux:nn {#1} { \__file_size:n {#1} } }
+ }
+\cs_new:Npn \__file_full_name_aux:nn #1 #2
+ {
+ \tl_if_blank:nTF {#2}
{
- \tl_if_blank:eTF { \__file_size:n {#1} }
+ \seq_map_tokens:Nn \l_file_search_path_seq
+ { \__file_full_name_aux:Nnn \seq_map_break:n {#1} }
+ \cs_if_exist:NT \input@path
{
- \seq_map_tokens:Nn \l_file_search_path_seq
- { \__file_full_name_aux:Nnn \seq_map_break:n {#1} }
- \cs_if_exist:NT \input@path
- {
- \tl_map_tokens:Nn \input@path
- { \__file_full_name_aux:Nnn \tl_map_break:n {#1} }
- }
- \__file_name_end:
+ \tl_map_tokens:Nn \input@path
+ { \__file_full_name_aux:Nnn \tl_map_break:n {#1} }
}
- { \__file_ext_check:n {#1} }
+ \__file_name_end:
}
+ { \__file_ext_check:nn {#1} {#2} }
}
\cs_new:Npn \__file_full_name_aux:Nnn #1#2#3
{ \exp_args:Ne \__file_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 }
-\cs_new:Npn \__file_full_name_aux:nN #1 #2
+\cs_new:Npn \__file_full_name_aux:nN #1
+ { \exp_args:Nne \__file_full_name_aux:nnN {#1} { \__file_size:n {#1} } }
+\cs_new:Npn \__file_full_name_aux:nnN #1 #2 #3
{
- \tl_if_blank:eF { \__file_size:n {#1} }
+ \tl_if_blank:nF {#2}
{
- #2
+ #3
{
- \__file_ext_check:n {#1}
+ \__file_ext_check:nn {#1} {#2}
\__file_name_cleanup:w
}
}
}
\cs_new:Npn \__file_name_cleanup:w #1 \__file_name_end: { }
\cs_new:Npn \__file_name_end: { }
-\cs_new:Npn \__file_ext_check:n #1
- { \__file_ext_check:nw { / } #1 / \q__file_nil / \s__file_stop }
-\cs_new:Npn \__file_ext_check:nw #1 #2 / #3 / #4 \s__file_stop
+\cs_new:Npn \__file_ext_check:nn #1 #2
+{ \__file_ext_check:nnw {#2} { / } #1 / \q__file_nil / \s__file_stop }
+\cs_new:Npn \__file_ext_check:nnw #1 #2 #3 / #4 / #5 \s__file_stop
{
- \__file_quark_if_nil:nTF {#3}
+ \__file_quark_if_nil:nTF {#4}
{
- \exp_args:No \__file_ext_check:nnw
- { \use_none:n #1 } {#2} #2 . \q__file_nil . \s__file_stop
+ \exp_args:No \__file_ext_check:nnnw
+ { \use_none:n #2 } {#1} {#3} #3 . \q__file_nil . \s__file_stop
}
- { \__file_ext_check:nw { #1 #2 / } #3 / #4 \s__file_stop }
+ { \__file_ext_check:nnw {#1} { #2 #3 / } #4 / #5 \s__file_stop }
}
-\cs_new:Npx \__file_ext_check:nnw #1#2#3 . #4 . #5 \s__file_stop
+\cs_new:Npx \__file_ext_check:nnnw #1#2#3#4 . #5 . #6 \s__file_stop
{
- \exp_not:N \__file_quark_if_nil:nTF {#4}
+ \exp_not:N \__file_quark_if_nil:nTF {#5}
{
- \exp_not:N \__file_ext_check:nn
- { #1 #2 } { #1 #2 \tl_to_str:n { .tex } }
+ \exp_not:N \__file_ext_check:nnn
+ { #1 #3 \tl_to_str:n { .tex } } { #1 #3 } {#2}
}
- { #1 #2 }
+ { #1 #3 }
}
-\cs_new:Npn \__file_ext_check:nn #1#2
+\cs_new:Npn \__file_ext_check:nnn #1
+ { \exp_args:Nne \__file_ext_check:nnnn {#1} { \__file_size:n {#1} } }
+\cs_new:Npn \__file_ext_check:nnnn #1#2#3#4
{
- \tl_if_blank:eTF { \__file_size:n {#2} }
- {#1}
+ \tl_if_blank:nTF {#2}
+ {#3}
{
\int_compare:nNnTF
- { \__file_size:n {#1} } = { \__file_size:n {#2} }
- {#2}
+ {#4} = {#2}
{#1}
+ {#3}
}
}
\cs_if_exist:NF \tex_filesize:D
@@ -11793,8 +11940,8 @@
\str_set:Nn #6 {#3}
}
\cs_generate_variant:Nn \file_parse_full_name:nNNN { V }
-\cs_new_protected:Npn \file_show_list: { \__file_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \file_log_list: { \__file_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \file_show_list: { \__file_list:N \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \file_log_list: { \__file_list:N \__kernel_msg_log:nnxxxx }
\cs_new_protected:Npn \__file_list:N #1
{
\seq_clear:N \l__file_tmp_seq
@@ -11805,7 +11952,7 @@
}
\seq_concat:NNN \l__file_tmp_seq \l__file_tmp_seq \g__file_record_seq
\seq_remove_duplicates:N \l__file_tmp_seq
- #1 { LaTeX/kernel } { file-list }
+ #1 { kernel } { file-list }
{ \seq_map_function:NN \l__file_tmp_seq \__file_list_aux:n }
{ } { } { }
}
@@ -11943,6 +12090,19 @@
#1 \\
.............
}
+\__kernel_msg_new:nnnn { kernel } { filename-chars-lost }
+ { #1~invalid~in~file~name.~Lost:~#2. }
+ {
+ There~was~an~invalid~token~in~the~file~name~that~caused~
+ the~characters~following~it~to~be~lost.
+ }
+\__kernel_msg_new:nnnn { kernel } { filename-missing-endcsname }
+ { Missing~\iow_char:N\\endcsname~inserted~in~filename. }
+ {
+ The~file~name~had~more~\iow_char:N\\csname~commands~than~
+ \iow_char:N\\endcsname~ones.~LaTeX~will~add~the~missing~
+ \iow_char:N\\endcsname~and~try~to~continue~as~best~as~it~can.
+ }
\__kernel_msg_new:nnnn { kernel } { unbalanced-quote-in-filename }
{ Unbalanced~quotes~in~file~name~'#1'. }
{
@@ -12582,7 +12742,7 @@
#2 \s__keyval_mark \__keyval_clean_up_active:w
{
\__kernel_msg_expandable_error:nn
- { kernel } { misplaced-equals-sign }
+ { keyval } { misplaced-equals-sign }
\__keyval_loop_other:nnw
}
\cs_new:Npn \__keyval_misplaced_equal_in_split_error:w
@@ -12590,7 +12750,7 @@
##3 \s__keyval_mark ##4 ##5
{
\__kernel_msg_expandable_error:nn
- { kernel } { misplaced-equals-sign }
+ { keyval } { misplaced-equals-sign }
\__keyval_loop_other:nnw
}
\cs_new:Npn \__keyval_end_loop_other:w
@@ -12632,11 +12792,11 @@
\cs_new:Npn \__keyval_blank_key_error:w \s__keyval_mark \s__keyval_stop \exp_not:n #1
{
\__kernel_msg_expandable_error:nn
- { kernel } { blank-key-name }
+ { keyval } { blank-key-name }
}
-\__kernel_msg_new:nnn { kernel } { misplaced-equals-sign }
+\__kernel_msg_new:nnn { keyval } { misplaced-equals-sign }
{ Misplaced~equals~sign~in~key-value~input~\msg_line_context: }
-\__kernel_msg_new:nnn { kernel } { blank-key-name }
+\__kernel_msg_new:nnn { keyval } { blank-key-name }
{ Blank~key~name~in~key-value~input~\msg_line_context: }
\group_begin:
\cs_set_protected:Npn \__keyval_tmp:n #1
@@ -12740,7 +12900,7 @@
{
\str_if_empty:NF \l__keys_property_str
{
- \__kernel_msg_error:nnxx { kernel } { key-property-unknown }
+ \__kernel_msg_error:nnxx { keys } { property-unknown }
\l__keys_property_str \l_keys_path_str
}
}
@@ -12783,7 +12943,7 @@
#1 \s__keys_nil #2 \__keys_property_find_err:w
{
\str_clear:N \l__keys_property_str
- \__kernel_msg_error:nnn { kernel } { key-no-property } {#1}
+ \__kernel_msg_error:nnn { keys } { no-property } {#1}
}
\cs_new_protected:Npn \__keys_define_code:n #1
{
@@ -12793,7 +12953,7 @@
\l__keys_property_str \s__keys_stop
{ \use:c { \c__keys_props_root_str \l__keys_property_str } }
{
- \__kernel_msg_error:nnxx { kernel } { key-property-requires-value }
+ \__kernel_msg_error:nnxx { keys } { property-requires-value }
\l__keys_property_str \l_keys_path_str
}
}
@@ -12812,7 +12972,7 @@
{ \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
\__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
- \__kernel_msg_error:nnx { kernel } { boolean-values-only }
+ \__kernel_msg_error:nnx { keys } { boolean-values-only }
\l_keys_key_str
}
\__keys_default_set:n { true }
@@ -12828,7 +12988,7 @@
{ \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
\__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
- \__kernel_msg_error:nnx { kernel } { boolean-values-only }
+ \__kernel_msg_error:nnx { keys } { boolean-values-only }
\l_keys_key_str
}
\__keys_default_set:n { true }
@@ -12847,7 +13007,7 @@
{ \c__keys_type_root_str \__keys_parent:o \l_keys_path_str }
{ choice }
{
- \__kernel_msg_error:nnxx { kernel } { nested-choice-key }
+ \__kernel_msg_error:nnxx { keys } { nested-choice-key }
\l_keys_path_tl { \__keys_parent:o \l_keys_path_str }
}
{ \__keys_choice_make_aux:N #1 }
@@ -12861,7 +13021,7 @@
\__keys_cmd_set:nn \l_keys_path_str { #1 {##1} }
\__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
- \__kernel_msg_error:nnxx { kernel } { key-choice-unknown }
+ \__kernel_msg_error:nnxx { keys } { choice-unknown }
\l_keys_path_str {##1}
}
}
@@ -12996,8 +13156,8 @@
}
}
{
- \__kernel_msg_error:nnx { kernel }
- { key-property-boolean-values-only }
+ \__kernel_msg_error:nnx { keys }
+ { property-boolean-values-only }
{ .value_ #1 :n }
}
}
@@ -13005,7 +13165,7 @@
{
\bool_if:NF \l__keys_no_value_bool
{
- \__kernel_msg_error:nnxx { kernel } { value-forbidden }
+ \__kernel_msg_error:nnxx { keys } { value-forbidden }
\l_keys_path_str \l_keys_value_tl
\use_none:nnn
}
@@ -13014,7 +13174,7 @@
{
\bool_if:NT \l__keys_no_value_bool
{
- \__kernel_msg_error:nnx { kernel } { value-required }
+ \__kernel_msg_error:nnx { keys } { value-required }
\l_keys_path_str
\use_none:nnn
}
@@ -13502,7 +13662,7 @@
{ \c__keys_code_root_str \l__keys_module_str / unknown }
{ \__keys_execute:no { \l__keys_module_str / unknown } \l_keys_value_tl }
{
- \__kernel_msg_error:nnxx { kernel } { key-unknown }
+ \__kernel_msg_error:nnxx { keys } { unknown }
\l_keys_path_str \l__keys_module_str
}
}
@@ -13555,7 +13715,7 @@
{
\tl_if_blank:nF {##1}
{
- \__kernel_msg_error:nnxx { kernel } { bad-relative-key-path }
+ \__kernel_msg_error:nnxx { keys } { bad-relative-key-path }
\l_keys_path_str
\l__keys_relative_tl
}
@@ -13660,12 +13820,12 @@
{ \prg_return_false: }
}
\cs_new_protected:Npn \keys_show:nn
- { \__keys_show:Nnn \msg_show:nnxxxx }
+ { \__keys_show:Nnn \__kernel_msg_show:nnxxxx }
\cs_new_protected:Npn \keys_log:nn
- { \__keys_show:Nnn \msg_log:nnxxxx }
+ { \__keys_show:Nnn \__kernel_msg_log:nnxxxx }
\cs_new_protected:Npn \__keys_show:Nnn #1#2#3
{
- #1 { LaTeX / kernel } { show-key }
+ #1 { keys } { show-key }
{ \__keys_trim_spaces:n { #2 / #3 } }
{
\keys_if_exist:nnT {#2} {#3}
@@ -13682,43 +13842,43 @@
}
{ } { }
}
-\__kernel_msg_new:nnnn { kernel } { bad-relative-key-path }
+\__kernel_msg_new:nnnn { keys } { bad-relative-key-path }
{ The~key~'#1'~is~not~inside~the~'#2'~path. }
{ The~key~'#1'~cannot~be~expressed~relative~to~path~'#2'. }
-\__kernel_msg_new:nnnn { kernel } { boolean-values-only }
+\__kernel_msg_new:nnnn { keys } { boolean-values-only }
{ Key~'#1'~accepts~boolean~values~only. }
{ The~key~'#1'~only~accepts~the~values~'true'~and~'false'. }
-\__kernel_msg_new:nnnn { kernel } { key-choice-unknown }
+\__kernel_msg_new:nnnn { keys } { choice-unknown }
{ Key~'#1'~accepts~only~a~fixed~set~of~choices. }
{
The~key~'#1'~only~accepts~predefined~values,~
and~'#2'~is~not~one~of~these.
}
-\__kernel_msg_new:nnnn { kernel } { key-unknown }
+\__kernel_msg_new:nnnn { keys } { unknown }
{ The~key~'#1'~is~unknown~and~is~being~ignored. }
{
The~module~'#2'~does~not~have~a~key~called~'#1'.\\
Check~that~you~have~spelled~the~key~name~correctly.
}
-\__kernel_msg_new:nnnn { kernel } { nested-choice-key }
+\__kernel_msg_new:nnnn { keys } { nested-choice-key }
{ Attempt~to~define~'#1'~as~a~nested~choice~key. }
{
The~key~'#1'~cannot~be~defined~as~a~choice~as~the~parent~key~'#2'~is~
itself~a~choice.
}
-\__kernel_msg_new:nnnn { kernel } { value-forbidden }
+\__kernel_msg_new:nnnn { keys } { value-forbidden }
{ The~key~'#1'~does~not~take~a~value. }
{
The~key~'#1'~should~be~given~without~a~value.\\
The~value~'#2'~was~present:~the~key~will~be~ignored.
}
-\__kernel_msg_new:nnnn { kernel } { value-required }
+\__kernel_msg_new:nnnn { keys } { value-required }
{ The~key~'#1'~requires~a~value. }
{
The~key~'#1'~must~have~a~value.\\
No~value~was~present:~the~key~will~be~ignored.
}
-\__kernel_msg_new:nnn { kernel } { show-key }
+\__kernel_msg_new:nnn { keys } { show-key }
{
The~key~#1~
\tl_if_empty:nTF {#2}
@@ -13914,15 +14074,15 @@
\int_incr:N \l__intarray_loop_int
\__intarray_gset_range:Nw #1
}
-\cs_new_protected:Npn \intarray_show:N { \__intarray_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \intarray_show:N { \__intarray_show:NN \__kernel_msg_show:nnxxxx }
\cs_generate_variant:Nn \intarray_show:N { c }
-\cs_new_protected:Npn \intarray_log:N { \__intarray_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \intarray_log:N { \__intarray_show:NN \__kernel_msg_log:nnxxxx }
\cs_generate_variant:Nn \intarray_log:N { c }
\cs_new_protected:Npn \__intarray_show:NN #1#2
{
\__kernel_chk_defined:NT #2
{
- #1 { LaTeX/kernel } { show-intarray }
+ #1 { intarray } { show }
{ \token_to_str:N #2 }
{ \intarray_count:N #2 }
{ >~ \__intarray_to_clist:Nn #2 { , ~ } }
@@ -14012,7 +14172,7 @@
\cs_new:Npn \__fp_use_i:ww #1; #2; { #1; }
\cs_new:Npn \__fp_use_i:www #1; #2; #3; { #1; }
\cs_new_protected:Npn \__fp_misused:n #1
- { \__kernel_msg_error:nnx { kernel } { misused-fp } { \fp_to_tl:n {#1} } }
+ { \__kernel_msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } }
\scan_new:N \s__fp
\cs_new_protected:Npn \__fp_chk:w #1 ;
{ \__fp_misused:n { \s__fp \__fp_chk:w #1 ; } }
@@ -14381,7 +14541,7 @@
{ \cs_new:Npn \__fp_func_to_name_aux:w ##1 #1 ##2 #2 ##3 X {##2} }
\exp_args:Nff \__fp_tmp:w { \tl_to_str:n { __fp_ } }
{ \tl_to_str:n { _o: } }
-\__kernel_msg_new:nnnn { kernel } { misused-fp }
+\__kernel_msg_new:nnnn { fp } { misused }
{ A~floating~point~with~value~'#1'~was~misused. }
{
To~obtain~the~value~of~a~floating~point~variable,~use~
@@ -14402,12 +14562,12 @@
{ invalid_operation , division_by_zero , overflow , underflow }
{#1}
{
- \__kernel_msg_error:nnxx { kernel }
+ \__kernel_msg_error:nnxx { fp }
{ unknown-fpu-trap-type } {#1} {#2}
}
{
\__kernel_msg_error:nnx
- { kernel } { unknown-fpu-exception } {#1}
+ { fp } { unknown-fpu-exception } {#1}
}
}
}
@@ -14423,7 +14583,7 @@
{ \cs_set:Npn \__fp_invalid_operation:nnw ##1##2##3; }
{
#1
- \__fp_error:nnfn { fp-invalid } {##2} { \fp_to_tl:n { ##3; } } { }
+ \__fp_error:nnfn { invalid } {##2} { \fp_to_tl:n { ##3; } } { }
\flag_raise_if_clear:n { fp_invalid_operation }
##1
}
@@ -14431,7 +14591,7 @@
{ \cs_set:Npn \__fp_invalid_operation_o:Nww ##1##2; ##3; }
{
#1
- \__fp_error:nffn { fp-invalid-ii }
+ \__fp_error:nffn { invalid-ii }
{ \fp_to_tl:n { ##2; } } { \fp_to_tl:n { ##3; } } {##1}
\flag_raise_if_clear:n { fp_invalid_operation }
\exp_after:wN \c_nan_fp
@@ -14440,7 +14600,7 @@
{ \cs_set:Npn \__fp_invalid_operation_tl_o:ff ##1##2 }
{
#1
- \__fp_error:nffn { fp-invalid } {##1} {##2} { }
+ \__fp_error:nffn { invalid } {##1} {##2} { }
\flag_raise_if_clear:n { fp_invalid_operation }
\exp_after:wN \c_nan_fp
}
@@ -14457,7 +14617,7 @@
{ \cs_set:Npn \__fp_division_by_zero_o:Nnw ##1##2##3; }
{
#1
- \__fp_error:nnfn { fp-zero-div } {##2} { \fp_to_tl:n { ##3; } } { }
+ \__fp_error:nnfn { zero-div } {##2} { \fp_to_tl:n { ##3; } } { }
\flag_raise_if_clear:n { fp_division_by_zero }
\exp_after:wN ##1
}
@@ -14465,7 +14625,7 @@
{ \cs_set:Npn \__fp_division_by_zero_o:NNww ##1##2##3; ##4; }
{
#1
- \__fp_error:nffn { fp-zero-div-ii }
+ \__fp_error:nffn { zero-div-ii }
{ \fp_to_tl:n { ##3; } } { \fp_to_tl:n { ##4; } } {##2}
\flag_raise_if_clear:n { fp_division_by_zero }
\exp_after:wN ##1
@@ -14494,7 +14654,7 @@
{
#1
\__fp_error:nffn
- { fp-flow \if_meaning:w 1 ##1 -to \fi: }
+ { flow \if_meaning:w 1 ##1 -to \fi: }
{ \fp_to_tl:n { \s__fp \__fp_chk:w ##1##2##3; } }
{ \token_if_eq_meaning:NNF 0 ##2 { - } #4 }
{#2}
@@ -14517,9 +14677,9 @@
{ \__fp_invalid_operation:nnw { \exp_after:wN \c_nan_fp } }
\cs_generate_variant:Nn \__fp_invalid_operation_o:nw { f }
\cs_new:Npn \__fp_error:nnnn
- { \__kernel_msg_expandable_error:nnnnn { kernel } }
+ { \__kernel_msg_expandable_error:nnnnn { fp } }
\cs_generate_variant:Nn \__fp_error:nnnn { nnf, nff , nfff }
-\__kernel_msg_new:nnnn { kernel } { unknown-fpu-exception }
+\__kernel_msg_new:nnnn { fp } { unknown-fpu-exception }
{
The~FPU~exception~'#1'~is~not~known:~
that~trap~will~never~be~triggered.
@@ -14534,7 +14694,7 @@
* ~ underflow
}
}
-\__kernel_msg_new:nnnn { kernel } { unknown-fpu-trap-type }
+\__kernel_msg_new:nnnn { fp } { unknown-fpu-trap-type }
{ The~FPU~trap~type~'#2'~is~not~known. }
{
The~trap~type~must~be~one~of \\
@@ -14545,19 +14705,19 @@
* ~ none
}
}
-\__kernel_msg_new:nnn { kernel } { fp-flow }
+\__kernel_msg_new:nnn { fp } { flow }
{ An ~ #3 ~ occurred. }
-\__kernel_msg_new:nnn { kernel } { fp-flow-to }
+\__kernel_msg_new:nnn { fp } { flow-to }
{ #1 ~ #3 ed ~ to ~ #2 . }
-\__kernel_msg_new:nnn { kernel } { fp-zero-div }
+\__kernel_msg_new:nnn { fp } { zero-div }
{ Division~by~zero~in~ #1 (#2) }
-\__kernel_msg_new:nnn { kernel } { fp-zero-div-ii }
+\__kernel_msg_new:nnn { fp } { zero-div-ii }
{ Division~by~zero~in~ (#1) #3 (#2) }
-\__kernel_msg_new:nnn { kernel } { fp-invalid }
+\__kernel_msg_new:nnn { fp } { invalid }
{ Invalid~operation~ #1 (#2) }
-\__kernel_msg_new:nnn { kernel } { fp-invalid-ii }
+\__kernel_msg_new:nnn { fp } { invalid-ii }
{ Invalid~operation~ (#1) #3 (#2) }
-\__kernel_msg_new:nnn { kernel } { fp-unknown-type }
+\__kernel_msg_new:nnn { fp } { unknown-type }
{ Unknown~type~for~'#1' }
%% File: l3fp-round.dtx
\cs_new:Npn \__fp_parse_word_trunc:N
@@ -14713,9 +14873,9 @@
\cs_new:Npn \__fp_round_no_arg_o:Nw #1
{
\cs_if_eq:NNTF #1 \__fp_round_to_nearest:NNN
- { \__fp_error:nnnn { fp-num-args } { round () } { 1 } { 3 } }
+ { \__fp_error:nnnn { num-args } { round () } { 1 } { 3 } }
{
- \__fp_error:nffn { fp-num-args }
+ \__fp_error:nffn { num-args }
{ \__fp_round_name_from_cs:N #1 () } { 1 } { 2 }
}
\exp_after:wN \c_nan_fp
@@ -14736,12 +14896,12 @@
#2 ; #3 ;
}
{
- \__fp_error:nnnn { fp-num-args } { round () } { 1 } { 3 }
+ \__fp_error:nnnn { num-args } { round () } { 1 } { 3 }
\exp_after:wN \c_nan_fp
}
}
{
- \__fp_error:nffn { fp-num-args }
+ \__fp_error:nffn { num-args }
{ \__fp_round_name_from_cs:N #1 () } { 1 } { 2 }
\exp_after:wN \c_nan_fp
}
@@ -14930,7 +15090,7 @@
}
}
{
- \__kernel_msg_expandable_error:nn { kernel } { fp-early-end }
+ \__kernel_msg_expandable_error:nn { fp } { early-end }
\exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
}
#1
@@ -14952,8 +15112,8 @@
{
\cs_if_eq:NNTF ##2 #1 { \use_i:nn } { \use:n }
{
- \__kernel_msg_expandable_error:nnn { kernel }
- { fp-robust-cmd }
+ \__kernel_msg_expandable_error:nnn { fp }
+ { robust-cmd }
}
}
{
@@ -15024,7 +15184,7 @@
\str_if_eq:nnTF {#1} {#2}
{
\__kernel_msg_expandable_error:nnn
- { kernel } { fp-infty-pi } {#1}
+ { fp } { infty-pi } {#1}
\c_nan_fp
}
{ #4 \__fp_parse_expand:w }
@@ -15081,7 +15241,7 @@
{ __fp_parse_caseless_ \str_foldcase:n {#2} :N }
{
\__kernel_msg_expandable_error:nnn
- { kernel } { unknown-fp-word } {#2}
+ { fp } { unknown-fp-word } {#2}
\exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
\__fp_parse_infix:NN
}
@@ -15120,13 +15280,13 @@
\cs_if_exist:cTF { __fp_parse_infix_ \token_to_str:N #1 :N }
{
\__kernel_msg_expandable_error:nnn
- { kernel } { fp-missing-number } {#1}
+ { fp } { missing-number } {#1}
\exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
\__fp_parse_infix:NN #3 #1
}
{
\__kernel_msg_expandable_error:nnn
- { kernel } { fp-unknown-symbol } {#1}
+ { fp } { unknown-symbol } {#1}
\__fp_parse_one:Nw #3
}
}
@@ -15464,7 +15624,7 @@
= 0 \exp_stop_f:
0
\__kernel_msg_expandable_error:nnn
- { kernel } { fp-after-e } { floating~point~ }
+ { fp } { after-e } { floating~point~ }
\prg_return_true:
\else:
0
@@ -15480,14 +15640,14 @@
\else:
0
\__kernel_msg_expandable_error:nnn
- { kernel } { fp-after-e } { dimension~#1 }
+ { fp } { after-e } { dimension~#1 }
\fi:
\prg_return_false:
\fi:
\else:
0
\__kernel_msg_expandable_error:nnn
- { kernel } { fp-missing } { exponent }
+ { fp } { missing } { exponent }
\prg_return_true:
\fi:
}
@@ -15515,7 +15675,7 @@
\cs_new:Npn \__fp_parse_apply_unary_chk:nNNNNw #1#2#3#4#5#6 @
{
#2
- \__fp_error:nffn { fp-#1-arg } { \__fp_func_to_name:N #4 } { } { }
+ \__fp_error:nffn { #1-arg } { \__fp_func_to_name:N #4 } { } { }
\exp_after:wN #4 \exp_after:wN #5 \c_nan_fp @
}
\cs_new:Npn \__fp_parse_apply_unary_type:NNN #1#2#3
@@ -15578,7 +15738,7 @@
}
{
\exp_not:N \__kernel_msg_expandable_error:nnn
- { kernel } { fp-missing } { ) }
+ { fp } { missing } { ) }
\exp_not:N \tl_if_empty:nT {#2} \exp_not:N \c__fp_empty_tuple_fp
#2 @
\exp_not:N \use_none:n #3
@@ -15592,7 +15752,7 @@
\exp_after:wN \c__fp_empty_tuple_fp \exp:w
\else:
\__kernel_msg_expandable_error:nnn
- { kernel } { fp-missing-number } { ) }
+ { fp } { missing-number } { ) }
\exp_after:wN \c_nan_fp \exp:w
\fi:
\exp_end_continue_f:w
@@ -15792,7 +15952,7 @@
{
\if_meaning:w \scan_stop: #1
\__kernel_msg_expandable_error:nnn
- { kernel } { fp-missing } { * }
+ { fp } { missing } { * }
\exp_after:wN \__fp_parse_infix_mul:N
\exp_after:wN #2
\exp_after:wN #3
@@ -15844,7 +16004,7 @@
\exp_after:wN \use_none:n
\exp_after:wN #1
\else:
- \__kernel_msg_expandable_error:nnn { kernel } { fp-extra } { ) }
+ \__kernel_msg_expandable_error:nnn { fp } { extra } { ) }
\exp_after:wN \__fp_parse_infix:NN
\exp_after:wN ##1
\exp:w \exp_after:wN \__fp_parse_expand:w
@@ -15979,7 +16139,7 @@
\__fp_ternary_auxii:NwwN \c__fp_prec_colon_int
{
\__kernel_msg_expandable_error:nnnn
- { kernel } { fp-missing } { ? } { ~for~?: }
+ { fp } { missing } { ? } { ~for~?: }
}
\cs_new:cpn { __fp_parse_infix_<:N } #1
{ \__fp_parse_compare:NNNNNNN #1 1 0 0 0 0 < }
@@ -16000,7 +16160,7 @@
\cs_new:Npn \__fp_parse_excl_error:
{
\__kernel_msg_expandable_error:nnnn
- { kernel } { fp-missing } { = } { ~after~!. }
+ { fp } { missing } { = } { ~after~!. }
}
\cs_new:Npn \__fp_parse_compare:NNNNNNN #1
{
@@ -16094,7 +16254,7 @@
\__fp_array_if_all_fp:nTF {#3}
{ #2 #3 @ }
{
- \__fp_error:nffn { fp-bad-args }
+ \__fp_error:nffn { bad-args }
{#1}
{ \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#3} ; } }
{ }
@@ -16109,7 +16269,7 @@
}
\cs_new:Npn \__fp_parse_function_one_two_error_o:w #1#2#3#4 @
{
- \__fp_error:nffn { fp-bad-args }
+ \__fp_error:nffn { bad-args }
{#2}
{ \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#4} ; } }
{ }
@@ -16176,37 +16336,37 @@
\exp:w \exp_end_continue_f:w
\__fp_tuple_mapthread_loop_o:nw {#1} #4 @
}
-\__kernel_msg_new:nnn { kernel } { fp-deprecated }
+\__kernel_msg_new:nnn { fp } { deprecated }
{ '#1'~deprecated;~use~'#2' }
-\__kernel_msg_new:nnn { kernel } { unknown-fp-word }
+\__kernel_msg_new:nnn { fp } { unknown-fp-word }
{ Unknown~fp~word~#1. }
-\__kernel_msg_new:nnn { kernel } { fp-missing }
+\__kernel_msg_new:nnn { fp } { missing }
{ Missing~#1~inserted #2. }
-\__kernel_msg_new:nnn { kernel } { fp-extra }
+\__kernel_msg_new:nnn { fp } { extra }
{ Extra~#1~ignored. }
-\__kernel_msg_new:nnn { kernel } { fp-early-end }
+\__kernel_msg_new:nnn { fp } { early-end }
{ Premature~end~in~fp~expression. }
-\__kernel_msg_new:nnn { kernel } { fp-after-e }
+\__kernel_msg_new:nnn { fp } { after-e }
{ Cannot~use~#1 after~'e'. }
-\__kernel_msg_new:nnn { kernel } { fp-missing-number }
+\__kernel_msg_new:nnn { fp } { missing-number }
{ Missing~number~before~'#1'. }
-\__kernel_msg_new:nnn { kernel } { fp-unknown-symbol }
+\__kernel_msg_new:nnn { fp } { unknown-symbol }
{ Unknown~symbol~#1~ignored. }
-\__kernel_msg_new:nnn { kernel } { fp-extra-comma }
+\__kernel_msg_new:nnn { fp } { extra-comma }
{ Unexpected~comma~turned~to~nan~result. }
-\__kernel_msg_new:nnn { kernel } { fp-no-arg }
+\__kernel_msg_new:nnn { fp } { no-arg }
{ #1~got~no~argument;~used~nan. }
-\__kernel_msg_new:nnn { kernel } { fp-multi-arg }
+\__kernel_msg_new:nnn { fp } { multi-arg }
{ #1~got~more~than~one~argument;~used~nan. }
-\__kernel_msg_new:nnn { kernel } { fp-num-args }
+\__kernel_msg_new:nnn { fp } { num-args }
{ #1~expects~between~#2~and~#3~arguments. }
-\__kernel_msg_new:nnn { kernel } { fp-bad-args }
+\__kernel_msg_new:nnn { fp } { bad-args }
{ Arguments~in~#1#2~are~invalid. }
-\__kernel_msg_new:nnn { kernel } { fp-infty-pi }
+\__kernel_msg_new:nnn { fp } { infty-pi }
{ Math~command~#1 is~not~an~fp }
\cs_if_exist:cT { @unexpandable@protect }
{
- \__kernel_msg_new:nnn { kernel } { fp-robust-cmd }
+ \__kernel_msg_new:nnn { fp } { robust-cmd }
{ Robust~command~#1 invalid~in~fp~expression! }
}
%% File: l3fp-assign.dtx
@@ -16252,9 +16412,23 @@
\cs_generate_variant:Nn \fp_log:N { c }
\cs_new_protected:Npn \__fp_show:NN #1#2
{
- \__kernel_chk_defined:NT #2
+ \__kernel_chk_tl_type:NnnT #2 { fp }
+ {
+ \str_if_eq:eeTF { \tl_head:N #2 } { \s__fp_tuple } { \exp_not:o #2 }
+ {
+ \exp_after:wN \__fp_show_validate:w #2
+ \s__fp \__fp_chk:w ??? ; \s__fp_stop
+ }
+ }
{ \exp_args:Nx #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
}
+\cs_new:Npn \__fp_show_validate:w
+ #1 \s__fp \__fp_chk:w #2#3#4#5 ; #6 \s__fp_stop
+ {
+ \token_if_eq_meaning:NNTF #2 1
+ { \s__fp \__fp_chk:w #2 #3 {#4} #5 ; }
+ { \s__fp \__fp_chk:w #2 #3 #4 #5 ; }
+ }
\cs_new_protected:Npn \fp_show:n
{ \msg_show_eval:Nn \fp_to_tl:n }
\cs_new_protected:Npn \fp_log:n
@@ -16481,7 +16655,7 @@
\prg_break_point:
\use:n
{
- \__fp_error:nfff { fp-step-tuple } { \fp_to_tl:n { #1#2 ; } }
+ \__fp_error:nfff { step-tuple } { \fp_to_tl:n { #1#2 ; } }
{ \fp_to_tl:n { #3#4 ; } } { \fp_to_tl:n { #5#6 ; } }
}
}
@@ -16500,7 +16674,7 @@
{ zero-step } {#6}
}
{
- \__fp_error:nnfn { fp-bad-step } { }
+ \__fp_error:nnfn { bad-step } { }
{ \fp_to_tl:n { \s__fp \__fp_chk:w #2#3#4 ; } } {#6}
}
\use_none:nnnnn
@@ -16511,7 +16685,7 @@
{
\fp_compare:nNnTF {#2} = {#3}
{
- \__fp_error:nffn { fp-tiny-step }
+ \__fp_error:nffn { tiny-step }
{ \fp_to_tl:n {#3} } { \fp_to_tl:n {#4} } {#6}
}
{
@@ -16549,11 +16723,11 @@
\fp_step_function:nnnN {#3} {#4} {#5} #2
\prg_break_point:Nn \scan_stop: { \int_gdecr:N \g__kernel_prg_map_int }
}
-\__kernel_msg_new:nnn { kernel } { fp-step-tuple }
+\__kernel_msg_new:nnn { fp } { step-tuple }
{ Tuple~argument~in~fp_step_...~{#1}{#2}{#3}. }
-\__kernel_msg_new:nnn { kernel } { fp-bad-step }
+\__kernel_msg_new:nnn { fp } { bad-step }
{ Invalid~step~size~#2~in~step~function~#3. }
-\__kernel_msg_new:nnn { kernel } { fp-tiny-step }
+\__kernel_msg_new:nnn { fp } { tiny-step }
{ Tiny~step~size~(#1+#2=#1)~in~step~function~#3. }
\cs_new:Npn \__fp_minmax_o:Nw #1
{
@@ -16658,7 +16832,7 @@
\__fp_parse_expand:w
\else:
\__kernel_msg_expandable_error:nnnn
- { kernel } { fp-missing } { : } { ~for~?: }
+ { fp } { missing } { : } { ~for~?: }
\exp_after:wN \__fp_parse_continue:NwN
\exp_after:wN #1
\exp:w \exp_end_continue_f:w
@@ -19610,7 +19784,7 @@
}
\cs_new:Npn \__fp_to_scientific_recover:w #1 #2 ;
{
- \__fp_error:nffn { fp-unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_scientific:w
@@ -19664,7 +19838,7 @@
}
\cs_new:Npn \__fp_to_decimal_recover:w #1 #2 ;
{
- \__fp_error:nffn { fp-unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_decimal:w
@@ -19738,7 +19912,7 @@
{ \__fp_change_func_type:NNN #1 \__fp_to_tl:w \__fp_to_tl_recover:w #1 }
\cs_new:Npn \__fp_to_tl_recover:w #1 #2 ;
{
- \__fp_error:nffn { fp-unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_tl:w
@@ -19928,7 +20102,7 @@
}
{
\__kernel_msg_expandable_error:nnnnn
- { kernel } { fp-num-args } { rand() } { 0 } { 0 }
+ { fp } { num-args } { rand() } { 0 } { 0 }
\exp_after:wN \c_nan_fp
}
}
@@ -20163,7 +20337,6 @@
}
}
%% File: l3fparray.dtx
-
\int_new:N \g__fp_array_int
\int_new:N \l__fp_array_loop_int
\cs_new_protected:Npn \fparray_new:Nn #1#2
@@ -20242,7 +20415,7 @@
}
\cs_new_protected:Npn \__fp_array_gset_recover:Nw #1#2 ;
{
- \__fp_error:nffn { fp-unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
\exp_after:wN #1 \c_nan_fp
}
\cs_new_protected:Npn \__fp_array_gset:w \s__fp \__fp_chk:w #1#2
@@ -20502,7 +20675,7 @@
{ \__cctab_nesting_number:N \l__cctab_internal_a_tl }
\__cctab_select:N \l__cctab_internal_a_tl
}
- { \__kernel_msg_error:nn { kernel } { cctab-extra-end } }
+ { \__kernel_msg_error:nn { cctab } { extra-end } }
}
\cs_new_protected:Npn \__cctab_chk_group_begin:n #1
{
@@ -20520,7 +20693,7 @@
}
{ \cs_if_exist_p:c { __cctab_group_ #1 _chk: } }
{
- \__kernel_msg_error:nnx { kernel } { cctab-group-mismatch }
+ \__kernel_msg_error:nnx { cctab } { group-mismatch }
{
\int_sign:n
{ \tex_currentgrouplevel:D - \l__cctab_internal_b_tl }
@@ -20544,10 +20717,10 @@
}
\cs_if_exist:NT \hook_gput_code:nnn
{
- \hook_gput_code:nnn { enddocument/end } { kernel }
+ \hook_gput_code:nnn { enddocument/end } { cctab }
{
\seq_if_empty:NF \g__cctab_stack_seq
- { \__kernel_msg_error:nn { kernel } { cctab-missing-end } }
+ { \__kernel_msg_error:nn { cctab } { missing-end } }
}
}
\prg_new_eq_conditional:NNn \cctab_if_exist:N \cs_if_exist:N
@@ -20562,7 +20735,7 @@
\__cctab_chk_if_valid_aux:NTF #1
{ \prg_return_true: }
{
- \__kernel_msg_error:nnx { kernel } { invalid-cctab }
+ \__kernel_msg_error:nnx { cctab } { invalid-cctab }
{ \token_to_str:N #1 }
\prg_return_false:
}
@@ -20664,32 +20837,32 @@
\char_set_catcode_active:n { 126 }
}
}
-\__kernel_msg_new:nnnn { kernel } { cctab-stack-full }
+\__kernel_msg_new:nnnn { cctab } { stack-full }
{ The~category~code~table~stack~is~exhausted. }
{
LaTeX~has~been~asked~to~switch~to~a~new~category~code~table,~
but~there~is~no~more~space~to~do~this!
}
-\__kernel_msg_new:nnnn { kernel } { cctab-extra-end }
+\__kernel_msg_new:nnnn { cctab } { extra-end }
{ Extra~\iow_char:N\\cctab_end:~ignored~\msg_line_context:. }
{
LaTeX~came~across~a~\iow_char:N\\cctab_end:~without~a~matching~
\iow_char:N\\cctab_begin:N.~This~command~will~be~ignored.
}
-\__kernel_msg_new:nnnn { kernel } { cctab-missing-end }
+\__kernel_msg_new:nnnn { cctab } { missing-end }
{ Missing~\iow_char:N\\cctab_end:~before~end~of~TeX~run. }
{
LaTeX~came~across~more~\iow_char:N\\cctab_begin:N~than~
\iow_char:N\\cctab_end:.
}
-\__kernel_msg_new:nnnn { kernel } { invalid-cctab }
+\__kernel_msg_new:nnnn { cctab } { invalid-cctab }
{ Invalid~\iow_char:N\\catcode~table. }
{
You~can~only~switch~to~a~\iow_char:N\\catcode~table~that~is~
initialized~using~\iow_char:N\\cctab_new:N~or~
\iow_char:N\\cctab_const:Nn.
}
-\__kernel_msg_new:nnnn { kernel } { cctab-group-mismatch }
+\__kernel_msg_new:nnnn { cctab } { group-mismatch }
{
\iow_char:N\\cctab_end:~occurred~in~a~
\int_case:nn {#1}
@@ -20940,14 +21113,14 @@
\cs_new_protected:Npn \__sort_return_mark:w #1 \s__sort_mark { }
\cs_new_protected:Npn \__sort_return_none_error:
{
- \__kernel_msg_error:nnxx { kernel } { return-none }
+ \__kernel_msg_error:nnxx { sort } { return-none }
{ \tex_the:D \tex_toks:D \l__sort_A_int }
{ \tex_the:D \tex_toks:D \l__sort_C_int }
\__sort_return_same:w \__sort_return_none_error:
}
\cs_new_protected:Npn \__sort_return_two_error:
{
- \__kernel_msg_error:nnxx { kernel } { return-two }
+ \__kernel_msg_error:nnxx { sort } { return-two }
{ \tex_the:D \tex_toks:D \l__sort_A_int }
{ \tex_the:D \tex_toks:D \l__sort_C_int }
}
@@ -21077,12 +21250,12 @@
{ \cs_set_eq:NN \toksdef \__sort_disabled_toksdef:n }
\cs_new_protected:Npn \__sort_disabled_toksdef:n #1
{
- \__kernel_msg_error:nnx { kernel } { toksdef }
+ \__kernel_msg_error:nnx { sort } { toksdef }
{ \token_to_str:N #1 }
\__sort_error:
\tex_toksdef:D #1
}
-\__kernel_msg_new:nnnn { kernel } { toksdef }
+\__kernel_msg_new:nnnn { sort } { toksdef }
{ Allocation~of~\iow_char:N\\toks~registers~impossible~while~sorting. }
{
The~comparison~code~used~for~sorting~a~list~has~attempted~to~
@@ -21093,20 +21266,20 @@
\cs_new_protected:Npn \__sort_too_long_error:NNw #1#2 \fi:
{
\fi:
- \__kernel_msg_error:nnxxx { kernel } { too-large }
+ \__kernel_msg_error:nnxxx { sort } { too-large }
{ \token_to_str:N #2 }
{ \int_eval:n { \l__sort_true_max_int - \l__sort_min_int } }
{ \int_eval:n { \l__sort_top_int - \l__sort_min_int } }
#1 \__sort_error:
}
-\__kernel_msg_new:nnnn { kernel } { too-large }
+\__kernel_msg_new:nnnn { sort } { too-large }
{ The~list~#1~is~too~long~to~be~sorted~by~TeX. }
{
TeX~has~#2~toks~registers~still~available:~
this~only~allows~to~sort~with~up~to~#3~
items.~The~list~will~not~be~sorted.
}
-\__kernel_msg_new:nnnn { kernel } { return-none }
+\__kernel_msg_new:nnnn { sort } { return-none }
{ The~comparison~code~did~not~return. }
{
When~sorting~a~list,~the~code~to~compare~items~#1~and~#2~
@@ -21115,7 +21288,7 @@
\iow_char:N\\sort_return_swapped: .~
Exactly~one~of~these~should~be~called.
}
-\__kernel_msg_new:nnnn { kernel } { return-two }
+\__kernel_msg_new:nnnn { sort } { return-two }
{ The~comparison~code~returned~multiple~times. }
{
When~sorting~a~list,~the~code~to~compare~items~#1~and~#2~called~
@@ -22824,7 +22997,7 @@
\tl_if_exist:NTF #1
{
\exp_args:No \__tl_analysis:n {#1}
- \msg_show:nnxxxx { LaTeX / kernel } { show-tl-analysis }
+ \__kernel_msg_show:nnxxxx { tl } { show-analysis }
{ \token_to_str:N #1 } { \__tl_analysis_show: } { } { }
}
{ \tl_show:N #1 }
@@ -22832,7 +23005,7 @@
\cs_new_protected:Npn \tl_analysis_show:n #1
{
\__tl_analysis:n {#1}
- \msg_show:nnxxxx { LaTeX / kernel } { show-tl-analysis }
+ \__kernel_msg_show:nnxxxx { tl } { show-analysis }
{ } { \__tl_analysis_show: } { } { }
}
\cs_new:Npn \__tl_analysis_show:
@@ -23118,7 +23291,7 @@
}
\tl_const:Nx \c__tl_analysis_show_etc_str % (
{ \token_to_str:N \ETC.) }
-\__kernel_msg_new:nnn { kernel } { show-tl-analysis }
+\__kernel_msg_new:nnn { tl } { show-analysis }
{
The~token~list~ \tl_if_empty:nF {#1} { #1 ~ }
\tl_if_empty:nTF {#2}
@@ -23230,9 +23403,7 @@
\if_int_compare:w #1 = \l__regex_curr_char_int
\exp_after:wN \__regex_break_true:w
\fi:
- \if_int_compare:w \l__regex_case_changed_char_int = \c_max_int
- \__regex_compute_case_changed_char:
- \fi:
+ \__regex_maybe_compute_ccc:
\if_int_compare:w #1 = \l__regex_case_changed_char_int
\exp_after:wN \__regex_break_true:w
\fi:
@@ -23244,9 +23415,7 @@
\exp_after:wN \exp_after:wN \exp_after:wN \__regex_break_true:w
\fi:
\fi:
- \if_int_compare:w \l__regex_case_changed_char_int = \c_max_int
- \__regex_compute_case_changed_char:
- \fi:
+ \__regex_maybe_compute_ccc:
\reverse_if:N \if_int_compare:w #1 > \l__regex_case_changed_char_int
\reverse_if:N \if_int_compare:w #2 < \l__regex_case_changed_char_int
\exp_after:wN \exp_after:wN \exp_after:wN \__regex_break_true:w
@@ -23269,7 +23438,9 @@
{ \c__regex_ascii_lower_int }
\fi:
\fi:
+ \cs_set_eq:NN \__regex_maybe_compute_ccc: \prg_do_nothing:
}
+\cs_new_eq:NN \__regex_maybe_compute_ccc: \__regex_compute_case_changed_char:
\cs_new_eq:NN \__regex_item_equal:n ?
\cs_new_eq:NN \__regex_item_range:nn ?
\cs_new_protected:Npn \__regex_item_catcode:
@@ -23444,7 +23615,7 @@
\cs_new_eq:NN \__regex_escape_break:w \prg_break:
\cs_new:cpn { __regex_escape_/break:w }
{
- \__kernel_msg_expandable_error:nn { kernel } { trailing-backslash }
+ \__kernel_msg_expandable_error:nn { regex } { trailing-backslash }
\prg_break:
}
\cs_new:cpn { __regex_escape_~:w } { }
@@ -23469,7 +23640,7 @@
{
\int_compare:nNnTF {#1} > \c_max_char_int
{
- \__kernel_msg_expandable_error:nnff { kernel } { x-overflow }
+ \__kernel_msg_expandable_error:nnff { regex } { x-overflow }
{#1} { \int_to_Hex:n {#1} }
}
{
@@ -23530,7 +23701,7 @@
}
\cs_new:Npn \__regex_escape_x_loop_error:n #1
{
- \__kernel_msg_expandable_error:nnn { kernel } { x-missing-rbrace } {#1}
+ \__kernel_msg_expandable_error:nnn { regex } { x-missing-rbrace } {#1}
\__regex_escape_loop:N #1
}
\prg_new_conditional:Npnn \__regex_hexadecimal_use:N #1 { TF }
@@ -23705,7 +23876,7 @@
\if_int_compare:w \l__regex_mode_int = \c__regex_class_mode_int
\exp_after:wN \exp_after:wN \exp_after:wN \use:n
\else:
- \__kernel_msg_error:nn { kernel } { c-bad-mode }
+ \__kernel_msg_error:nn { regex } { c-bad-mode }
\exp_after:wN \exp_after:wN \exp_after:wN \use_none:n
\fi:
\fi:
@@ -23738,13 +23909,13 @@
{
\__regex_if_in_class:TF
{
- \__kernel_msg_error:nn { kernel } { missing-rbrack }
+ \__kernel_msg_error:nn { regex } { missing-rbrack }
\use:c { __regex_compile_]: }
\prg_do_nothing: \prg_do_nothing:
}
{ }
\if_int_compare:w \l__regex_group_level_int > 0 \exp_stop_f:
- \__kernel_msg_error:nnx { kernel } { missing-rparen }
+ \__kernel_msg_error:nnx { regex } { missing-rparen }
{ \int_use:N \l__regex_group_level_int }
\prg_replicate:nn
{ \l__regex_group_level_int }
@@ -23786,10 +23957,10 @@
\prg_do_nothing: \prg_do_nothing:
\prg_do_nothing: \prg_do_nothing:
\int_compare:nNnT \l__regex_mode_int = \c__regex_catcode_mode_int
- { \__kernel_msg_error:nn { kernel } { c-trailing } }
+ { \__kernel_msg_error:nn { regex } { c-trailing } }
\int_compare:nNnT \l__regex_mode_int < \c__regex_outer_mode_int
{
- \__kernel_msg_error:nn { kernel } { c-missing-rbrace }
+ \__kernel_msg_error:nn { regex } { c-missing-rbrace }
\__regex_compile_end_cs:
\prg_do_nothing: \prg_do_nothing:
\prg_do_nothing: \prg_do_nothing:
@@ -23836,6 +24007,13 @@
}
}
\cs_generate_variant:Nn \__regex_compile_abort_tokens:n { x }
+\cs_new_protected:Npn \__regex_compile_if_quantifier:TFw #1#2#3#4
+ {
+ \token_if_eq_meaning:NNTF #3 \__regex_compile_special:N
+ { \cs_if_exist:cTF { __regex_compile_quantifier_#4:w } }
+ { \use_ii:nn }
+ {#1} {#2} #3 #4
+ }
\cs_new_protected:Npn \__regex_compile_quantifier:w #1#2
{
\token_if_eq_meaning:NNTF #1 \__regex_compile_special:N
@@ -23853,7 +24031,7 @@
\cs_new_protected:Npn \__regex_compile_quantifier_abort:xNN #1#2#3
{
\__regex_compile_quantifier_none:
- \__kernel_msg_warning:nnxx { kernel } { invalid-quantifier } {#1} {#3}
+ \__kernel_msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3}
\__regex_compile_abort_tokens:x {#1}
#2 #3
}
@@ -23923,7 +24101,7 @@
{
\if_int_compare:w \l__regex_internal_a_int >
\l__regex_internal_b_int
- \__kernel_msg_error:nnxx { kernel } { backwards-quantifier }
+ \__kernel_msg_error:nnxx { regex } { backwards-quantifier }
{ \int_use:N \l__regex_internal_a_int }
{ \int_use:N \l__regex_internal_b_int }
\int_zero:N \l__regex_internal_b_int
@@ -23946,7 +24124,7 @@
}
\cs_new_protected:Npn \__regex_compile_raw_error:N #1
{
- \__kernel_msg_error:nnx { kernel } { bad-escape } {#1}
+ \__kernel_msg_error:nnx { regex } { bad-escape } {#1}
\__regex_compile_raw:N #1
}
\cs_new_protected:Npn \__regex_compile_raw:N #1#2#3
@@ -23988,7 +24166,7 @@
\__regex_if_end_range:NNTF #2 #3
{
\if_int_compare:w `#1 > `#3 \exp_stop_f:
- \__kernel_msg_error:nnxx { kernel } { range-backwards } {#1} {#3}
+ \__kernel_msg_error:nnxx { regex } { range-backwards } {#1} {#3}
\else:
\tl_build_put_right:Nx \l__regex_build_tl
{
@@ -24002,7 +24180,7 @@
\fi:
}
{
- \__kernel_msg_warning:nnxx { kernel } { range-missing-end }
+ \__kernel_msg_warning:nnxx { regex } { range-missing-end }
{#1} { \c_backslash_str #3 }
\tl_build_put_right:Nx \l__regex_build_tl
{
@@ -24147,11 +24325,11 @@
{
: { \__regex_compile_class_posix:NNNNw }
= {
- \__kernel_msg_warning:nnx { kernel }
+ \__kernel_msg_warning:nnx { regex }
{ posix-unsupported } { = }
}
. {
- \__kernel_msg_warning:nnx { kernel }
+ \__kernel_msg_warning:nnx { regex }
{ posix-unsupported } { . }
}
}
@@ -24193,7 +24371,7 @@
}
}
{
- \__kernel_msg_warning:nnx { kernel } { posix-unknown }
+ \__kernel_msg_warning:nnx { regex } { posix-unknown }
{ \l__regex_internal_a_tl }
\__regex_compile_abort_tokens:x
{
@@ -24203,7 +24381,7 @@
}
}
{
- \__kernel_msg_error:nnxx { kernel } { posix-missing-close }
+ \__kernel_msg_error:nnxx { regex } { posix-missing-close }
{ [: \l__regex_internal_a_tl } { #2 #4 }
\__regex_compile_abort_tokens:x { [: \l__regex_internal_a_tl }
#1 #2 #3 #4
@@ -24231,7 +24409,7 @@
\int_set_eq:NN \l__regex_catcodes_int \l__regex_default_catcodes_int
\exp_after:wN \__regex_compile_quantifier:w
\else:
- \__kernel_msg_warning:nn { kernel } { extra-rparen }
+ \__kernel_msg_warning:nn { regex } { extra-rparen }
\exp_after:wN \__regex_compile_raw:N \exp_after:wN )
\fi:
}
@@ -24241,7 +24419,7 @@
{
\if_int_compare:w \l__regex_mode_int =
\c__regex_catcode_in_class_mode_int
- \__kernel_msg_error:nn { kernel } { c-lparen-in-class }
+ \__kernel_msg_error:nn { regex } { c-lparen-in-class }
\exp_after:wN \__regex_compile_raw:N \exp_after:wN (
\else:
\exp_after:wN \__regex_compile_lparen:w
@@ -24255,7 +24433,7 @@
\cs_if_exist_use:cF
{ __regex_compile_special_group_\token_to_str:N #4 :w }
{
- \__kernel_msg_warning:nnx { kernel } { special-group-unknown }
+ \__kernel_msg_warning:nnx { regex } { special-group-unknown }
{ (? #4 }
\__regex_compile_group_begin:N \__regex_group:nnnN
\__regex_compile_raw:N ? #3 #4
@@ -24293,7 +24471,7 @@
{ \__regex_item_caseless_range:nn }
}
{
- \__kernel_msg_warning:nnx { kernel } { unknown-option } { (?i #2 }
+ \__kernel_msg_warning:nnx { regex } { unknown-option } { (?i #2 }
\__regex_compile_raw:N (
\__regex_compile_raw:N ?
\__regex_compile_raw:N i
@@ -24312,7 +24490,7 @@
{ \__regex_item_caseful_range:nn }
}
{
- \__kernel_msg_warning:nnx { kernel } { unknown-option } { (?-#2#4 }
+ \__kernel_msg_warning:nnx { regex } { unknown-option } { (?-#2#4 }
\__regex_compile_raw:N (
\__regex_compile_raw:N ?
\__regex_compile_raw:N -
@@ -24340,7 +24518,7 @@
}
{ \cs_if_exist_use:cF { __regex_compile_c_#2:w } }
{
- \__kernel_msg_error:nnx { kernel } { c-missing-category } {#2}
+ \__kernel_msg_error:nnx { regex } { c-missing-category } {#2}
#1 #2
}
}
@@ -24353,7 +24531,7 @@
{ \token_if_eq_charcode:NNF #2 ( } % )
}
{ \use:n }
- { \__kernel_msg_error:nnn { kernel } { c-C-invalid } {#2} }
+ { \__kernel_msg_error:nnn { regex } { c-C-invalid } {#2} }
#1 #2
}
\cs_new_protected:cpn { __regex_compile_c_[:w } #1#2
@@ -24392,7 +24570,7 @@
{ \__regex_compile_c_lbrack_end: }
}
{
- \__kernel_msg_error:nnx { kernel } { c-missing-rbrack } {#2}
+ \__kernel_msg_error:nnx { regex } { c-missing-rbrack } {#2}
\__regex_compile_c_lbrack_end:
#1 #2
}
@@ -24422,6 +24600,12 @@
\c__regex_cs_in_class_mode_int
\fi:
}
+\cs_new_protected:cpn { __regex_compile_ \c_left_brace_str : }
+ {
+ \__regex_if_in_cs:TF
+ { \__kernel_msg_error:nnn { regex } { cu-lbrace } { c } }
+ { \exp_after:wN \__regex_compile_raw:N \c_left_brace_str }
+ }
\flag_new:n { __regex_cs }
\cs_new_protected:cpn { __regex_compile_ \c_right_brace_str : }
{
@@ -24492,15 +24676,25 @@
\__regex_if_in_class_or_catcode:TF
{ \__regex_compile_raw_error:N u #1 #2 }
{
- \__regex_two_if_eq:NNNNTF #1 #2 \__regex_compile_special:N \c_left_brace_str
- {
- \__kernel_tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
- \__regex_compile_u_loop:NN
- }
- {
- \__kernel_msg_error:nn { kernel } { u-missing-lbrace }
- \__regex_compile_raw:N u #1 #2
- }
+ \__regex_two_if_eq:NNNNTF #1 #2 \__regex_compile_raw:N r
+ { \__regex_compile_u_brace:NNN \__regex_compile_ur_end: }
+ { \__regex_compile_u_brace:NNN \__regex_compile_u_end: #1 #2 }
+ }
+ }
+\cs_new:Npn \__regex_compile_u_brace:NNN #1#2#3
+ {
+ \__regex_two_if_eq:NNNNTF #2 #3 \__regex_compile_special:N \c_left_brace_str
+ {
+ \tl_set:Nn \l__regex_internal_b_tl {#1}
+ \__kernel_tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
+ \__regex_compile_u_loop:NN
+ }
+ {
+ \__kernel_msg_error:nn { regex } { u-missing-lbrace }
+ \token_if_eq_meaning:NNTF #1 \__regex_compile_ur_end:
+ { \__regex_compile_raw:N u \__regex_compile_raw:N r }
+ { \__regex_compile_raw:N u }
+ #2 #3
}
}
\cs_new:Npn \__regex_compile_u_loop:NN #1#2
@@ -24511,19 +24705,63 @@
\token_if_eq_meaning:NNTF #1 \__regex_compile_special:N
{
\exp_after:wN \token_if_eq_charcode:NNTF \c_right_brace_str #2
- { \if_false: { \fi: } \__regex_compile_u_end: }
- { #2 \__regex_compile_u_loop:NN }
+ { \if_false: { \fi: } \l__regex_internal_b_tl }
+ {
+ \if_charcode:w \c_left_brace_str #2
+ \__kernel_msg_expandable_error:nnn { regex } { cu-lbrace } { u }
+ \else:
+ #2
+ \fi:
+ \__regex_compile_u_loop:NN
+ }
}
{
\if_false: { \fi: }
- \__kernel_msg_error:nnx { kernel } { u-missing-rbrace } {#2}
- \__regex_compile_u_end:
+ \__kernel_msg_error:nnx { regex } { u-missing-rbrace } {#2}
+ \l__regex_internal_b_tl
#1 #2
}
}
}
+\cs_new_protected:Npn \__regex_compile_ur_end:
+ {
+ \group_begin:
+ \cs_set:Npn \__regex_group:nnnN { \__regex_group_no_capture:nnnN }
+ \cs_set:Npn \__regex_group_resetting:nnnN { \__regex_group_no_capture:nnnN }
+ \exp_args:NNx
+ \group_end:
+ \__regex_compile_ur:n { \use:c { \l__regex_internal_a_tl } }
+ }
+\cs_new_protected:Npn \__regex_compile_ur:n #1
+ {
+ \tl_if_empty:oTF { \__regex_compile_ur_aux:w #1 {} ? ? \q__regex_nil }
+ { \__regex_compile_if_quantifier:TFw }
+ { \use_i:nn }
+ {
+ \tl_build_put_right:Nn \l__regex_build_tl
+ { \__regex_group_no_capture:nnnN { \if_false: } \fi: #1 }
+ \__regex_compile_quantifier:w
+ }
+ { \tl_build_put_right:Nn \l__regex_build_tl { \use_ii:nn #1 } }
+ }
+\cs_new:Npn \__regex_compile_ur_aux:w \__regex_branch:n #1#2#3 \q__regex_nil {#2}
\cs_new_protected:Npn \__regex_compile_u_end:
{
+ \__regex_compile_if_quantifier:TFw
+ {
+ \tl_build_put_right:Nn \l__regex_build_tl
+ {
+ \__regex_group_no_capture:nnnN { \if_false: } \fi:
+ \__regex_branch:n { \if_false: } \fi:
+ }
+ \__regex_compile_u_payload:
+ \tl_build_put_right:Nn \l__regex_build_tl { \if_false: { \fi: } }
+ \__regex_compile_quantifier:w
+ }
+ { \__regex_compile_u_payload: }
+ }
+\cs_new_protected:Npn \__regex_compile_u_payload:
+ {
\tl_set:Nv \l__regex_internal_a_tl { \l__regex_internal_a_tl }
\if_int_compare:w \l__regex_mode_int = \c__regex_outer_mode_int
\__regex_compile_u_not_cs:
@@ -24575,6 +24813,139 @@
{ \tl_build_put_right:Nn \l__regex_build_tl { \__regex_command_K: } }
{ \__regex_compile_raw_error:N K }
}
+\cs_new:Npn \__regex_clean_bool:n #1
+ {
+ \tl_if_single:nTF {#1}
+ { \bool_if:NTF #1 \c_true_bool \c_false_bool }
+ { \c_true_bool }
+ }
+\cs_new:Npn \__regex_clean_int:n #1
+ {
+ \tl_if_head_eq_meaning:nNTF {#1} -
+ { - \exp_args:No \__regex_clean_int:n { \use_none:n #1 } }
+ { \int_eval:n { 0 \str_map_function:nN {#1} \__regex_clean_int_aux:N } }
+ }
+\cs_new:Npn \__regex_clean_int_aux:N #1
+ {
+ \if_int_compare:w 1 < 1 #1 ~
+ #1
+ \else:
+ \exp_after:wN \str_map_break:
+ \fi:
+ }
+\cs_new:Npn \__regex_clean_regex:n #1
+ {
+ \__regex_clean_regex_loop:w #1
+ \__regex_branch:n { \q_recursion_tail } \q_recursion_stop
+ }
+\cs_new:Npn \__regex_clean_regex_loop:w #1 \__regex_branch:n #2
+ {
+ \quark_if_recursion_tail_stop:n {#2}
+ \__regex_branch:n { \__regex_clean_branch:n {#2} }
+ \__regex_clean_regex_loop:w
+ }
+\cs_new:Npn \__regex_clean_branch:n #1
+ {
+ \__regex_clean_branch_loop:n #1
+ ? ? ? ? ? ? \prg_break_point:
+ }
+\cs_new:Npn \__regex_clean_branch_loop:n #1
+ {
+ \tl_if_single:nF {#1} { \prg_break: }
+ \token_case_meaning:NnF #1
+ {
+ \__regex_command_K: { #1 \__regex_clean_branch_loop:n }
+ \__regex_assertion:Nn { #1 \__regex_clean_assertion:Nn }
+ \__regex_class:NnnnN { #1 \__regex_clean_class:NnnnN }
+ \__regex_group:nnnN { #1 \__regex_clean_group:nnnN }
+ \__regex_group_no_capture:nnnN { #1 \__regex_clean_group:nnnN }
+ \__regex_group_resetting:nnnN { #1 \__regex_clean_group:nnnN }
+ }
+ { \prg_break: }
+ }
+\cs_new:Npn \__regex_clean_assertion:Nn #1#2
+ {
+ \__regex_clean_bool:n {#1}
+ \tl_if_single:nF {#2} { { \__regex_A_test: } \prg_break: }
+ \token_case_meaning:NnTF #2
+ {
+ \__regex_A_test: { }
+ \__regex_G_test: { }
+ \__regex_Z_test: { }
+ \__regex_b_test: { }
+ }
+ { {#2} }
+ { { \__regex_A_test: } \prg_break: }
+ \__regex_clean_branch_loop:n
+ }
+\cs_new:Npn \__regex_clean_class:NnnnN #1#2#3#4#5
+ {
+ \__regex_clean_bool:n {#1}
+ { \__regex_clean_class:n {#2} }
+ { \int_max:nn { 0 } { \__regex_clean_int:n {#3} } }
+ { \int_max:nn { -1 } { \__regex_clean_int:n {#4} } }
+ \__regex_clean_bool:n {#5}
+ \__regex_clean_branch_loop:n
+ }
+\cs_new:Npn \__regex_clean_group:nnnN #1#2#3#4
+ {
+ { \__regex_clean_regex:n {#1} }
+ { \int_max:nn { 0 } { \__regex_clean_int:n {#2} } }
+ { \int_max:nn { -1 } { \__regex_clean_int:n {#3} } }
+ \__regex_clean_bool:n {#4}
+ \__regex_clean_branch_loop:n
+ }
+\cs_new:Npn \__regex_clean_class:n #1
+ { \__regex_clean_class_loop:nnn #1 ????? \prg_break_point: }
+\cs_new:Npn \__regex_clean_class_loop:nnn #1#2#3
+ {
+ \tl_if_single:nF {#1} { \prg_break: }
+ \token_case_meaning:NnTF #1
+ {
+ \__regex_item_cs:n { #1 { \__regex_clean_regex:n {#2} } }
+ \__regex_item_exact_cs:n { #1 { \__regex_clean_exact_cs:n {#2} } }
+ \__regex_item_caseful_equal:n { #1 { \__regex_clean_int:n {#2} } }
+ \__regex_item_caseless_equal:n { #1 { \__regex_clean_int:n {#2} } }
+ \__regex_item_reverse:n { #1 { \__regex_clean_class:n {#2} } }
+ }
+ { \__regex_clean_class_loop:nnn {#3} }
+ {
+ \token_case_meaning:NnTF #1
+ {
+ \__regex_item_caseful_range:nn { }
+ \__regex_item_caseless_range:nn { }
+ \__regex_item_exact:nn { }
+ }
+ { #1 { \__regex_clean_int:n {#2} } { \__regex_clean_int:n {#3} } }
+ {
+ \token_case_meaning:NnTF #1
+ {
+ \__regex_item_catcode:nT { }
+ \__regex_item_catcode_reverse:nT { }
+ }
+ {
+ #1 { \__regex_clean_int:n {#2} } { \__regex_clean_class:n {#3} }
+ \__regex_clean_class_loop:nnn
+ }
+ { \prg_break: }
+ }
+ }
+ }
+\cs_new:Npn \__regex_clean_exact_cs:n #1
+ {
+ \exp_last_unbraced:Nf \use_none:n
+ {
+ \__regex_clean_exact_cs:w #1
+ \scan_stop: \q_recursion_tail \scan_stop:
+ \q_recursion_stop
+ }
+ }
+\cs_new:Npn \__regex_clean_exact_cs:w #1 \scan_stop:
+ {
+ \quark_if_recursion_tail_stop:n {#1}
+ \scan_stop: \tl_to_str:n {#1}
+ \__regex_clean_exact_cs:w
+ }
\cs_new_protected:Npn \__regex_show:N #1
{
\group_begin:
@@ -24607,18 +24978,18 @@
\cs_set:Npn \__regex_A_test: { anchor~at~start~(\iow_char:N\\A) }
\cs_set:Npn \__regex_G_test: { anchor~at~start~of~match~(\iow_char:N\\G) }
\cs_set_protected:Npn \__regex_item_caseful_equal:n ##1
- { \__regex_show_one:n { char~code~\int_eval:n{##1} } }
+ { \__regex_show_one:n { char~code~\__regex_show_char:n{##1} } }
\cs_set_protected:Npn \__regex_item_caseful_range:nn ##1##2
{
\__regex_show_one:n
- { range~[\int_eval:n{##1}, \int_eval:n{##2}] }
+ { range~[\__regex_show_char:n{##1}, \__regex_show_char:n{##2}] }
}
\cs_set_protected:Npn \__regex_item_caseless_equal:n ##1
- { \__regex_show_one:n { char~code~\int_eval:n{##1}~(caseless) } }
+ { \__regex_show_one:n { char~code~\__regex_show_char:n{##1}~(caseless) } }
\cs_set_protected:Npn \__regex_item_caseless_range:nn ##1##2
{
\__regex_show_one:n
- { Range~[\int_eval:n{##1}, \int_eval:n{##2}]~(caseless) }
+ { Range~[\__regex_show_char:n{##1}, \__regex_show_char:n{##2}]~(caseless) }
}
\cs_set_protected:Npn \__regex_item_catcode:nT
{ \__regex_show_item_catcode:NnT \c_true_bool }
@@ -24627,7 +24998,7 @@
\cs_set_protected:Npn \__regex_item_reverse:n
{ \__regex_show_scope:nn { Reversed~match } }
\cs_set_protected:Npn \__regex_item_exact:nn ##1##2
- { \__regex_show_one:n { char~##2,~catcode~##1 } }
+ { \__regex_show_one:n { char~\__regex_show_char:n{##2},~catcode~##1 } }
\cs_set_eq:NN \__regex_item_exact_cs:n \__regex_show_item_exact_cs:n
\cs_set_protected:Npn \__regex_item_cs:n
{ \__regex_show_scope:nn { control~sequence } }
@@ -24640,6 +25011,12 @@
\group_end:
\tl_set:Nn \l__regex_internal_a_tl { \l__regex_build_tl }
}
+\cs_new:Npn \__regex_show_char:n #1
+ {
+ \int_eval:n {#1}
+ \int_compare:nT { 32 <= #1 <= 126 }
+ { ~ ( \char_generate:nn {#1} {12} ) }
+ }
\cs_new_protected:Npn \__regex_show_one:n #1
{
\int_incr:N \l__regex_show_lines_int
@@ -25217,7 +25594,7 @@
\int_add:Nn \l__regex_step_int { 2 }
\int_incr:N \l__regex_curr_pos_int
\int_set_eq:NN \l__regex_last_char_int \l__regex_curr_char_int
- \int_set_eq:NN \l__regex_case_changed_char_int \c_max_int
+ \cs_set_eq:NN \__regex_maybe_compute_ccc: \__regex_compute_case_changed_char:
\tl_set:Nn \l__regex_curr_token_tl {#1}
\int_set:Nn \l__regex_curr_char_int {#2}
\int_set:Nn \l__regex_curr_catcode_int { "#3 }
@@ -25432,7 +25809,11 @@
\if_charcode:w \c_right_brace_str ##1
\__regex_replacement_rbrace:N
\else:
- \__regex_replacement_normal:n
+ \if_charcode:w \c_left_brace_str ##1
+ \__regex_replacement_lbrace:N
+ \else:
+ \__regex_replacement_normal:n
+ \fi:
\fi:
##1
}
@@ -25441,14 +25822,14 @@
{#1}
\prg_do_nothing: \prg_do_nothing:
\if_int_compare:w \l__regex_replacement_csnames_int > 0 \exp_stop_f:
- \__kernel_msg_error:nnx { kernel } { replacement-missing-rbrace }
+ \__kernel_msg_error:nnx { regex } { replacement-missing-rbrace }
{ \int_use:N \l__regex_replacement_csnames_int }
\tl_build_put_right:Nx \l__regex_build_tl
{ \prg_replicate:nn \l__regex_replacement_csnames_int \cs_end: }
\fi:
\seq_if_empty:NF \l__regex_replacement_category_seq
{
- \__kernel_msg_error:nnx { kernel } { replacement-missing-rparen }
+ \__kernel_msg_error:nnx { regex } { replacement-missing-rparen }
{ \seq_count:N \l__regex_replacement_category_seq }
\seq_clear:N \l__regex_replacement_category_seq
}
@@ -25484,7 +25865,7 @@
\cs_new_protected:Npn \__regex_replacement_normal:n #1
{
\tl_if_empty:NTF \l__regex_replacement_category_tl
- { \__regex_replacement_put:n {#1} }
+ { \__regex_replacement_normal_aux:N #1 }
{ % (
\token_if_eq_charcode:NNTF #1 )
{
@@ -25492,15 +25873,37 @@
\l__regex_replacement_category_tl
}
{
- \use:c
- {
- __regex_replacement_c_
- \l__regex_replacement_category_tl :w
- }
- \__regex_replacement_normal:n {#1}
+ \use:c { __regex_replacement_c_ \l__regex_replacement_category_tl :w }
+ ? #1
}
}
}
+\cs_new_protected:Npn \__regex_replacement_normal_aux:N #1
+ {
+ \token_if_eq_charcode:NNTF #1 \c_space_token
+ { \__regex_replacement_c_S:w }
+ {
+ \exp_after:wN \exp_after:wN
+ \if_case:w \tex_catcode:D `#1 \exp_stop_f:
+ \__regex_replacement_c_O:w
+ \or: \__regex_replacement_c_B:w
+ \or: \__regex_replacement_c_E:w
+ \or: \__regex_replacement_c_M:w
+ \or: \__regex_replacement_c_T:w
+ \or: \__regex_replacement_c_O:w
+ \or: \__regex_replacement_c_P:w
+ \or: \__regex_replacement_c_U:w
+ \or: \__regex_replacement_c_D:w
+ \or: \__regex_replacement_c_O:w
+ \or: \__regex_replacement_c_S:w
+ \or: \__regex_replacement_c_L:w
+ \or: \__regex_replacement_c_O:w
+ \or: \__regex_replacement_c_A:w
+ \else: \__regex_replacement_c_O:w
+ \fi:
+ }
+ ? #1
+ }
\cs_new_protected:Npn \__regex_replacement_escaped:N #1
{
\cs_if_exist_use:cF { __regex_replacement_#1:w }
@@ -25508,8 +25911,7 @@
\if_int_compare:w 1 < 1#1 \exp_stop_f:
\__regex_replacement_put_submatch:n {#1}
\else:
- \exp_args:No \__regex_replacement_normal:n
- { \token_to_str:N #1 }
+ \__regex_replacement_normal:n {#1}
\fi:
}
}
@@ -25517,6 +25919,9 @@
{
\if_int_compare:w #1 < \l__regex_capturing_group_int
\__regex_replacement_put_submatch_aux:n {#1}
+ \else:
+ \__kernel_msg_expandable_error:nnff { regex } { submatch-too-big }
+ {#1} { \int_eval:n { \l__regex_capturing_group_int - 1 } }
\fi:
}
\cs_new_protected:Npn \__regex_replacement_put_submatch_aux:n #1
@@ -25533,8 +25938,7 @@
}
\cs_new_protected:Npn \__regex_replacement_g:w #1#2
{
- \__regex_two_if_eq:NNNNTF
- #1 #2 \__regex_replacement_normal:n \c_left_brace_str
+ \token_if_eq_meaning:NNTF #1 \__regex_replacement_lbrace:N
{ \l__regex_internal_a_int = \__regex_replacement_g_digits:NN }
{ \__regex_replacement_error:NNN g #1 #2 }
}
@@ -25569,15 +25973,15 @@
{
\token_if_eq_meaning:NNTF #1 \__regex_replacement_normal:n
{
- \exp_after:wN \token_if_eq_charcode:NNTF \c_left_brace_str #2
+ \cs_if_exist:cTF { __regex_replacement_c_#2:w }
+ { \__regex_replacement_cat:NNN #2 }
+ { \__regex_replacement_error:NNN c #1#2 }
+ }
+ {
+ \token_if_eq_meaning:NNTF #1 \__regex_replacement_lbrace:N
{ \__regex_replacement_cu_aux:Nw \__regex_replacement_exp_not:N }
- {
- \cs_if_exist:cTF { __regex_replacement_c_#2:w }
- { \__regex_replacement_cat:NNN #2 }
- { \__regex_replacement_error:NNN c #1#2 }
- }
+ { \__regex_replacement_error:NNN c #1#2 }
}
- { \__regex_replacement_error:NNN c #1#2 }
}
\cs_new_protected:Npn \__regex_replacement_cu_aux:Nw #1
{
@@ -25592,8 +25996,7 @@
}
\cs_new_protected:Npn \__regex_replacement_u:w #1#2
{
- \__regex_two_if_eq:NNNNTF
- #1 #2 \__regex_replacement_normal:n \c_left_brace_str
+ \token_if_eq_meaning:NNTF #1 \__regex_replacement_lbrace:N
{ \__regex_replacement_cu_aux:Nw \__regex_replacement_exp_not:V }
{ \__regex_replacement_error:NNN u #1#2 }
}
@@ -25606,15 +26009,23 @@
\__regex_replacement_normal:n {#1}
\fi:
}
+\cs_new_protected:Npn \__regex_replacement_lbrace:N #1
+ {
+ \if_int_compare:w \l__regex_replacement_csnames_int > 0 \exp_stop_f:
+ \__kernel_msg_error:nnn { regex } { cu-lbrace } { u }
+ \else:
+ \__regex_replacement_normal:n {#1}
+ \fi:
+ }
\cs_new_protected:Npn \__regex_replacement_cat:NNN #1#2#3
{
\token_if_eq_meaning:NNTF \prg_do_nothing: #3
- { \__kernel_msg_error:nn { kernel } { replacement-catcode-end } }
+ { \__kernel_msg_error:nn { regex } { replacement-catcode-end } }
{
\int_compare:nNnTF { \l__regex_replacement_csnames_int } > 0
{
\__kernel_msg_error:nnnn
- { kernel } { replacement-catcode-in-cs } {#1} {#3}
+ { regex } { replacement-catcode-in-cs } {#1} {#3}
#2 #3
}
{
@@ -25630,7 +26041,7 @@
\__regex_char_if_alphanumeric:NTF #3
{
\__kernel_msg_error:nnnn
- { kernel } { replacement-catcode-escaped }
+ { regex } { replacement-catcode-escaped }
{#1} {#3}
}
{ }
@@ -25693,7 +26104,7 @@
\cs_new_protected:Npn \__regex_replacement_c_S:w #1#2
{
\if_int_compare:w `#2 = 0 \exp_stop_f:
- \__kernel_msg_error:nn { kernel } { replacement-null-space }
+ \__kernel_msg_error:nn { regex } { replacement-null-space }
\fi:
\tex_lccode:D `\ = `#2 \scan_stop:
\tex_lowercase:D { \__regex_replacement_put:n {~} }
@@ -25707,7 +26118,7 @@
\group_end:
\cs_new_protected:Npn \__regex_replacement_error:NNN #1#2#3
{
- \__kernel_msg_error:nnx { kernel } { replacement-#1 } {#3}
+ \__kernel_msg_error:nnx { regex } { replacement-#1 } {#3}
#2 #3
}
\cs_new_protected:Npn \regex_new:N #1
@@ -25731,21 +26142,26 @@
\__regex_compile:n {#2}
\tl_const:Nx #1 { \exp_not:o \l__regex_internal_regex }
}
-\cs_new_protected:Npn \regex_show:n #1
+\cs_new_protected:Npn \regex_show:n { \__regex_show:Nn \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \regex_log:n { \__regex_show:Nn \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \__regex_show:Nn #1#2
{
- \__regex_compile:n {#1}
+ \__regex_compile:n {#2}
\__regex_show:N \l__regex_internal_regex
- \msg_show:nnxxxx { LaTeX / kernel } { show-regex }
- { \tl_to_str:n {#1} } { }
+ #1 { regex } { show }
+ { \tl_to_str:n {#2} } { }
{ \l__regex_internal_a_tl } { }
}
-\cs_new_protected:Npn \regex_show:N #1
+\cs_new_protected:Npn \regex_show:N { \__regex_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \regex_log:N { \__regex_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \__regex_show:NN #1#2
{
- \__kernel_chk_defined:NT #1
+ \__kernel_chk_tl_type:NnnT #2 { regex }
+ { \exp_args:No \__regex_clean_regex:n {#2} }
{
- \__regex_show:N #1
- \msg_show:nnxxxx { LaTeX / kernel } { show-regex }
- { } { \token_to_str:N #1 }
+ \__regex_show:N #2
+ #1 { regex } { show }
+ { } { \token_to_str:N #2 }
{ \l__regex_internal_a_tl } { }
}
}
@@ -25917,7 +26333,7 @@
}
= 0
{
- \__kernel_msg_error:nnxxx { kernel } { result-unbalanced }
+ \__kernel_msg_error:nnxxx { regex } { result-unbalanced }
{ splitting~or~extracting~submatches }
{ \flag_height:n { __regex_end } }
{ \flag_height:n { __regex_begin } }
@@ -26034,7 +26450,7 @@
{
\if_int_compare:w \l__regex_balance_int = 0 \exp_stop_f:
\else:
- \__kernel_msg_error:nnxxx { kernel } { result-unbalanced }
+ \__kernel_msg_error:nnxxx { regex } { result-unbalanced }
{ replacing }
{ \int_max:nn { - \l__regex_balance_int } { 0 } }
{ \int_max:nn { \l__regex_balance_int } { 0 } }
@@ -26248,33 +26664,33 @@
}
\use:x
{
- \__kernel_msg_new:nnn { kernel } { trailing-backslash }
+ \__kernel_msg_new:nnn { regex } { trailing-backslash }
{ Trailing~escape~char~'\iow_char:N\\'~in~regex~or~replacement. }
- \__kernel_msg_new:nnn { kernel } { x-missing-rbrace }
+ \__kernel_msg_new:nnn { regex } { x-missing-rbrace }
{
Missing~brace~'\iow_char:N\}'~in~regex~
'...\iow_char:N\\x\iow_char:N\{...##1'.
}
- \__kernel_msg_new:nnn { kernel } { x-overflow }
+ \__kernel_msg_new:nnn { regex } { x-overflow }
{
Character~code~##1~too~large~in~
\iow_char:N\\x\iow_char:N\{##2\iow_char:N\}~regex.
}
}
-\__kernel_msg_new:nnnn { kernel } { invalid-quantifier }
+\__kernel_msg_new:nnnn { regex } { invalid-quantifier }
{ Braced~quantifier~'#1'~may~not~be~followed~by~'#2'. }
{
The~character~'#2'~is~invalid~in~the~braced~quantifier~'#1'.~
The~only~valid~quantifiers~are~'*',~'?',~'+',~'{<int>}',~
'{<min>,}'~and~'{<min>,<max>}',~optionally~followed~by~'?'.
}
-\__kernel_msg_new:nnnn { kernel } { missing-rbrack }
+\__kernel_msg_new:nnnn { regex } { missing-rbrack }
{ Missing~right~bracket~inserted~in~regular~expression. }
{
LaTeX~was~given~a~regular~expression~where~a~character~class~
was~started~with~'[',~but~the~matching~']'~is~missing.
}
-\__kernel_msg_new:nnnn { kernel } { missing-rparen }
+\__kernel_msg_new:nnnn { regex } { missing-rparen }
{
Missing~right~
\int_compare:nTF { #1 = 1 } { parenthesis } { parentheses } ~
@@ -26284,13 +26700,13 @@
LaTeX~was~given~a~regular~expression~with~\int_eval:n {#1} ~
more~left~parentheses~than~right~parentheses.
}
-\__kernel_msg_new:nnnn { kernel } { extra-rparen }
+\__kernel_msg_new:nnnn { regex } { extra-rparen }
{ Extra~right~parenthesis~ignored~in~regular~expression. }
{
LaTeX~came~across~a~closing~parenthesis~when~no~submatch~group~
was~open.~The~parenthesis~will~be~ignored.
}
-\__kernel_msg_new:nnnn { kernel } { bad-escape }
+\__kernel_msg_new:nnnn { regex } { bad-escape }
{
Invalid~escape~'\iow_char:N\\#1'~
\__regex_if_in_cs:TF { within~a~control~sequence. }
@@ -26314,14 +26730,14 @@
because~it~does~not~match~exactly~one~character.
}
}
-\__kernel_msg_new:nnnn { kernel } { range-missing-end }
+\__kernel_msg_new:nnnn { regex } { range-missing-end }
{ Invalid~end-point~for~range~'#1-#2'~in~character~class. }
{
The~end-point~'#2'~of~the~range~'#1-#2'~may~not~serve~as~an~
end-point~for~a~range:~alphanumeric~characters~should~not~be~
escaped,~and~non-alphanumeric~characters~should~be~escaped.
}
-\__kernel_msg_new:nnnn { kernel } { range-backwards }
+\__kernel_msg_new:nnnn { regex } { range-backwards }
{ Range~'[#1-#2]'~out~of~order~in~character~class. }
{
In~ranges~of~characters~'[x-y]'~appearing~in~character~classes,~
@@ -26329,7 +26745,7 @@
Here,~'#1'~has~character~code~\int_eval:n {`#1},~while~
'#2'~has~character~code~\int_eval:n {`#2}.
}
-\__kernel_msg_new:nnnn { kernel } { c-bad-mode }
+\__kernel_msg_new:nnnn { regex } { c-bad-mode }
{ Invalid~nested~'\iow_char:N\\c'~escape~in~regular~expression. }
{
The~'\iow_char:N\\c'~escape~cannot~be~used~within~
@@ -26337,33 +26753,40 @@
nor~another~category~test.~
To~combine~several~category~tests,~use~'\iow_char:N\\c[...]'.
}
-\__kernel_msg_new:nnnn { kernel } { c-C-invalid }
+\__kernel_msg_new:nnnn { regex } { c-C-invalid }
{ '\iow_char:N\\cC'~should~be~followed~by~'.'~or~'(',~not~'#1'. }
{
The~'\iow_char:N\\cC'~construction~restricts~the~next~item~to~be~a~
control~sequence~or~the~next~group~to~be~made~of~control~sequences.~
It~only~makes~sense~to~follow~it~by~'.'~or~by~a~group.
}
-\__kernel_msg_new:nnnn { kernel } { c-lparen-in-class }
+\__kernel_msg_new:nnnn { regex } { cu-lbrace }
+ { Left~braces~must~be~escaped~in~'\iow_char:N\\#1{...}'. }
+ {
+ Constructions~such~as~'\iow_char:N\\#1{...\iow_char:N\{...}'~are~
+ not~allowed~and~should~be~replaced~by~
+ '\iow_char:N\\#1{...\token_to_str:N\{...}'.
+ }
+\__kernel_msg_new:nnnn { regex } { c-lparen-in-class }
{ Catcode~test~cannot~apply~to~group~in~character~class }
{
Construction~such~as~'\iow_char:N\\cL(abc)'~are~not~allowed~inside~a~
class~'[...]'~because~classes~do~not~match~multiple~characters~at~once.
}
-\__kernel_msg_new:nnnn { kernel } { c-missing-rbrace }
+\__kernel_msg_new:nnnn { regex } { c-missing-rbrace }
{ Missing~right~brace~inserted~for~'\iow_char:N\\c'~escape. }
{
LaTeX~was~given~a~regular~expression~where~a~
'\iow_char:N\\c\iow_char:N\{...'~construction~was~not~ended~
with~a~closing~brace~'\iow_char:N\}'.
}
-\__kernel_msg_new:nnnn { kernel } { c-missing-rbrack }
+\__kernel_msg_new:nnnn { regex } { c-missing-rbrack }
{ Missing~right~bracket~inserted~for~'\iow_char:N\\c'~escape. }
{
A~construction~'\iow_char:N\\c[...'~appears~in~a~
regular~expression,~but~the~closing~']'~is~not~present.
}
-\__kernel_msg_new:nnnn { kernel } { c-missing-category }
+\__kernel_msg_new:nnnn { regex } { c-missing-category }
{ Invalid~character~'#1'~following~'\iow_char:N\\c'~escape. }
{
In~regular~expressions,~the~'\iow_char:N\\c'~escape~sequence~
@@ -26371,19 +26794,19 @@
capital~letter~representing~a~character~category,~namely~
one~of~'ABCDELMOPSTU'.
}
-\__kernel_msg_new:nnnn { kernel } { c-trailing }
+\__kernel_msg_new:nnnn { regex } { c-trailing }
{ Trailing~category~code~escape~'\iow_char:N\\c'... }
{
A~regular~expression~ends~with~'\iow_char:N\\c'~followed~
by~a~letter.~It~will~be~ignored.
}
-\__kernel_msg_new:nnnn { kernel } { u-missing-lbrace }
+\__kernel_msg_new:nnnn { regex } { u-missing-lbrace }
{ Missing~left~brace~following~'\iow_char:N\\u'~escape. }
{
The~'\iow_char:N\\u'~escape~sequence~must~be~followed~by~
a~brace~group~with~the~name~of~the~variable~to~use.
}
-\__kernel_msg_new:nnnn { kernel } { u-missing-rbrace }
+\__kernel_msg_new:nnnn { regex } { u-missing-rbrace }
{ Missing~right~brace~inserted~for~'\iow_char:N\\u'~escape. }
{
LaTeX~
@@ -26393,14 +26816,14 @@
when~parsing~the~argument~of~an~
'\iow_char:N\\u\iow_char:N\{...\}'~escape.
}
-\__kernel_msg_new:nnnn { kernel } { posix-unsupported }
+\__kernel_msg_new:nnnn { regex } { posix-unsupported }
{ POSIX~collating~element~'[#1 ~ #1]'~not~supported. }
{
The~'[.foo.]'~and~'[=bar=]'~syntaxes~have~a~special~meaning~
in~POSIX~regular~expressions.~This~is~not~supported~by~LaTeX.~
Maybe~you~forgot~to~escape~a~left~bracket~in~a~character~class?
}
-\__kernel_msg_new:nnnn { kernel } { posix-unknown }
+\__kernel_msg_new:nnnn { regex } { posix-unknown }
{ POSIX~class~'[:#1:]'~unknown. }
{
'[:#1:]'~is~not~among~the~known~POSIX~classes~
@@ -26409,10 +26832,10 @@
'[:print:]',~'[:punct:]',~'[:space:]',~'[:upper:]',~
'[:word:]',~and~'[:xdigit:]'.
}
-\__kernel_msg_new:nnnn { kernel } { posix-missing-close }
+\__kernel_msg_new:nnnn { regex } { posix-missing-close }
{ Missing~closing~':]'~for~POSIX~class. }
{ The~POSIX~syntax~'#1'~must~be~followed~by~':]',~not~'#2'. }
-\__kernel_msg_new:nnnn { kernel } { result-unbalanced }
+\__kernel_msg_new:nnnn { regex } { result-unbalanced }
{ Missing~brace~inserted~when~#1. }
{
LaTeX~was~asked~to~do~some~regular~expression~operation,~
@@ -26420,33 +26843,33 @@
of~begin-group~and~end-group~tokens.~Braces~were~inserted:~
#2~left,~#3~right.
}
-\__kernel_msg_new:nnnn { kernel } { unknown-option }
+\__kernel_msg_new:nnnn { regex } { unknown-option }
{ Unknown~option~'#1'~for~regular~expressions. }
{
The~only~available~option~is~'case-insensitive',~toggled~by~
'(?i)'~and~'(?-i)'.
}
-\__kernel_msg_new:nnnn { kernel } { special-group-unknown }
+\__kernel_msg_new:nnnn { regex } { special-group-unknown }
{ Unknown~special~group~'#1~...'~in~a~regular~expression. }
{
The~only~valid~constructions~starting~with~'(?'~are~
'(?:~...~)',~'(?|~...~)',~'(?i)',~and~'(?-i)'.
}
-\__kernel_msg_new:nnnn { kernel } { replacement-c }
+\__kernel_msg_new:nnnn { regex } { replacement-c }
{ Misused~'\iow_char:N\\c'~command~in~a~replacement~text. }
{
In~a~replacement~text,~the~'\iow_char:N\\c'~escape~sequence~
can~be~followed~by~one~of~the~letters~'ABCDELMOPSTU'~
or~a~brace~group,~not~by~'#1'.
}
-\__kernel_msg_new:nnnn { kernel } { replacement-u }
+\__kernel_msg_new:nnnn { regex } { replacement-u }
{ Misused~'\iow_char:N\\u'~command~in~a~replacement~text. }
{
In~a~replacement~text,~the~'\iow_char:N\\u'~escape~sequence~
must~be~~followed~by~a~brace~group~holding~the~name~of~the~
variable~to~use.
}
-\__kernel_msg_new:nnnn { kernel } { replacement-g }
+\__kernel_msg_new:nnnn { regex } { replacement-g }
{
Missing~brace~for~the~'\iow_char:N\\g'~construction~
in~a~replacement~text.
@@ -26456,7 +26879,7 @@
submatches~are~represented~either~as~'\iow_char:N \\g{dd..d}',~
or~'\\d',~where~'d'~are~single~digits.~Here,~a~brace~is~missing.
}
-\__kernel_msg_new:nnnn { kernel } { replacement-catcode-end }
+\__kernel_msg_new:nnnn { regex } { replacement-catcode-end }
{
Missing~character~for~the~'\iow_char:N\\c<category><character>'~
construction~in~a~replacement~text.
@@ -26467,7 +26890,7 @@
the~character~category.~Then,~a~character~must~follow.~LaTeX~
reached~the~end~of~the~replacement~when~looking~for~that.
}
-\__kernel_msg_new:nnnn { kernel } { replacement-catcode-escaped }
+\__kernel_msg_new:nnnn { regex } { replacement-catcode-escaped }
{
Escaped~letter~or~digit~after~category~code~in~replacement~text.
}
@@ -26477,7 +26900,7 @@
the~character~category.~Then,~a~character~must~follow,~not~
'\iow_char:N\\#2'.
}
-\__kernel_msg_new:nnnn { kernel } { replacement-catcode-in-cs }
+\__kernel_msg_new:nnnn { regex } { replacement-catcode-in-cs }
{
Category~code~'\iow_char:N\\c#1#3'~ignored~inside~
'\iow_char:N\\c\{...\}'~in~a~replacement~text.
@@ -26487,7 +26910,7 @@
'\iow_char:N\\c\{...\}'~are~ignored~when~building~the~control~
sequence~name.
}
-\__kernel_msg_new:nnnn { kernel } { replacement-null-space }
+\__kernel_msg_new:nnnn { regex } { replacement-null-space }
{ TeX~cannot~build~a~space~token~with~character~code~0. }
{
You~asked~for~a~character~token~with~category~space,~
@@ -26496,23 +26919,25 @@
This~specific~case~is~impossible~and~will~be~replaced~
by~a~normal~space.
}
-\__kernel_msg_new:nnnn { kernel } { replacement-missing-rbrace }
+\__kernel_msg_new:nnnn { regex } { replacement-missing-rbrace }
{ Missing~right~brace~inserted~in~replacement~text. }
{
There~ \int_compare:nTF { #1 = 1 } { was } { were } ~ #1~
missing~right~\int_compare:nTF { #1 = 1 } { brace } { braces } .
}
-\__kernel_msg_new:nnnn { kernel } { replacement-missing-rparen }
+\__kernel_msg_new:nnnn { regex } { replacement-missing-rparen }
{ Missing~right~parenthesis~inserted~in~replacement~text. }
{
There~ \int_compare:nTF { #1 = 1 } { was } { were } ~ #1~
missing~right~
\int_compare:nTF { #1 = 1 } { parenthesis } { parentheses } .
}
-\__kernel_msg_new:nnnn { kernel } { backwards-quantifier }
+\__kernel_msg_new:nnn { regex } { submatch-too-big }
+ { Submatch~#1~used~but~regex~only~has~#2~group(s) }
+\__kernel_msg_new:nnnn { regex } { backwards-quantifier }
{ Quantifer~"{#1,#2}"~is~backwards. }
{ The~values~given~in~a~quantifier~must~be~in~order. }
-\__kernel_msg_new:nnn { kernel } { show-regex }
+\__kernel_msg_new:nnn { regex } { show }
{
>~Compiled~regex~
\tl_if_empty:nTF {#1} { variable~ #2 } { {#1} } :
@@ -26601,6 +27026,9 @@
\cs_generate_variant:Nn \box_ht:N { c }
\cs_generate_variant:Nn \box_dp:N { c }
\cs_generate_variant:Nn \box_wd:N { c }
+\cs_new_protected:Npn \box_ht_plus_dp:N #1
+ { \__box_dim_eval:n { \box_ht:N #1 + \box_dp:N #1 } }
+\cs_generate_variant:Nn \box_ht_plus_dp:N { c }
\cs_new_protected:Npn \box_set_dp:Nn #1#2
{
\tex_setbox:D #1 = \tex_copy:D #1
@@ -27891,23 +28319,34 @@
#4 \s__color_stop
}
}
+\tl_const:cn { c__color_export_comma-sep-cmyk_tl } { cmyk }
+\tl_const:cn { c__color_export_comma-sep-rgb_tl } { rgb }
\tl_const:Nn \c__color_export_HTML_tl { rgb }
\tl_const:cn { c__color_export_space-sep-cmyk_tl } { cmyk }
\tl_const:cn { c__color_export_space-sep-rgb_tl } { rgb }
-\cs_new_protected:cpx { __color_export_format_space-sep-cmyk:nnN } #1#2#3
- {
- \exp_not:N \__color_export:nnnNN { cmyk } {#1} {#2} #3
- \exp_not:c { __color_export_space-sep-cmyk:Nw }
- }
+\group_begin:
+ \cs_set_protected:Npn \__color_tmp:w #1#2
+ {
+ \cs_new_protected:cpx { __color_export_format_ #1 :nnN } ##1##2##3
+ {
+ \exp_not:N \__color_export:nnnNN {#2} {##1} {##2} ##3
+ \exp_not:c { __color_export_ #1 :Nw }
+ }
+ }
+ \__color_tmp:w { comma-sep-cmyk } { cmyk }
+ \__color_tmp:w { comma-sep-rgb } { rgb }
+ \__color_tmp:w { HTML } { rgb }
+ \__color_tmp:w { space-sep-cmyk } { cmyk }
+ \__color_tmp:w { space-sep-rgb } { rgb }
+
+\group_end:
+\cs_new_protected:cpn { __color_export_comma-sep-cmyk:Nw }
+ #1#2 ~ #3 ~ #4 ~ #5 \s__color_stop
+ { \tl_set:Nn #1 { #2 , #3 , #4 , #5 } }
\cs_new_protected:cpn { __color_export_space-sep-cmyk:Nw } #1#2 \s__color_stop
- { \tl_set:Nx #1 {#2} }
-\cs_new_protected:Npn \__color_export_format_HTML:nnN #1#2#3
- { \__color_export:nnnNN { rgb } {#1} {#2}#3 \__color_export_HTML:Nw }
-\cs_new_protected:cpx { __color_export_format_space-sep-rgb:nnN } #1#2#3
- {
- \exp_not:N \__color_export:nnnNN { rgb } {#1} {#2} #3
- \exp_not:c { __color_export_space-sep-rgb:Nw }
- }
+ { \tl_set:Nn #1 {#2} }
+\cs_new_protected:cpn { __color_export_comma-sep-rgb:Nw } #1#2 ~ #3 ~ #4 \s__color_stop
+ { \tl_set:Nx #1 { #2 , #3 , #4 } }
\cs_new_protected:Npn \__color_export_HTML:Nw #1#2 ~ #3 ~ #4 \s__color_stop
{
\tl_set:Nx #1
@@ -27924,7 +28363,7 @@
{ \int_to_Hex:n { \fp_to_int:n { #1 * 255 } } }
}
\cs_new_protected:cpn { __color_export_space-sep-rgb:Nw } #1#2 \s__color_stop
- { \tl_set:Nx #1 {#2} }
+ { \tl_set:Nn #1 {#2} }
\prop_new:N \l__color_internal_prop
\int_new:N \g__color_model_int
\tl_const:Nn \c__color_fallback_cmyk_tl { 0 ~ 0 ~ 0 ~ 1 }
@@ -27983,6 +28422,28 @@
}
}
}
+\cs_new_protected:Npn \__color_model_init:nnn #1#2#3
+ {
+ \int_gincr:N \g__color_model_int
+ \tl_const:cx { c__color_fallback_ #1 _tl }
+ { 1 \prg_replicate:nn { #2 - 1 } { ~ 1 } }
+ \clist_map_inline:nn { fill , stroke , select }
+ {
+ \cs_new_protected:cpx { __color_backend_ ##1 _ #1 :n } ####1
+ {
+ \exp_not:c { __color_backend_ ##1 _ #3 :nn }
+ { color \int_use:N \g__color_model_int } {####1}
+ }
+ }
+ \cs_new_protected:cpx { __color_model_ #1 _white: }
+ {
+ \prop_put:Nnn \exp_not:N \l__color_named_white_prop {#1}
+ { 0 \prg_replicate:nn { #2 - 1 } { ~ 0 } }
+ \exp_not:N \int_compare:nNnF { \tex_currentgrouplevel:D } = 0
+ { \group_insert_after:N \exp_not:c { __color_model_ #1 _ white: } }
+ }
+ \use:c { __color_model_ #1 _white: }
+ }
\cs_new_protected:Npn \__color_model_separation:n #1
{
\prop_get:NnNTF \l__color_internal_prop { name }
@@ -28032,31 +28493,15 @@
\cs_new_protected:Npn \__color_model_separation:w
#1 , #2 , #3 , #4 , #5 \s__color_stop #6#7#8
{
- \int_gincr:N \g__color_model_int
- \tl_const:cn { c__color_fallback_ #6 _tl } { 1 }
+ \__color_model_init:nnn {#6} { 1 } { separation }
\cs_new_eq:cN { __color_parse_mix_ #6 :nw } \__color_parse_mix_gray:nw
\cs_new:cpn { __color_parse_model_ #6 :w } ##1 , ##2 \s__color_stop
{ {#6} { \__color_parse_number:n {##1} } }
- \clist_map_inline:nn { fill , stroke , select }
- {
- \cs_new_protected:cpx { __color_backend_ ##1 _ #6 :n } ####1
- {
- \exp_not:c { __color_backend_ ##1 _ separation:nn }
- { color \int_use:N \g__color_model_int } {####1}
- }
- }
\use:c { __color_model_separation_ #8 :nnnnnn }
{#6} {#7} {#1} {#2} {#3} {#4}
\prop_gput:Nnn \g__color_alternative_model_prop {#6} {#8}
\prop_gput:Nnx \g__color_colorants_prop {#6}
{ \str_convert_pdfname:n {#7} }
- \cs_new_protected:cpx { __color_model_ #6 _white: }
- {
- \prop_put:Nnn \exp_not:N \l__color_named_white_prop {#6} { 0 }
- \exp_not:N \int_compare:nNnF { \tex_currentgrouplevel:D } = 0
- { \group_insert_after:N \exp_not:c { __color_model_ #6 _ white: } }
- }
- \use:c { __color_model_ #6 _white: }
}
\cs_new_protected:Npn \__color_model_separation_cmyk:nnnnnn #1#2#3#4#5#6
{
@@ -28202,28 +28647,10 @@
}
\cs_new_protected:Npn \__color_model_devicen:nnnn #1#2#3#4
{
- \int_gincr:N \g__color_model_int
- \tl_const:cx { c__color_fallback_ #4 _tl }
- { \prg_replicate:nn {#1} { 1 ~ } }
+ \__color_model_init:nnn {#4} {#1} { devicen }
\cs_if_exist_use:cF { __color_model_devicen_parse_ #1 :nn }
{ \__color_model_devicen_parse_generic:nn }
{#4} {#1}
- \clist_map_inline:nn { fill , stroke , select }
- {
- \cs_new_protected:cpx { __color_backend_ ##1 _ #4 :n } ####1
- {
- \exp_not:c { __color_backend_ ##1 _ devicen:nn }
- { color \int_use:N \g__color_model_int } {####1}
- }
- }
- \cs_new_protected:cpx { __color_model_ #4 _white: }
- {
- \prop_put:Nnn \exp_not:N \l__color_named_white_prop {#4}
- { \prg_replicate:nn {#1} { 0 ~ } }
- \exp_not:N \int_compare:nNnF { \tex_currentgrouplevel:D } = 0
- { \group_insert_after:N \exp_not:c { __color_model_ #4 _ white: } }
- }
- \use:c { __color_model_ #4 _white: }
\__color_model_devicen_init:nnn {#1} {#2} {#3}
\__color_model_devicen_convert:nnn {#4} {#2} {#3}
}
@@ -28535,7 +28962,7 @@
}
\cs_new_protected:Npn \color_show:n #1
{
- \msg_show:nnxxxx { LaTeX / color } { show }
+ \__kernel_msg_show:nnxxxx { color } { show }
{#1}
{
\__color_if_defined:nT {#1}
@@ -28827,7 +29254,7 @@
\coffin_if_exist:NTF #1
{ #2 }
{
- \__kernel_msg_error:nnx { kernel } { unknown-coffin }
+ \__kernel_msg_error:nnx { coffin } { unknown }
{ \token_to_str:N #1 }
}
}
@@ -29047,7 +29474,7 @@
\prop_get:cnNF
{ coffin ~ \__coffin_to_value:N #1 ~ poles } {#2} #3
{
- \__kernel_msg_error:nnxx { kernel } { unknown-coffin-pole }
+ \__kernel_msg_error:nnxx { coffin } { unknown-pole }
{ \exp_not:n {#2} } { \token_to_str:N #1 }
\tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } }
}
@@ -29205,7 +29632,7 @@
\l__coffin_pole_a_tl \l__coffin_pole_b_tl
\bool_if:NT \l__coffin_error_bool
{
- \__kernel_msg_error:nn { kernel } { no-pole-intersection }
+ \__kernel_msg_error:nn { coffin } { no-pole-intersection }
\dim_zero:N \l__coffin_x_dim
\dim_zero:N \l__coffin_y_dim
}
@@ -29969,16 +30396,16 @@
\box_set_eq:NN \l__coffin_display_coffin \l__coffin_aligned_coffin
}
\cs_new_protected:Npn \coffin_show_structure:N
- { \__coffin_show_structure:NN \msg_show:nnxxxx }
+ { \__coffin_show_structure:NN \__kernel_msg_show:nnxxxx }
\cs_generate_variant:Nn \coffin_show_structure:N { c }
\cs_new_protected:Npn \coffin_log_structure:N
- { \__coffin_show_structure:NN \msg_log:nnxxxx }
+ { \__coffin_show_structure:NN \__kernel_msg_log:nnxxxx }
\cs_generate_variant:Nn \coffin_log_structure:N { c }
\cs_new_protected:Npn \__coffin_show_structure:NN #1#2
{
\__coffin_if_exist:NT #2
{
- #1 { LaTeX / kernel } { show-coffin }
+ #1 { coffin } { show }
{ \token_to_str:N #2 }
{
\iow_newline: >~ ht ~=~ \dim_eval:n { \coffin_ht:N #2 }
@@ -29993,23 +30420,23 @@
{ }
}
}
-\__kernel_msg_new:nnnn { kernel } { no-pole-intersection }
+\__kernel_msg_new:nnnn { coffin } { no-pole-intersection }
{ No~intersection~between~coffin~poles. }
{
LaTeX~was~asked~to~find~the~intersection~between~two~poles,~
but~they~do~not~have~a~unique~meeting~point:~
the~value~(0pt,~0pt)~will~be~used.
}
-\__kernel_msg_new:nnnn { kernel } { unknown-coffin }
+\__kernel_msg_new:nnnn { coffin } { unknown }
{ Unknown~coffin~'#1'. }
{ The~coffin~'#1'~was~never~defined. }
-\__kernel_msg_new:nnnn { kernel } { unknown-coffin-pole }
+\__kernel_msg_new:nnnn { coffin } { unknown-pole }
{ Pole~'#1'~unknown~for~coffin~'#2'. }
{
LaTeX~was~asked~to~find~a~typesetting~pole~for~a~coffin,~
but~either~the~coffin~does~not~exist~or~the~pole~name~is~wrong.
}
-\__kernel_msg_new:nnn { kernel } { show-coffin }
+\__kernel_msg_new:nnn { coffin } { show }
{
Size~of~coffin~#1 : #2 \\
Poles~of~coffin~#1 : #3 .
@@ -30038,7 +30465,7 @@
\cs_set:Npn #1 ##1
{
\__kernel_msg_expandable_error:nnn
- { kernel } { luatex-required } { #1 }
+ { luatex } { luatex-required } { #1 }
}
}
\clist_map_inline:nn
@@ -30047,11 +30474,11 @@
\cs_set_protected:Npn #1 ##1
{
\__kernel_msg_error:nnn
- { kernel } { luatex-required } { #1 }
+ { luatex } { luatex-required } { #1 }
}
}
}
-\__kernel_msg_new:nnnn { kernel } { luatex-required }
+\__kernel_msg_new:nnnn { luatex } { luatex-required }
{ LuaTeX~engine~not~in~use!~Ignoring~#1. }
{
The~feature~you~are~using~is~only~available~
@@ -30674,7 +31101,7 @@
\__text_if_expandable:NTF #1
{
\token_if_eq_meaning:NNTF #1 \exp_not:n
- { \__text_expand_noexpand:w }
+ { \__text_expand_unexpanded:w }
{ \exp_after:wN \__text_expand_loop:w #1 }
}
{
@@ -30682,11 +31109,31 @@
\__text_expand_loop:w
}
}
-\cs_new:Npn \__text_expand_noexpand:w #1#
- { \__text_expand_noexpand:nn {#1} }
-\cs_new:Npn \__text_expand_noexpand:nn #1#2
+\cs_new:Npn \__text_expand_unexpanded:w
{
- #1 \__text_expand_store:n #1 {#2}
+ \exp_after:wN \__text_expand_unexpanded_test:w
+ \exp:w \exp_end_continue_f:w
+ }
+\cs_new:Npn \__text_expand_unexpanded_test:w #1 \q__text_recursion_stop
+ {
+ \tl_if_head_is_group:nTF {#1}
+ { \__text_expand_unexpanded:n }
+ {
+ \__text_expand_unexpanded:w
+ \tl_if_head_is_N_type:nT {#1} { \__text_expand_unexpanded:N }
+ }
+ #1 \q__text_recursion_stop
+ }
+\cs_new:Npn \__text_expand_unexpanded:N #1
+ {
+ \exp_after:wN \if_meaning:w \exp_not:N #1 #1
+ \else:
+ \exp_after:wN #1
+ \fi:
+ }
+\cs_new:Npn \__text_expand_unexpanded:n #1
+ {
+ \__text_expand_store:n {#1}
\__text_expand_loop:w
}
\cs_new_protected:Npn \text_declare_expand_equivalent:Nn #1#2
@@ -33109,6 +33556,113 @@
{ \seq_set_from_inline_x:Nnn #1 {#2} { #3 {##1} } }
\cs_new_protected:Npn \seq_gset_from_function:NnN #1#2#3
{ \seq_gset_from_inline_x:Nnn #1 {#2} { #3 {##1} } }
+\cs_new_eq:NN \__seq_int_eval:w \tex_numexpr:D
+\cs_new_protected:Npn \seq_set_item:Nnn #1#2#3
+ { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn }
+\cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
+ { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
+\cs_generate_variant:Nn \seq_set_item:Nnn { c }
+\cs_generate_variant:Nn \seq_gset_item:Nnn { c }
+\prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
+ { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
+\prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
+ { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
+\prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
+\prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
+\cs_new_protected:Npn \__seq_set_item:NnnNN #1#2#3
+ {
+ \tl_set:Nn \l__seq_internal_a_tl { \__seq_item:n {#3} }
+ \exp_args:Nff \__seq_set_item:nnNNNN
+ { \int_eval:n {#2} } { \seq_count:N #1 } #1 \use_none:nn
+ }
+\cs_new_protected:Npn \__seq_set_item:nnNNNN #1#2
+ {
+ \int_compare:nNnTF {#1} > 0
+ { \int_compare:nNnF {#1} > {#2} { \__seq_set_item:nNnnNNNN { #1 - 1 } } }
+ {
+ \int_compare:nNnF {#1} < {-#2}
+ {
+ \int_compare:nNnF {#1} = 0
+ { \__seq_set_item:nNnnNNNN { #2 + #1 } }
+ }
+ }
+ \__seq_set_item_false:nnNNNN {#1} {#2}
+ }
+\cs_new_protected:Npn \__seq_set_item_false:nnNNNN #1#2#3#4#5#6
+ {
+ #6
+ {
+ \__kernel_msg_error:nnxxx { seq } { item-too-large }
+ { \token_to_str:N #3 } {#2} {#1}
+ }
+ { \prg_return_false: }
+ }
+\__kernel_msg_new:nnnn { seq } { item-too-large }
+ { Sequence~'#1'~does~not~have~an~item~#3 }
+ {
+ An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
+ of~'#1',~but~this~
+ \int_compare:nTF { #3 = 0 }
+ { position~does~not~exist. }
+ { sequence~only~has~#2~item \int_compare:nF { #2 = 1 } {s}. }
+ }
+\cs_new_protected:Npn \__seq_set_item:nNnnNNNN #1#2#3#4#5#6#7#8
+ {
+ #7 #5
+ {
+ \s__seq
+ \exp_after:wN \__seq_set_item:wn
+ \int_value:w \__seq_int_eval:w #1
+ #5 \s__seq_stop #6
+ }
+ #8 { } { \prg_return_true: }
+ }
+\cs_new:Npn \__seq_set_item:wn #1 \__seq_item:n #2
+ {
+ \if_meaning:w 0 #1 \__seq_set_item_end:w \fi:
+ \exp_not:n { \__seq_item:n {#2} }
+ \exp_after:wN \__seq_set_item:wn
+ \int_value:w \__seq_int_eval:w #1 - 1 \s__seq
+ }
+\cs_new:Npn \__seq_set_item_end:w #1 \exp_not:n #2 #3 \s__seq #4 \s__seq_stop #5
+ {
+ #1
+ \exp_not:o \l__seq_internal_a_tl
+ \exp_not:n {#4}
+ #5 #2
+ }
+\cs_new_protected:Npn \seq_pop_item:NnN #1#2#3
+ { \seq_pop_item:NnNTF #1 {#2} #3 { } { } }
+\cs_new_protected:Npn \seq_gpop_item:NnN #1#2#3
+ { \seq_gpop_item:NnNTF #1 {#2} #3 { } { } }
+\cs_generate_variant:Nn \seq_pop_item:NnN { c }
+\cs_generate_variant:Nn \seq_gpop_item:NnN { c }
+\prg_new_protected_conditional:Npnn \seq_pop_item:NnN #1#2#3 { TF , T , F }
+ { \__seq_pop_item:NnNN #1 {#2} #3 \__kernel_tl_set:Nx }
+\prg_new_protected_conditional:Npnn \seq_gpop_item:NnN #1#2#3 { TF , T , F }
+ { \__seq_pop_item:NnNN #1 {#2} #3 \__kernel_tl_gset:Nx }
+\prg_generate_conditional_variant:Nnn \seq_pop_item:NnN { c } { TF , T , F }
+\prg_generate_conditional_variant:Nnn \seq_gpop_item:NnN { c } { TF , T , F }
+\cs_new_protected:Npn \__seq_pop_item:NnNN #1#2#3#4
+ {
+ \tl_clear:N \l__seq_internal_a_tl
+ \tl_set:Nn \l__seq_internal_b_tl { \__kernel_tl_set:Nx #3 }
+ \exp_args:Nff \__seq_set_item:nnNNNN
+ { \int_eval:n {#2} } { \seq_count:N #1 }
+ #1 \__seq_pop_item_aux:w #4 \__seq_pop_item:nn
+ }
+\cs_new_protected:Npn \__seq_pop_item:nn #1#2
+ {
+ \if_meaning:w \prg_return_false: #2
+ \l__seq_internal_b_tl { \exp_not:N \q_no_value }
+ \fi:
+ #2
+ }
+\cs_new:Npn \__seq_pop_item_aux:w \__seq_item:n #1
+ {
+ \if_false: { \fi: }
+ \l__seq_internal_b_tl { \if_false: } \fi: \exp_not:n {#1}
+ }
\str_const:Nx \c_sys_engine_version_str
{
\str_case:on \c_sys_engine_str
@@ -33166,18 +33720,18 @@
{
\sys_if_shell:TF
{ \exp_args:No \__ior_shell_open:nN { \tl_to_str:n {#2} } #1 }
- { \__kernel_msg_error:nn { kernel } { pipe-failed } }
+ { \__kernel_msg_error:nn { ior } { pipe-failed } }
}
\cs_new_protected:Npn \__ior_shell_open:nN #1#2
{
\tl_if_in:nnTF {#1} { " }
{
\__kernel_msg_error:nnx
- { kernel } { quote-in-shell } {#1}
+ { ior } { quote-in-shell } {#1}
}
{ \__kernel_ior_open:Nn #2 { |#1 } }
}
-\__kernel_msg_new:nnnn { kernel } { pipe-failed }
+\__kernel_msg_new:nnnn { ior } { pipe-failed }
{ Cannot~run~piped~system~commands. }
{
LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
@@ -33450,7 +34004,7 @@
\__kernel_if_debug:TF
{
\exp_not:N \__kernel_msg_warning:nnxxx
- { kernel } { deprecated-command }
+ { deprecation } { deprecated-command }
{#1}
{ \token_to_str:N #3 }
{ \tl_to_str:n {#2} }
@@ -33478,7 +34032,7 @@
\cs_if_eq:NNTF #3 \cs_gset_protected:Npn
{ \exp_not:N \__kernel_msg_error:nnnnnn }
{ \exp_not:N \__kernel_msg_expandable_error:nnnnnn }
- { kernel } { deprecated-command }
+ { deprecation } { deprecated-command }
{#1}
{ \token_to_str:N #4 }
{ \tl_to_str:n {#2} }
@@ -33491,14 +34045,14 @@
\tex_protected:D \tex_outer:D \tex_edef:D #1
{
\exp_not:N \__kernel_msg_expandable_error:nnnnn
- { kernel } { deprecated-command }
+ { deprecation } { deprecated-command }
{ \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
\exp_not:N \__kernel_msg_error:nnxxx
- { kernel } { deprecated-command }
+ { deprecation } { deprecated-command }
{ \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
}
}
-\__kernel_msg_new:nnn { kernel } { deprecated-command }
+\__kernel_msg_new:nnn { deprecation } { deprecated-command }
{
\tl_if_blank:nF {#3} { Use~ \tl_trim_spaces:n {#3} ~not~ }
#2~deprecated~on~#1.