summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-12-08 21:36:03 +0000
committerKarl Berry <karl@freefriends.org>2023-12-08 21:36:03 +0000
commit801627f1bc8e15dbaf9dabf3eb66d5926b77171d (patch)
tree4f96944a520e450c5710b54b6e2ab3dd17289957 /Master/texmf-dist/tex/latex/l3kernel
parent6d3705c4cb01ac51e8b9224ceef15066cf850536 (diff)
l3kernel (8dec23)
git-svn-id: svn://tug.org/texlive/trunk@69066 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex700
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx6
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty6
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3debug.def11
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3doc.cls160
6 files changed, 505 insertions, 382 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 65ebd2e70b4..5900dfffb43 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -43,6 +43,7 @@
%% l3fp-symbolic.dtx (with options: `package')
%% l3fp-functions.dtx (with options: `package')
%% l3fparray.dtx (with options: `package')
+%% l3bitset.dtx (with options: `package')
%% l3cctab.dtx (with options: `package')
%% l3sort.dtx (with options: `package')
%% l3str-convert.dtx (with options: `package')
@@ -75,7 +76,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-11-09}%
+\def\ExplFileDate{2023-12-08}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -3883,13 +3884,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\prg_generate_conditional_variant:Nnn \tl_if_eq:nn
- { nV , ne , nx , e , ee , x , xx }
+ { nV , ne , nx , V, e , ee , x , xx }
{ TF , T , F }
\cs_new_protected:Npn \tl_if_in:NnT { \exp_args:No \tl_if_in:nnT }
\cs_new_protected:Npn \tl_if_in:NnF { \exp_args:No \tl_if_in:nnF }
\cs_new_protected:Npn \tl_if_in:NnTF { \exp_args:No \tl_if_in:nnTF }
\prg_generate_conditional_variant:Nnn \tl_if_in:Nn
- { NV , c , cV } { T , F , TF }
+ { NV , No , c , cV , co } { T , F , TF }
\prg_new_protected_conditional:Npnn \tl_if_in:nn #1#2 { T , F , TF }
{
\scan_stop:
@@ -3900,7 +3901,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_false: } \fi:
}
\prg_generate_conditional_variant:Nnn \tl_if_in:nn
- { V , o , nV , no } { T , F , TF }
+ { V , VV , o , oo , nV , no } { T , F , TF }
\cs_set_protected:Npn \__tl_tmp:w #1
{
\prg_new_conditional:Npnn \tl_if_novalue:n ##1
@@ -4043,7 +4044,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ 0 \tl_map_function:NN #1 \__tl_count:n }
}
\cs_new:Npn \__tl_count:n #1 { + 1 }
-\cs_generate_variant:Nn \tl_count:n { V , o }
+\cs_generate_variant:Nn \tl_count:n { V , v , e , o }
\cs_generate_variant:Nn \tl_count:N { c }
\cs_new:Npn \tl_count_tokens:n #1
{
@@ -4167,7 +4168,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\prg_generate_conditional_variant:Nnn \tl_if_head_eq_charcode:nN
- { f } { p , TF , T , F }
+ { V , e , f } { p , TF , T , F }
\prg_new_conditional:Npnn \tl_if_head_eq_catcode:nN #1 #2 { p , T , F , TF }
{
\if_catcode:w
@@ -4185,7 +4186,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\prg_generate_conditional_variant:Nnn \tl_if_head_eq_catcode:nN
- { o } { p , TF , T , F }
+ { V , e , o } { p , TF , T , F }
\prg_new_conditional:Npnn \tl_if_head_eq_meaning:nN #1#2 { p , T , F , TF }
{
\tl_if_head_is_N_type:nTF { #1 ? }
@@ -4193,6 +4194,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__tl_if_head_eq_meaning_special:nN
{#1} #2
}
+\prg_generate_conditional_variant:Nnn \tl_if_head_eq_meaning:nN
+ { V , e } { p , TF , T , F }
\cs_new:Npn \__tl_if_head_eq_meaning_normal:nN #1 #2
{
\exp_after:wN \if_meaning:w
@@ -4691,31 +4694,42 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_eq:NN \str_gconcat:NNN \tl_gconcat:NNN
\cs_generate_variant:Nn \str_concat:NNN { ccc }
\cs_generate_variant:Nn \str_gconcat:NNN { ccc }
-\group_begin:
- \cs_set_protected:Npn \__str_tmp:n #1
- {
- \tl_if_blank:nF {#1}
- {
- \cs_new_protected:cpe { str_ #1 :Nn } ##1##2
- {
- \exp_not:c { tl_ #1 :Ne } ##1
- { \exp_not:N \tl_to_str:n {##2} }
- }
- \cs_generate_variant:cn { str_ #1 :Nn }
- { NV , Ne , Nx , cn , cV , ce , cx }
- \__str_tmp:n
- }
- }
- \__str_tmp:n
- { set }
- { gset }
- { const }
- { put_left }
- { gput_left }
- { put_right }
- { gput_right }
- { }
-\group_end:
+\cs_new_protected:Npn \str_set:Nn #1#2
+ { \__kernel_tl_set:Ne #1 { \__kernel_tl_to_str:w {#2} } }
+\cs_gset_protected:Npn \str_gset:Nn #1#2
+ { \__kernel_tl_gset:Ne #1 { \__kernel_tl_to_str:w {#2} } }
+\cs_new_protected:Npn \str_const:Nn #1#2
+ {
+ \__kernel_chk_if_free_cs:N #1
+ \cs_gset_nopar:Npe #1 { \__kernel_tl_to_str:w {#2} }
+ }
+\cs_new_protected:Npn \str_put_left:Nn #1#2
+ {
+ \__kernel_tl_set:Ne #1
+ { \__kernel_tl_to_str:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
+\cs_new_protected:Npn \str_gput_left:Nn #1#2
+ {
+ \__kernel_tl_gset:Ne #1
+ { \__kernel_tl_to_str:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
+\cs_new_protected:Npn \str_put_right:Nn #1#2
+ {
+ \__kernel_tl_set:Ne #1
+ { \__kernel_exp_not:w \exp_after:wN {#1} \__kernel_tl_to_str:w {#2} }
+ }
+\cs_new_protected:Npn \str_gput_right:Nn #1#2
+ {
+ \__kernel_tl_gset:Ne #1
+ { \__kernel_exp_not:w \exp_after:wN {#1} \__kernel_tl_to_str:w {#2} }
+ }
+\cs_generate_variant:Nn \str_set:Nn { NV , Ne , Nx , c , cV , ce , cx }
+\cs_generate_variant:Nn \str_gset:Nn { NV , Ne , Nx , c , cV , ce , cx }
+\cs_generate_variant:Nn \str_const:Nn { NV , Ne , Nx , c , cV , ce , cx }
+\cs_generate_variant:Nn \str_put_left:Nn { NV , Ne , Nx , c , cV , ce , cx }
+\cs_generate_variant:Nn \str_gput_left:Nn { NV , Ne , Nx , c , cV , ce , cx }
+\cs_generate_variant:Nn \str_put_right:Nn { NV , Ne , Nx , c , cV , ce , cx }
+\cs_generate_variant:Nn \str_gput_right:Nn { NV , Ne , Nx , c , cV , ce , cx }
\cs_new_protected:Npn \str_replace_once:Nnn
{ \__str_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Ne }
\cs_new_protected:Npn \str_greplace_once:Nnn
@@ -5388,6 +5402,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\str_const:Ne \c_tilde_str { \cs_to_str:N \~ }
\str_const:Ne \c_underscore_str { \cs_to_str:N \_ }
\str_const:Ne \c_zero_str { 0 }
+\cs_new_eq:NN \c_empty_str \c_empty_tl
\str_new:N \l_tmpa_str
\str_new:N \l_tmpb_str
\str_new:N \g_tmpa_str
@@ -7138,9 +7153,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\prg_generate_conditional_variant:Nnn \bool_if:N { c } { p , T , F , TF }
-\cs_new:Npn \bool_to_str:N #1 { \bool_if:NTF #1 { true } { false } }
+\cs_new:Npe \bool_to_str:N #1
+ {
+ \exp_not:N \bool_if:NTF #1
+ { \tl_to_str:n { true } } { \tl_to_str:n { false } }
+ }
\cs_generate_variant:Nn \bool_to_str:N { c }
-\cs_new:Npn \bool_to_str:n #1 { \bool_if:nTF {#1} { true } { false } }
+\cs_new:Npe \bool_to_str:n #1
+ {
+ \exp_not:N \bool_if:nTF {#1}
+ { \tl_to_str:n { true } } { \tl_to_str:n { false } }
+ }
\cs_new_protected:Npn \bool_show:n
{ \__kernel_msg_show_eval:Nn \bool_to_str:n }
\cs_new_protected:Npn \bool_log:n
@@ -7707,7 +7730,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
}
\cs_generate_variant:Nn \sys_shell_shipout:n { e , x }
-\cs_new_protected:Npn \sys_everyjob:
+\cs_new_protected:Npn \__kernel_sys_everyjob:
{
\tl_use:N \g__sys_everyjob_tl
\tl_gclear:N \g__sys_everyjob_tl
@@ -7815,7 +7838,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \cs_gset_eq:NN \g_file_curr_name_str \tex_jobname:D }
\cs_new_protected:Npn \sys_finalise:
{
- \sys_everyjob:
+ \__kernel_sys_everyjob:
\tl_use:N \g__sys_finalise_tl
\tl_gclear:N \g__sys_finalise_tl
}
@@ -8780,125 +8803,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\fi:
\group_end:
-\cs_new:Npn \char_lowercase:N
- { \__char_change_case:nN { lowercase } }
-\cs_new:Npn \char_uppercase:N
- { \__char_change_case:nN { uppercase } }
-\cs_new:Npn \char_titlecase:N
- { \__char_change_case:nN { titlecase } }
-\cs_new:Npn \char_foldcase:N
- { \__char_change_case:nN { casefold } }
-\cs_new:Npn \__char_change_case:nN #1#2
- {
- \int_compare:nNnTF {`#2} = { `\ }
- { ~ }
- {
- \exp_args:Ne \__char_change_case_auxi:nN
- { \__kernel_codepoint_case:nn {#1} {`#2} } #2
- }
- }
-\cs_new:Npn \__char_change_case_auxi:nN #1#2
- { \use:e { \__char_change_case:nnnN #1 #2 } }
-\cs_new:Npn \__char_change_case:nnnN #1#2#3#4
- {
- \int_compare:nNnTF {#1} = {`#4}
- { \exp_not:n {#4} }
- {
- \__char_change_case_auxii:nN {#1} {#4}
- \tl_if_blank:nF {#2}
- {
- \__char_change_case_auxii:nN {#2} {#4}
- \tl_if_blank:nF {#3}
- { \__char_change_case_auxii:nN {#3} {#4} }
- }
- }
- }
-\cs_new:Npn \__char_change_case_auxii:nN #1#2
- {
- \char_generate:nn {#1}
- { \__char_change_case_catcode:N #2 }
- }
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_gset:Npn \__char_change_case_auxii:nN #1#2
- {
- \int_compare:nNnTF {#1} < { "80 }
- {
- \char_generate:nn {#1}
- { \__char_change_case_catcode:N #2 }
- }
- { \exp_not:n {#2} }
- }
- }
-\cs_new:Npn \__char_change_case_catcode:N #1
- {
- \if_catcode:w \exp_not:N #1 \c_math_toggle_token
- 3
- \else:
- \if_catcode:w \exp_not:N #1 \c_alignment_token
- 4
- \else:
- \if_catcode:w \exp_not:N #1 \c_math_superscript_token
- 7
- \else:
- \if_catcode:w \exp_not:N #1 \c_math_subscript_token
- 8
- \else:
- \if_catcode:w \exp_not:N #1 \c_space_token
- 10
- \else:
- \if_catcode:w \exp_not:N #1 \c_catcode_letter_token
- 11
- \else:
- \if_catcode:w \exp_not:N #1 \c_catcode_other_token
- 12
- \else:
- 13
- \fi:
- \fi:
- \fi:
- \fi:
- \fi:
- \fi:
- \fi:
- }
-\cs_new:Npn \char_str_lowercase:N
- { \__char_str_change_case:nN { lowercase } }
-\cs_new:Npn \char_str_uppercase:N
- { \__char_str_change_case:nN { uppercase } }
-\cs_new:Npn \char_str_titlecase:N
- { \__char_str_change_case:nN { titlecase } }
-\cs_new:Npn \char_str_foldcase:N
- { \__char_str_change_case:nN { casefold } }
-\cs_new:Npn \__char_str_change_case:nN #1#2
- {
- \int_compare:nNnTF {`#2} = { `\ }
- { ~ }
- {
- \exp_args:Ne \__char_str_change_case_aux:nN
- { \__kernel_codepoint_case:nn {#1} {`#2} } #2
- }
- }
-\cs_new:Npn \__char_str_change_case_aux:nN #1#2
- { \use:e { \__char_str_change_case:nnnN #1 #2 } }
-\cs_new:Npn \__char_str_change_case:nnnN #1#2#3#4
- {
- \int_compare:nNnTF {#1} = {`#4}
- { \tl_to_str:n {#4} }
- {
- \__char_str_change_case:n {#1}
- \tl_if_blank:nF {#2}
- {
- \__char_str_change_case:n {#2}
- \tl_if_blank:nF {#3}
- { \__char_str_change_case:n {#3} }
- }
- }
- }
-\cs_new:Npn \__char_str_change_case:n #1
- { \char_generate:nn {#1} { 12 } }
\group_begin:
\char_set_catcode_active:N *
\char_set_lccode:nn { `* } { `\ }
@@ -11523,8 +11427,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__iow_wrap_trim_aux:w ##1 \s__iow_mark ##2 \s__iow_stop {##1}
}
\exp_args:NV \__iow_tmp:w \c_catcode_other_space_tl
-\cs_new_eq:NN \iow_shipout_x:Nn \iow_shipout_e:Nn
-\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx , c, cx }
\tl_new:N \l__file_internal_tl
\str_new:N \g_file_curr_dir_str
\str_new:N \g_file_curr_ext_str
@@ -14377,22 +14279,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\prop_gput:Nnn \g_msg_module_name_prop { keys } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { keys } { }
-\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:N } #1
- { \__keys_variable_set:NnnN #1 { str } { } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:c } #1
- { \__keys_variable_set:cnnN {#1} { str } { } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:N } #1
- { \__keys_variable_set:NnnN #1 { str } { g } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:c } #1
- { \__keys_variable_set:cnnN {#1} { str } { g } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:N } #1
- { \__keys_variable_set:NnnN #1 { tl } { } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:c } #1
- { \__keys_variable_set:cnnN {#1} { tl } { } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:N } #1
- { \__keys_variable_set:NnnN #1 { tl } { g } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:c } #1
- { \__keys_variable_set:cnnN {#1} { tl } { g } x }
%% File: l3intarray.dtx
\msg_new:nnn { kernel } { negative-array-size }
{ Size~of~array~may~not~be~negative:~#1 }
@@ -21589,6 +21475,220 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_array_item_normal:w #1 #2#3#4#5 #6 ; #7 ; #8 ; #9
{ #9 \s__fp \__fp_chk:w 1 #1 {#8} #7 {#2#3#4#5} {#6} ; }
+%% File: l3bitset.dtx
+\cs_if_exist:NT \@expl@finalise@setup@@
+ {
+ \tl_gput_right:Nn \@expl@finalise@setup@@
+ { \disable@package@load { l3bitset } { } }
+ }
+\cs_new_protected:Npn \bitset_new:N #1
+ {
+ \__kernel_chk_if_free_cs:N #1
+ \cs_gset_eq:NN #1 \c_zero_str
+ \prop_new:c { g__bitset_ \cs_to_str:N #1 _name_prop }
+ }
+
+\cs_new_protected:Npn \bitset_new:Nn #1 #2
+ {
+ \__kernel_chk_if_free_cs:N #1
+ \cs_gset_eq:NN #1 \c_zero_str
+ \prop_new:c { g__bitset_ \cs_to_str:N #1 _name_prop }
+ \prop_gset_from_keyval:cn
+ { g__bitset_ \cs_to_str:N #1 _name_prop }
+ {#2}
+ }
+\cs_generate_variant:Nn \bitset_new:N { c }
+\prop_new:N \l__bitset_tmp_prop
+\cs_new_protected:Npn \bitset_addto_named_index:Nn #1#2
+ {
+ \prop_set_from_keyval:Nn \l__bitset_tmp_prop {#2}
+ \prop_map_inline:Nn \l__bitset_tmp_prop
+ {
+ \prop_gput:cnn
+ { g__bitset_ \cs_to_str:N #1 _name_prop }
+ {##1}
+ {##2}
+ }
+ }
+\prg_new_eq_conditional:NNn
+ \bitset_if_exist:N \str_if_exist:N { p , T , F , TF }
+\prg_new_eq_conditional:NNn
+ \bitset_if_exist:c \str_if_exist:c
+ { p , T , F , TF }
+\cs_new_protected:Npn \__bitset_set_true:Nn #1#2
+ { \__bitset_set:NNnN \str_set:Ne #1 {#2} 1 }
+\cs_new_protected:Npn \__bitset_gset_true:Nn #1#2
+ { \__bitset_set:NNnN \str_gset:Ne #1 {#2} 1 }
+\cs_new_protected:Npn \__bitset_set_false:Nn #1#2
+ { \__bitset_set:NNnN \str_set:Ne #1 {#2} 0 }
+\cs_new_protected:Npn \__bitset_gset_false:Nn #1#2
+ { \__bitset_set:NNnN \str_gset:Ne #1 {#2} 0 }
+\cs_new_protected:Npn \__bitset_set:NNnN #1#2#3#4
+ {
+ \int_compare:nNnT {#3} > { 0 }
+ {
+ \int_compare:nNnTF { \str_count:N #2 } < {#3}
+ {
+ #1 #2
+ {
+ #4
+ \prg_replicate:nn { #3 - \str_count:N #2 - 1 } { 0 }
+ #2
+ }
+ }
+ {
+ #1 #2
+ {
+ \str_range:Nnn #2 { 1 } { -1 - (#3) }
+ #4
+ \str_range:Nnn #2 { 1 - (#3) } { -1 }
+ }
+ }
+ }
+ }
+\int_new:N \l__bitset_internal_int
+\prg_new_protected_conditional:Npnn \__bitset_test_digits:n #1 { TF }
+ {
+ \tex_afterassignment:D \__bitset_test_digits:w
+ \l__bitset_internal_int = 0 \tl_trim_spaces_apply:nN {#1} \tl_to_str:n
+ \__bitset_test_digits_end:
+ \use_i:nnn \if_false:
+ \__bitset_test_digits_end:
+ \if_int_compare:w \c_zero_int < \l__bitset_internal_int
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\cs_new_eq:NN \__bitset_test_digits_end: \exp_stop_f:
+\cs_new_protected:Npn \__bitset_test_digits:w #1 \__bitset_test_digits_end: { }
+\cs_new_protected:Npn \bitset_set_true:Nn #1#2
+ { \__bitset_set:NNn \__bitset_set_true:Nn #1 {#2} }
+\cs_new_protected:Npn \bitset_gset_true:Nn #1#2
+ { \__bitset_set:NNn \__bitset_gset_true:Nn #1 {#2} }
+\cs_new_protected:Npn \bitset_set_false:Nn #1#2
+ { \__bitset_set:NNn \__bitset_set_false:Nn #1 {#2} }
+\cs_new_protected:Npn \bitset_gset_false:Nn #1#2
+ { \__bitset_set:NNn \__bitset_gset_false:Nn #1 {#2} }
+\cs_new_protected:Npn \__bitset_set:NNn #1#2#3
+ {
+ \prop_if_in:cnTF { g__bitset_ \cs_to_str:N #2 _name_prop } {#3}
+ {
+ #1 #2
+ {
+ \prop_item:cn { g__bitset_ \cs_to_str:N #2 _name_prop } {#3}
+ }
+ }
+ {
+ \__bitset_test_digits:nTF {#3}
+ {
+ #1 #2 {#3}
+ \prop_gput:cnn { g__bitset_ \cs_to_str:N #2 _name_prop } {#3} {#3}
+ }
+ {
+ \msg_warning:nnee { bitset } { unknown-name }
+ { \token_to_str:N #2 }
+ { \tl_to_str:n {#3} }
+ }
+ }
+ }
+\cs_generate_variant:Nn \bitset_set_true:Nn { c }
+\cs_generate_variant:Nn \bitset_gset_true:Nn { c }
+\cs_generate_variant:Nn \bitset_set_false:Nn { c }
+\cs_generate_variant:Nn \bitset_gset_false:Nn { c }
+\cs_new_protected:Npn \bitset_clear:N #1
+ {
+ \str_set_eq:NN #1 \c_zero_str
+ }
+\cs_new_protected:Npn \bitset_gclear:N #1
+ {
+ \str_gset_eq:NN #1 \c_zero_str
+ }
+\cs_generate_variant:Nn \bitset_clear:N { c }
+\cs_generate_variant:Nn \bitset_gclear:N { c }
+\cs_new:Npn \bitset_to_arabic:N #1
+ {
+ \int_compare:nNnTF { \str_count:N #1 } < { 32 }
+ { \exp_args:No \int_from_bin:n {#1} }
+ {
+ \exp_after:wN \__bitset_to_int:nN \exp_after:wN 0
+ #1 \q_recursion_tail \q_recursion_stop
+ }
+ }
+
+\cs_new:Npn \__bitset_to_int:nN #1#2
+ {
+ \quark_if_recursion_tail_stop_do:Nn #2 {#1}
+ \exp_args:Nf \__bitset_to_int:nN { \fp_eval:n { #1 * 2 + #2 } }
+ }
+
+\cs_new:Npn \bitset_to_bin:N #1
+ {
+ #1
+ }
+\cs_generate_variant:Nn \bitset_to_arabic:N { c }
+\cs_generate_variant:Nn \bitset_to_bin:N { c }
+\cs_new:Npn \bitset_item:Nn #1#2
+ {
+ \prop_if_in:cnTF { g__bitset_ \cs_to_str:N #1 _name_prop } {#2}
+ {
+ \int_eval:n
+ {
+ \str_item:Nn #1
+ { 0 - ( \prop_item:cn { g__bitset_ \cs_to_str:N #1 _name_prop } {#2} ) }
+ +0
+ }
+ }
+ {
+ 0
+ }
+ }
+\cs_generate_variant:Nn \bitset_item:Nn { c }
+\cs_new_protected:Npn \bitset_show:N { \__bitset_show:NN \msg_show:nneeee }
+\cs_generate_variant:Nn \bitset_show:N { c }
+\cs_new_protected:Npn \bitset_log:N { \__bitset_show:NN \msg_log:nneeee }
+\cs_generate_variant:Nn \bitset_log:N { c }
+\cs_new_protected:Npn \bitset_show_named_index:N { \__bitset_show_named_index:NN \msg_show:nneeee }
+\cs_generate_variant:Nn \bitset_show_named_index:N { c }
+\cs_new_protected:Npn \__bitset_show:NN #1#2
+ {
+ \__kernel_chk_defined:NT #2
+ {
+ #1 { bitset } { show }
+ { \token_to_str:N #2 }
+ { \bitset_to_bin:N #2 }
+ { \bitset_to_arabic:N #2 }
+ { }
+ }
+ }
+\cs_new_protected:Npn \__bitset_show_named_index:NN #1#2
+ {
+ \__kernel_chk_defined:NT #2
+ {
+ #1 { bitset } { show-names }
+ { \token_to_str:N #2 }
+ { \prop_map_function:cN { g__bitset_ \cs_to_str:N #2 _name_prop } \msg_show_item:nn }
+ { }
+ { }
+ }
+ }
+ \msg_new:nnn { bitset } { show }
+ {
+ The~bitset~#1~has~the~representation: \\
+ >~binary:~#2 \\
+ >~arabic:~#3 .
+ }
+\msg_new:nnn { bitset } { show-names }
+ {
+ The~bitset~#1~
+ \tl_if_empty:nTF {#2}
+ { knows~no~names~yet \\>~ . }
+ { knows~the~name/index~pairs~(without~outer~braces): #2 . }
+ }
+\msg_new:nnn { bitset } { unknown-name }
+ { The~name~'#2'~is~unknown~for~bitset~\tl_to_str:n {#1} }
+\prop_gput:Nnn \g_msg_module_name_prop { bitset } { LaTeX }
+\prop_gput:Nnn \g_msg_module_type_prop { bitset } { }
%% File: l3cctab.dtx
\seq_new:N \g__cctab_stack_seq
\seq_new:N \g__cctab_unused_seq
@@ -22442,8 +22542,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prop_gput:Nnn \g__str_alias_prop { default } { utf8 }
}
\bool_new:N \g__str_error_bool
-\flag_new:n { str_byte }
-\flag_new:n { str_error }
+\flag_new:n { __str_byte }
+\flag_new:n { __str_error }
\prg_new_conditional:Npnn \__str_if_contains_char:Nn #1#2 { T , TF }
{
\exp_after:wN \__str_if_contains_char_aux:nn \exp_after:wN {#1} {#2}
@@ -22618,6 +22718,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ encode } { escape }
\use_ii_i:nn
\__str_convert_encode_:
+ \__kernel_tl_gset:Ne \g__str_result_tl
+ { \tl_to_str:V \g__str_result_tl }
\group_end:
#2 #3 \g__str_result_tl
}
@@ -22720,7 +22822,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_int_compare:w `#1 < 256 \exp_stop_f:
#1
\else:
- \flag_raise:n { str_byte }
+ \flag_raise:n { __str_byte }
\fi:
\__str_filter_bytes_aux:N
}
@@ -22734,10 +22836,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\cs_new_protected:Npn \__str_convert_unescape_:
{
- \flag_clear:n { str_byte }
+ \flag_clear:n { __str_byte }
\__kernel_tl_gset:Ne \g__str_result_tl
{ \exp_args:No \__str_filter_bytes:n \g__str_result_tl }
- \__str_if_flag_error:nne { str_byte } { non-byte } { bytes }
+ \__str_if_flag_error:nne { __str_byte } { non-byte } { bytes }
}
}
{ \cs_new_protected:Npn \__str_convert_unescape_: { } }
@@ -22762,15 +22864,15 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\cs_new_protected:Npn \__str_convert_encode_:
{
- \flag_clear:n { str_error }
+ \flag_clear:n { __str_error }
\__str_convert_gmap_internal:N \__str_encode_native_char:n
- \__str_if_flag_error:nne { str_error }
+ \__str_if_flag_error:nne { __str_error }
{ native-overflow } { }
}
\cs_new:Npn \__str_encode_native_char:n #1
{
\if_int_compare:w #1 > \c__str_max_byte_int
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
?
\else:
\char_generate:nn {#1} {12}
@@ -22856,9 +22958,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_not:N \__str_decode_eight_bit_aux:Nn
\exp_not:c { g__str_decode_#1_intarray }
}
- \flag_clear:n { str_error }
+ \flag_clear:n { __str_error }
\__str_convert_gmap:N \__str_tmp:w
- \__str_if_flag_error:nne { str_error } { decode-8-bit } {#1}
+ \__str_if_flag_error:nne { __str_error } { decode-8-bit } {#1}
}
\cs_new:Npn \__str_decode_eight_bit_aux:Nn #1#2
{
@@ -22870,7 +22972,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__str_decode_eight_bit_aux:n #1
{
\if_int_compare:w #1 < \c_zero_int
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
\int_value:w \c__str_replacement_char_int
\else:
#1
@@ -22885,9 +22987,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_not:c { g__str_encode_#1_intarray }
\exp_not:c { g__str_decode_#1_intarray }
}
- \flag_clear:n { str_error }
+ \flag_clear:n { __str_error }
\__str_convert_gmap_internal:N \__str_tmp:w
- \__str_if_flag_error:nne { str_error } { encode-8-bit } {#1}
+ \__str_if_flag_error:nne { __str_error } { encode-8-bit } {#1}
}
\cs_new:Npn \__str_encode_eight_bit_aux:NNn #1#2#3
{
@@ -22903,7 +23005,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\int_compare:nNnTF { \intarray_item:Nn #3 { 1 + #1 } } = {#2}
{ \__str_output_byte:n {#1} }
- { \flag_raise:n { str_error } }
+ { \flag_raise:n { __str_error } }
}
\msg_new:nnn { str } { unknown-esc }
{ Escaping~scheme~'#1'~(filtered:~'#2')~unknown. }
@@ -22914,7 +23016,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
Since~native~strings~do~not~consist~in~bytes,~
none~of~the~escaping~methods~make~sense.~
- The~specified~escaping,~'#1',~will be ignored.
+ The~specified~escaping,~'#1',~will~be~ignored.
}
\msg_new:nnn { str } { file-not-found }
{ File~'l3str-#1.def'~not~found. }
@@ -22954,7 +23056,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \__str_convert_unescape_hex:
{
\group_begin:
- \flag_clear:n { str_error }
+ \flag_clear:n { __str_error }
\int_set:Nn \tex_escapechar:D { 92 }
\__kernel_tl_gset:Ne \g__str_result_tl
{
@@ -22965,7 +23067,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_break_point:
\__str_output_end:
}
- \__str_if_flag_error:nne { str_error } { unescape-hex } { }
+ \__str_if_flag_error:nne { __str_error } { unescape-hex } { }
\group_end:
}
\cs_new:Npn \__str_unescape_hex_auxi:N #1
@@ -22974,7 +23076,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__str_hexadecimal_use:NTF #1
{ \__str_unescape_hex_auxii:N }
{
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
\__str_unescape_hex_auxi:N
}
}
@@ -22987,7 +23089,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__str_output_byte:w " \__str_unescape_hex_auxi:N
}
{
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
\__str_unescape_hex_auxii:N
}
}
@@ -23002,8 +23104,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:cpn { __str_convert_unescape_#2: }
{
\group_begin:
- \flag_clear:n { str_byte }
- \flag_clear:n { str_error }
+ \flag_clear:n { __str_byte }
+ \flag_clear:n { __str_error }
\int_set:Nn \tex_escapechar:D { 92 }
\__kernel_tl_gset:Ne \g__str_result_tl
{
@@ -23011,8 +23113,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 ? { ? \prg_break: }
\prg_break_point:
}
- \__str_if_flag_error:nne { str_byte } { non-byte } { #2 }
- \__str_if_flag_error:nne { str_error } { unescape-#2 } { }
+ \__str_if_flag_error:nne { __str_byte } { non-byte } { #2 }
+ \__str_if_flag_error:nne { __str_error } { unescape-#2 } { }
\group_end:
}
\cs_new:Npn #3 ##1#1##2##3
@@ -23025,12 +23127,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__str_hexadecimal_use:NTF ##3
{ }
{
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
* 0 + `#1 \use_i:nn
}
}
{
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
0 + `#1 \use_i:nn
}
\__str_output_end:
@@ -23055,8 +23157,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \__str_convert_unescape_string:
{
\group_begin:
- \flag_clear:n { str_byte }
- \flag_clear:n { str_error }
+ \flag_clear:n { __str_byte }
+ \flag_clear:n { __str_error }
\int_set:Nn \tex_escapechar:D { 92 }
\__kernel_tl_gset:Ne \g__str_result_tl
{
@@ -23070,8 +23172,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\g__str_result_tl #1 ?? { ? \prg_break: }
\prg_break_point:
}
- \__str_if_flag_error:nne { str_byte } { non-byte } { string }
- \__str_if_flag_error:nne { str_error } { unescape-string } { }
+ \__str_if_flag_error:nne { __str_byte } { non-byte } { string }
+ \__str_if_flag_error:nne { __str_error } { unescape-string } { }
\group_end:
}
}
@@ -23111,7 +23213,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ ^^J } { 0 - 1 }
}
{
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
0 - 1 \use_i:nn
}
}
@@ -23237,19 +23339,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
#5 \s__str_stop
\__str_output_byte:n { #2 - 64 * ( #1 - 2 ) }
}
-\flag_clear_new:n { str_missing }
-\flag_clear_new:n { str_extra }
-\flag_clear_new:n { str_overlong }
-\flag_clear_new:n { str_overflow }
+\flag_clear_new:n { __str_missing }
+\flag_clear_new:n { __str_extra }
+\flag_clear_new:n { __str_overlong }
+\flag_clear_new:n { __str_overflow }
\msg_new:nnnn { str } { utf8-decode }
{
Invalid~UTF-8~string:
\exp_last_unbraced:Nf \use_none:n
{
- \__str_if_flag_times:nT { str_missing } { ,~missing~continuation~byte }
- \__str_if_flag_times:nT { str_extra } { ,~extra~continuation~byte }
- \__str_if_flag_times:nT { str_overlong } { ,~overlong~form }
- \__str_if_flag_times:nT { str_overflow } { ,~code~point~too~large }
+ \__str_if_flag_times:nT { __str_missing } { ,~missing~continuation~byte }
+ \__str_if_flag_times:nT { __str_extra } { ,~extra~continuation~byte }
+ \__str_if_flag_times:nT { __str_overlong } { ,~overlong~form }
+ \__str_if_flag_times:nT { __str_overflow } { ,~code~point~too~large }
}
.
}
@@ -23264,25 +23366,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
Code~point~ <~1114112:~11110xxx~10xxxxxx~10xxxxxx~10xxxxxx \\
}
Bytes~of~the~form~10xxxxxx~are~called~continuation~bytes.
- \flag_if_raised:nT { str_missing }
+ \flag_if_raised:nT { __str_missing }
{
\\\\
A~leading~byte~(in~the~range~[192,255])~was~not~followed~by~
the~appropriate~number~of~continuation~bytes.
}
- \flag_if_raised:nT { str_extra }
+ \flag_if_raised:nT { __str_extra }
{
\\\\
LaTeX~came~across~a~continuation~byte~when~it~was~not~expected.
}
- \flag_if_raised:nT { str_overlong }
+ \flag_if_raised:nT { __str_overlong }
{
\\\\
Every~Unicode~code~point~must~be~expressed~in~the~shortest~
possible~form.~For~instance,~'0xC0'~'0x83'~is~not~a~valid~
representation~for~the~code~point~3.
}
- \flag_if_raised:nT { str_overflow }
+ \flag_if_raised:nT { __str_overflow }
{
\\\\
Unicode~limits~code~points~to~the~range~[0,1114111].
@@ -23292,18 +23394,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prop_gput:Nnn \g_msg_module_type_prop { str } { }
\cs_new_protected:cpn { __str_convert_decode_utf8: }
{
- \flag_clear:n { str_error }
- \flag_clear:n { str_missing }
- \flag_clear:n { str_extra }
- \flag_clear:n { str_overlong }
- \flag_clear:n { str_overflow }
+ \flag_clear:n { __str_error }
+ \flag_clear:n { __str_missing }
+ \flag_clear:n { __str_extra }
+ \flag_clear:n { __str_overlong }
+ \flag_clear:n { __str_overflow }
\__kernel_tl_gset:Ne \g__str_result_tl
{
\exp_after:wN \__str_decode_utf_viii_start:N \g__str_result_tl
{ \prg_break: \__str_decode_utf_viii_end: }
\prg_break_point:
}
- \__str_if_flag_error:nne { str_error } { utf8-decode } { }
+ \__str_if_flag_error:nne { __str_error } { utf8-decode } { }
}
\cs_new:Npn \__str_decode_utf_viii_start:N #1
{
@@ -23313,8 +23415,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_int_compare:w `#1 < "80 \exp_stop_f:
\int_value:w `#1
\else:
- \flag_raise:n { str_extra }
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_extra }
+ \flag_raise:n { __str_error }
\int_use:N \c__str_replacement_char_int
\fi:
\else:
@@ -23337,8 +23439,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \int_eval:n { #1 * "40 + `#3 - "80 } \exp_after:wN
\else:
\s__str
- \flag_raise:n { str_missing }
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_missing }
+ \flag_raise:n { __str_error }
\int_use:N \c__str_replacement_char_int
\fi:
\s__str
@@ -23351,8 +23453,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_int_compare:w #1 < #4 \exp_stop_f:
\s__str
\if_int_compare:w #1 < #3 \exp_stop_f:
- \flag_raise:n { str_overlong }
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_overlong }
+ \flag_raise:n { __str_error }
\int_use:N \c__str_replacement_char_int
\else:
#1
@@ -23371,15 +23473,15 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__str_decode_utf_viii_overflow:w #1 \fi: #2 \fi:
{
\fi: \fi:
- \flag_raise:n { str_overflow }
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_overflow }
+ \flag_raise:n { __str_error }
\int_use:N \c__str_replacement_char_int
}
\cs_new:Npn \__str_decode_utf_viii_end:
{
\s__str
- \flag_raise:n { str_missing }
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_missing }
+ \flag_raise:n { __str_error }
\int_use:N \c__str_replacement_char_int \s__str
\prg_break:
}
@@ -23397,10 +23499,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_le:n }
\cs_new_protected:Npn \__str_encode_utf_xvi_aux:N #1
{
- \flag_clear:n { str_error }
+ \flag_clear:n { __str_error }
\cs_set_eq:NN \__str_tmp:w #1
\__str_convert_gmap_internal:N \__str_encode_utf_xvi_char:n
- \__str_if_flag_error:nne { str_error } { utf16-encode } { }
+ \__str_if_flag_error:nne { __str_error } { utf16-encode } { }
}
\cs_new:Npn \__str_encode_utf_xvi_char:n #1
{
@@ -23409,7 +23511,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\if_int_compare:w #1 < "10000 \exp_stop_f:
\if_int_compare:w #1 < "E000 \exp_stop_f:
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
\__str_tmp:w { \c__str_replacement_char_int }
\else:
\__str_tmp:w {#1}
@@ -23420,9 +23522,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
}
- \flag_clear_new:n { str_missing }
- \flag_clear_new:n { str_extra }
- \flag_clear_new:n { str_end }
+ \flag_clear_new:n { __str_missing }
+ \flag_clear_new:n { __str_extra }
+ \flag_clear_new:n { __str_end }
\msg_new:nnnn { str } { utf16-encode }
{ Unicode~string~cannot~be~expressed~in~UTF-16:~surrogate. }
{
@@ -23435,9 +23537,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
Invalid~UTF-16~string:
\exp_last_unbraced:Nf \use_none:n
{
- \__str_if_flag_times:nT { str_missing } { ,~missing~trail~surrogate }
- \__str_if_flag_times:nT { str_extra } { ,~extra~trail~surrogate }
- \__str_if_flag_times:nT { str_end } { ,~odd~number~of~bytes }
+ \__str_if_flag_times:nT { __str_missing } { ,~missing~trail~surrogate }
+ \__str_if_flag_times:nT { __str_extra } { ,~extra~trail~surrogate }
+ \__str_if_flag_times:nT { __str_end } { ,~odd~number~of~bytes }
}
.
}
@@ -23454,17 +23556,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
Lead~surrogates~are~pairs~of~bytes~in~the~range~[0xD800,~0xDBFF],~
and~trail~surrogates~are~in~the~range~[0xDC00,~0xDFFF].
- \flag_if_raised:nT { str_missing }
+ \flag_if_raised:nT { __str_missing }
{
\\\\
A~lead~surrogate~was~not~followed~by~a~trail~surrogate.
}
- \flag_if_raised:nT { str_extra }
+ \flag_if_raised:nT { __str_extra }
{
\\\\
LaTeX~came~across~a~trail~surrogate~when~it~was~not~expected.
}
- \flag_if_raised:nT { str_end }
+ \flag_if_raised:nT { __str_end }
{
\\\\
The~string~contained~an~odd~number~of~bytes.~This~is~invalid:~
@@ -23492,10 +23594,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \__str_decode_utf_xvi:Nw #1#2 \s__str_stop
{
- \flag_clear:n { str_error }
- \flag_clear:n { str_missing }
- \flag_clear:n { str_extra }
- \flag_clear:n { str_end }
+ \flag_clear:n { __str_error }
+ \flag_clear:n { __str_missing }
+ \flag_clear:n { __str_extra }
+ \flag_clear:n { __str_end }
\cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
\__kernel_tl_gset:Ne \g__str_result_tl
{
@@ -23503,7 +23605,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2 \q__str_nil \q__str_nil
\prg_break_point:
}
- \__str_if_flag_error:nne { str_error } { utf16-decode } { }
+ \__str_if_flag_error:nne { __str_error } { utf16-decode } { }
}
\cs_new:Npn \__str_decode_utf_xvi_pair:NN #1#2
{
@@ -23559,7 +23661,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__str_decode_utf_xvi_error:nNN { extra } #1#2 }
\cs_new:Npn \__str_decode_utf_xvi_error:nNN #1#2#3
{
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_error }
\flag_raise:n { str_#1 }
#2 #3 \s__str
\int_use:N \c__str_replacement_char_int \s__str
@@ -23600,29 +23702,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__str_output_byte_pair_le:n {#1}
^^00
}
- \flag_clear_new:n { str_overflow }
- \flag_clear_new:n { str_end }
+ \flag_clear_new:n { __str_overflow }
+ \flag_clear_new:n { __str_end }
\msg_new:nnnn { str } { utf32-decode }
{
Invalid~UTF-32~string:
\exp_last_unbraced:Nf \use_none:n
{
- \__str_if_flag_times:nT { str_overflow } { ,~code~point~too~large }
- \__str_if_flag_times:nT { str_end } { ,~truncated~string }
+ \__str_if_flag_times:nT { __str_overflow } { ,~code~point~too~large }
+ \__str_if_flag_times:nT { __str_end } { ,~truncated~string }
}
.
}
{
In~the~UTF-32~encoding,~every~Unicode~character~
(in~the~range~[U+0000,~U+10FFFF])~is~encoded~as~4~bytes.
- \flag_if_raised:nT { str_overflow }
+ \flag_if_raised:nT { __str_overflow }
{
\\\\
LaTeX~came~across~a~code~point~larger~than~1114111,~
the~maximum~code~point~defined~by~Unicode.~
Perhaps~the~string~was~not~encoded~in~the~UTF-32~encoding?
}
- \flag_if_raised:nT { str_end }
+ \flag_if_raised:nT { __str_end }
{
\\\\
The~length~of~the~string~is~not~a~multiple~of~4.~
@@ -23650,9 +23752,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \__str_decode_utf_xxxii:Nw #1#2 \s__str_stop
{
- \flag_clear:n { str_overflow }
- \flag_clear:n { str_end }
- \flag_clear:n { str_error }
+ \flag_clear:n { __str_overflow }
+ \flag_clear:n { __str_end }
+ \flag_clear:n { __str_error }
\cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
\__kernel_tl_gset:Ne \g__str_result_tl
{
@@ -23660,7 +23762,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2 \s__str_stop \s__str_stop \s__str_stop \s__str_stop
\prg_break_point:
}
- \__str_if_flag_error:nne { str_error } { utf32-decode } { }
+ \__str_if_flag_error:nne { __str_error } { utf32-decode } { }
}
\cs_new:Npn \__str_decode_utf_xxxii_loop:NNNN #1#2#3#4
{
@@ -23669,13 +23771,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#1#2#3#4 \s__str
\if_int_compare:w \__str_tmp:w #1#4 > \c_zero_int
- \flag_raise:n { str_overflow }
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_overflow }
+ \flag_raise:n { __str_error }
\int_use:N \c__str_replacement_char_int
\else:
\if_int_compare:w \__str_tmp:w #2#3 > 16 \exp_stop_f:
- \flag_raise:n { str_overflow }
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_overflow }
+ \flag_raise:n { __str_error }
\int_use:N \c__str_replacement_char_int
\else:
\int_eval:n
@@ -23689,8 +23791,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\tl_if_empty:nF {#1}
{
- \flag_raise:n { str_end }
- \flag_raise:n { str_error }
+ \flag_raise:n { __str_end }
+ \flag_raise:n { __str_error }
#1 \s__str
\int_use:N \c__str_replacement_char_int \s__str
}
@@ -31171,19 +31273,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\prop_new:N \g__pdf_object_prop
-\cs_new_protected:Npn \pdf_object_new:nn #1#2
- {
- \prop_gput:Nnn \g__pdf_object_prop {#1} {#2}
- \__pdf_backend_object_new:n {#1}
- }
-\cs_new_protected:Npn \pdf_object_write:nn #1#2
- {
- \exp_args:Nne \__pdf_backend_object_write:nnn
- {#1} { \prop_item:Nn \g__pdf_object_prop {#1} } {#2}
- \bool_gset_true:N \g__pdf_init_bool
- }
-\cs_generate_variant:Nn \pdf_object_write:nn { nx }
%% File: l3coffins.dtx
\box_new:N \l__coffin_internal_box
\dim_new:N \l__coffin_internal_dim
@@ -36634,9 +36723,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__deprecation_old_protected:Nnn \tl_show_analysis:n
{ \tl_analysis_show:n } { 2020-01-01 }
\__deprecation_old:Nnn \tl_case:cnn
- { \tl_case:cnF } { 2015-07-14 }
+ { \exp_args:Nc \token_case_meaning:NnF } { 2015-07-14 }
\__deprecation_old:Nnn \tl_case:Nnn
- { \tl_case:NnF } { 2015-07-14 }
+ { \token_case_meaning:NnF } { 2015-07-14 }
\__deprecation_old_protected:Nnn \tl_gset_from_file:Nnn
{ \file_get:nnN } { 2021-07-01 }
\__deprecation_old_protected:Nnn \tl_gset_from_file_x:Nnn
@@ -36668,13 +36757,46 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__deprecation_old:Nnn \xetex_if_engine:TF
{ \sys_if_engine_xetex:TF } { 2017-01-01 }
\cs_gset:Npn \cs_argument_spec:N { \cs_parameter_spec:N }
-\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case_true:n }
+\cs_new_protected:Npn \iow_shipout_x:Nn { \iow_shipout_e:Nn }
+\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx , c, cx }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:N } #1
+ { \__keys_variable_set:NnnN #1 { str } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:c } #1
+ { \__keys_variable_set:cnnN {#1} { str } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:N } #1
+ { \__keys_variable_set:NnnN #1 { str } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:c } #1
+ { \__keys_variable_set:cnnN {#1} { str } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:N } #1
+ { \__keys_variable_set:NnnN #1 { tl } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:c } #1
+ { \__keys_variable_set:cnnN {#1} { tl } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:N } #1
+ { \__keys_variable_set:NnnN #1 { tl } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:c } #1
+ { \__keys_variable_set:cnnN {#1} { tl } { g } x }
+\prop_new:N \g__keys_object_prop
+\__kernel_patch_deprecation:nnNNpn { 2022-08-30 } { [\pdf_object_new:n] }
+\cs_new_protected:Npn \pdf_object_new:nn #1#2
+ {
+ \prop_gput:Nnn \g__keys_object_prop {#1} {#2}
+ \__keys_backend_object_new:n {#1}
+ }
+\__kernel_patch_deprecation:nnNNpn { 2022-08-30 } { [\pdf_object_write:n] }
+\cs_new_protected:Npn \pdf_object_write:nn #1#2
+ {
+ \exp_args:Nne \__keys_backend_object_write:nnn
+ {#1} { \prop_item:Nn \g__keys_object_prop {#1} } {#2}
+ \bool_gset_true:N \g__keys_init_bool
+ }
+\cs_generate_variant:Nn \pdf_object_write:nn { nx }
+\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:n }
\cs_gset:Npn \bool_case_true:n { \bool_case:n }
-\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case_true:nT }
+\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nT }
\cs_gset:Npn \bool_case_true:nT { \bool_case:nT }
-\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case_true:nF }
+\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nF }
\cs_gset:Npn \bool_case_true:nF { \bool_case:nF }
-\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case_true:nTF }
+\__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nTF }
\cs_gset:Npn \bool_case_true:nTF { \bool_case:nTF }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n }
\cs_gset:Npn \str_lower_case:n { \str_lowercase:n }
@@ -36699,7 +36821,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_gset_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
\__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_function:NN }
\cs_gset:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
-\__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_mapthread_function:NNN }
+\__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_map_pairwise_function:NNN }
\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_set_map_e:NNn }
\cs_gset_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn }
@@ -36746,7 +36868,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \tl_build_clear:N { \tl_build_begin:N }
\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_gbegin:N }
\cs_new_protected:Npn \tl_build_gclear:N { \tl_build_gbegin:N }
-\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { [ \codepoint_generate:n ] }
+\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { [ \codepoint_generate:nn ] }
\cs_gset:Npn \char_to_utfviii_bytes:n { \__kernel_codepoint_to_bytes:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n }
\cs_gset:Npn \char_to_nfd:N #1 { \codepoint_to_nfd:n {`#1} }
@@ -36772,10 +36894,16 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_gset:Npn \char_lowercase:N { \text_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_uppercase:n }
\cs_gset:Npn \char_uppercase:N { \text_uppercase:n }
+\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_titlecase_first:n }
+\cs_gset:Npn \char_titlecase:N { \text_titlecase_first:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:n }
\cs_gset:Npn \char_foldcase:N { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_lowercase:n }
\cs_gset:Npn \char_str_lowercase:N { \str_lowercase:n }
+\__kernel_patch_deprecation:nnNNpn { 2022-10-17 }
+ { \tl_to_str:e { \text_titlecase_first:n } }
+\cs_gset:Npn \char_str_titlecase:N #1
+ { \tl_to_str:e { \text_titlecase_first:n {#1} } }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_uppercase:n }
\cs_gset:Npn \char_str_uppercase:N { \str_uppercase:n }
\__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:n }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 0c7206d4094..abad4be7ae9 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-11-09}%
+\def\ExplFileDate{2023-12-08}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
@@ -92,7 +92,7 @@
}
\tex_input:D #1 .def \scan_stop:
}
-\sys_everyjob:
+\__kernel_sys_everyjob:
\bool_new:N \g__kernel_backend_header_bool
\bool_gset_true:N \g__kernel_backend_header_bool
\sys_load_backend:n { }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
index 54d24346c1b..a07ab4a15a6 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-11-09}%
+\def\ExplFileDate{2023-12-08}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
@@ -137,10 +137,10 @@
\tex_everyjob:D \exp_after:wN
{
\tex_the:D \tex_everyjob:D
- \sys_everyjob:
+ \__kernel_sys_everyjob:
}
}
- { \sys_everyjob: }
+ { \__kernel_sys_everyjob: }
\reverse_if:N \if_cs_exist:N \s__expl_stop
\scan_new:N \s__expl_stop
\fi:
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 0d984b2c84a..f2b134ad294 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-11-09}%
+\def\ExplFileDate{2023-12-08}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
@@ -164,10 +164,10 @@
\tex_everyjob:D \exp_after:wN
{
\tex_the:D \tex_everyjob:D
- \sys_everyjob:
+ \__kernel_sys_everyjob:
}
}
- { \sys_everyjob: }
+ { \__kernel_sys_everyjob: }
\reverse_if:N \if_cs_exist:N \s__expl_stop
\scan_new:N \s__expl_stop
\fi:
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
index 5a506c6cb41..0c3acc61766 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2019-04-06}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2023-12-08}{}{L3 Debugging support}
\scan_new:N \s__debug_stop
\cs_new:Npn \__debug_use_i_delimit_by_s_stop:nw #1 #2 \s__debug_stop {#1}
\quark_new:N \q__debug_recursion_tail
@@ -466,6 +466,10 @@
\skip_set_eq:NN
\skip_add:Nn
\skip_sub:Nn
+ \str_clear:N
+ \str_set_eq:NN
+ \str_put_left:Nn
+ \str_put_right:Nn
\__kernel_tl_set:Ne
\tl_clear:N
\tl_set_eq:NN
@@ -531,6 +535,10 @@
\skip_gset_eq:NN
\skip_gadd:Nn
\skip_gsub:Nn
+ \str_gclear:N
+ \str_gset_eq:NN
+ \str_gput_left:Nn
+ \str_gput_right:Nn
\__kernel_tl_gset:Ne
\tl_gclear:N
\tl_gset_eq:NN
@@ -565,6 +573,7 @@
\intarray_const_from_clist:Nn
\muskip_const:Nn
\skip_const:Nn
+ \str_const:Nn
\tl_const:Nn
}
\__kernel_patch:nnn
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
index 238756a9bdb..b9c4d377118 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
@@ -42,8 +42,9 @@
\prop_new:N \g__codedoc_missing_tests_prop
\seq_new:N \g__codedoc_not_tested_seq
\seq_new:N \g__codedoc_testfiles_seq
-\bool_new:N \l__codedoc_macro_internal_set_bool
+\bool_new:N \l__codedoc_macro_deprecated_bool
\bool_new:N \l__codedoc_macro_internal_bool
+\bool_new:N \l__codedoc_macro_nodoc_bool
\bool_new:N \l__codedoc_macro_TF_bool
\bool_new:N \l__codedoc_macro_pTF_bool
\bool_new:N \l__codedoc_macro_noTF_bool
@@ -102,33 +103,16 @@
\cs_new_eq:NN \__codedoc_tmpa:w ?
\cs_new_eq:NN \__codedoc_tmpb:w ?
\cs_generate_variant:Nn \seq_set_split:Nnn { NoV }
-\cs_generate_variant:Nn \seq_gput_right:Nn { Nf }
-\cs_generate_variant:Nn \str_case:nn { fn }
-\cs_generate_variant:Nn \tl_count:n { f }
-\cs_generate_variant:Nn \tl_greplace_all:Nnn { Nx , Nno }
-\cs_generate_variant:Nn \tl_if_empty:nTF { f }
-\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNTF { o }
-\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNT { o }
-\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNF { o }
-\cs_generate_variant:Nn \tl_if_head_eq_meaning:nNF { V }
-\cs_generate_variant:Nn \tl_if_in:nnTF { no , oo }
-\cs_generate_variant:Nn \tl_if_in:NnTF { No }
-\cs_generate_variant:Nn \tl_if_in:NnT { No }
-\cs_generate_variant:Nn \tl_if_in:NnF { No }
-\cs_generate_variant:Nn \tl_remove_all:Nn { Nx }
-\cs_generate_variant:Nn \tl_replace_all:Nnn { Nx , Nnx, No , Nno }
-\cs_generate_variant:Nn \tl_replace_once:Nnn { Noo }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV }
-\cs_generate_variant:Nn \tl_to_str:n { f , o }
+\cs_generate_variant:Nn \tl_to_str:n { f }
\prg_new_protected_conditional:Npnn \__codedoc_if_almost_str:n #1 { TF , T , F }
{
\int_compare:nNnTF
{ \tl_count:n {#1} }
- < { \tl_count:f { \tl_to_str:f {#1} } }
+ < { \tl_count:e { \tl_to_str:f {#1} } }
{ \prg_return_false: }
{ \prg_return_true: }
}
-\cs_generate_variant:Nn \__codedoc_if_almost_str:nT { V }
+\prg_generate_conditional_variant:Nnn \__codedoc_if_almost_str:n { V } { T }
\cs_new_protected:Npn \__codedoc_trim_right:Nn #1#2
{
\cs_set:Npn \__codedoc_tmp:w ##1 #2 ##2 \q_stop { \exp_not:n {##1} }
@@ -173,7 +157,7 @@
\cs_new_protected:Npn \__codedoc_detect_internals_aux:N #1
{
\tl_set_eq:NN \l__codedoc_detect_internals_tl #1
- \tl_replace_all:Non \l__codedoc_detect_internals_tl { \token_to_str:N _ } { _ }
+ \tl_replace_all:NVn \l__codedoc_detect_internals_tl \c_underscore_str { _ }
\seq_set_split:NnV \l__codedoc_tmpa_seq { _ _ } \l__codedoc_detect_internals_tl
\seq_pop_left:NN \l__codedoc_tmpa_seq \l__codedoc_detect_internals_tl
\seq_map_variable:NNn \l__codedoc_tmpa_seq \l__codedoc_detect_internals_tl
@@ -695,9 +679,9 @@
\bool_if:NT \l__codedoc_cmd_replace_bool
{
\tl_set_rescan:Nnn \l__codedoc_tmpb_tl { } { _ }
- \tl_replace_all:Non \l__codedoc_cmd_tl \l__codedoc_tmpb_tl { _ }
+ \tl_replace_all:NVn \l__codedoc_cmd_tl \l__codedoc_tmpb_tl { _ }
\__codedoc_replace_at_at:N \l__codedoc_cmd_tl
- \tl_replace_all:Nno \l__codedoc_cmd_tl { _ } \l__codedoc_tmpb_tl
+ \tl_replace_all:NnV \l__codedoc_cmd_tl { _ } \l__codedoc_tmpb_tl
}
\mode_if_math:T { \mbox }
{
@@ -751,7 +735,7 @@
{
\tl_set_rescan:Nnn \l__codedoc_tmpb_tl
{ \char_set_catcode:nn { `_ } {##1} } { _ }
- \tl_replace_all:Non \l__codedoc_tmpa_tl \l__codedoc_tmpb_tl
+ \tl_replace_all:NVn \l__codedoc_tmpa_tl \l__codedoc_tmpb_tl
{ \__codedoc_ensuremath_sb:n }
}
\exp_args:NV \__codedoc_meta_original:n \l__codedoc_tmpa_tl
@@ -809,8 +793,8 @@
\cs_new_protected:Npn \__codedoc_get_hyper_target:nN #1#2
{
\__kernel_tl_set:Ne #2 { \tl_to_str:n {#1} }
- \tl_replace_all:Nen #2 { \c_underscore_str } { / }
- \tl_remove_all:Ne #2 { \c_backslash_str }
+ \tl_replace_all:NVn #2 \c_underscore_str { / }
+ \tl_remove_all:NV #2 \c_backslash_str
\tl_put_left:Nn #2 { doc/function// }
}
\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { o , e }
@@ -886,8 +870,8 @@
{
\seq_pop:NN #1 \l__codedoc_tmpa_tl
\tl_gset_eq:NN \g__codedoc_base_name_tl \l__codedoc_tmpa_tl
- \tl_greplace_all:Nno \g__codedoc_base_name_tl
- { ~ } { \c_catcode_other_space_tl }
+ \tl_greplace_all:NnV \g__codedoc_base_name_tl
+ { ~ } \c_catcode_other_space_tl
\seq_get:NN #1 \l__codedoc_tmpa_tl
\str_if_eq:VnTF \l__codedoc_tmpa_tl { \scan_stop: }
{
@@ -923,13 +907,10 @@
\cs_generate_variant:Nn \__codedoc_names_typeset_block:nN { e }
\prg_new_conditional:Npnn \__codedoc_if_macro_internal:n #1 { p , T , F , TF }
{
- \bool_if:NTF \l__codedoc_macro_internal_set_bool
- {
- \bool_if:NTF \l__codedoc_macro_internal_bool
- { \prg_return_true: } { \prg_return_false: }
- }
+ \bool_if:NTF \l__codedoc_macro_internal_bool
+ { \prg_return_true: }
{
- \tl_if_empty:fTF
+ \tl_if_empty:eTF
{
\exp_after:wN \__codedoc_if_macro_internal_aux:w
\tl_to_str:n { #1 ~ __ }
@@ -993,7 +974,8 @@
} ,
added .code:n = { \__codedoc_date_set_past:Nn \l__codedoc_date_added_tl {#1} },
updated .code:n = { \__codedoc_date_set_past:Nn \l__codedoc_date_updated_tl {#1} } ,
- deprecated .code:n = {} , % A stub
+ deprecated .bool_set:N = \l__codedoc_macro_deprecated_bool ,
+ no-user-doc .bool_set:N = \l__codedoc_macro_nodoc_bool ,
tested .code:n = { } ,
label .code:n =
{
@@ -1292,18 +1274,14 @@
\msg_warning:nnnn { l3doc } { deprecated-option }
{ aux } { function/macro }
} ,
+ deprecated .bool_set:N = \l__codedoc_macro_deprecated_bool ,
internal .value_forbidden:n = true ,
internal .code:n =
- {
- \bool_set_true:N \l__codedoc_macro_internal_bool
- \bool_set_true:N \l__codedoc_macro_internal_set_bool
- } ,
+ { \bool_set_true:N \l__codedoc_macro_internal_bool } ,
int .value_forbidden:n = true ,
int .code:n =
- {
- \bool_set_true:N \l__codedoc_macro_internal_bool
- \bool_set_true:N \l__codedoc_macro_internal_set_bool
- } ,
+ { \bool_set_true:N \l__codedoc_macro_internal_bool } ,
+ no-user-doc .bool_set:N = \l__codedoc_macro_nodoc_bool ,
var .value_forbidden:n = true ,
var .code:n =
{ \bool_set_true:N \l__codedoc_macro_var_bool } ,
@@ -1342,7 +1320,6 @@
} ,
added .code:n = {} , % TODO
updated .code:n = {} , % TODO
- deprecated .code:n = {} , % A stub
verb .bool_set:N = \l__codedoc_names_verb_bool ,
module .tl_set:N = \l__codedoc_override_module_tl ,
documented-as .tl_set:N = \l__codedoc_macro_documented_tl ,
@@ -1366,8 +1343,8 @@
\cs_new_protected:Npn \__codedoc_macro_init:
{
\int_incr:N \l__codedoc_nested_macro_int
+ \bool_set_false:N \l__codedoc_macro_deprecated_bool
\bool_set_false:N \l__codedoc_macro_internal_bool
- \bool_set_false:N \l__codedoc_macro_internal_set_bool
\bool_set_false:N \l__codedoc_macro_TF_bool
\bool_set_false:N \l__codedoc_macro_pTF_bool
\bool_set_false:N \l__codedoc_macro_noTF_bool
@@ -1399,8 +1376,8 @@
\tl_if_empty:NTF \l__codedoc_macro_documented_tl
{ \__codedoc_names_block_base_map:N \__codedoc_macro_save_names_aux:n }
{
- \seq_gput_right:Nf \g__codedoc_nested_names_seq
- { \exp_after:wN \token_to_str:N \l__codedoc_macro_documented_tl }
+ \seq_gput_right:Ne \g__codedoc_nested_names_seq
+ { \tl_to_str:N \l__codedoc_macro_documented_tl }
}
}
\cs_new_protected:Npn \__codedoc_macro_save_names_aux:n #1
@@ -1446,7 +1423,6 @@
{ \__codedoc_get_function_name:n {#1} } #2
}
}
-\cs_generate_variant:Nn \__codedoc_macro_typeset_block:nN { x }
\cs_new_protected:Npn \__codedoc_macro_typeset_variant_list:nN #1#2
{
\seq_map_inline:Nn \g__codedoc_variants_seq
@@ -1467,7 +1443,12 @@
\DoNotIndex {#1}
\bool_if:NT #2
{
- \__codedoc_if_macro_internal:nF {#1}
+ \bool_lazy_any:nF
+ {
+ { \__codedoc_if_macro_internal_p:n {#1} }
+ { \l__codedoc_macro_deprecated_bool }
+ { \l__codedoc_macro_nodoc_bool }
+ }
{ \seq_gput_right:Nn \g_doc_macros_seq {#1} }
\hbox_set:Nw \l__codedoc_macro_index_box
\hbox_unpack_drop:N \l__codedoc_macro_index_box
@@ -1505,8 +1486,8 @@
\int_compare:nTF { \str_count:n {#1} <= 28 }
{ \MacroFont } { \MacroLongFont }
\tl_set:Nn \l__codedoc_tmpa_tl {#1}
- \tl_replace_all:Nno \l__codedoc_tmpa_tl
- { ~ } { \c_catcode_other_space_tl }
+ \tl_replace_all:NnV \l__codedoc_tmpa_tl
+ { ~ } \c_catcode_other_space_tl
\__codedoc_macroname_prefix:o \l__codedoc_tmpa_tl
\__codedoc_macroname_suffix:N #2
}
@@ -1609,8 +1590,8 @@
\cs_new_protected:Npn \__codedoc_macro_end_wrap_item:n #1
{
\tl_set:Nn \l__codedoc_tmpa_tl {#1}
- \tl_replace_all:Non \l__codedoc_tmpa_tl
- { \token_to_str:N _ } { \_ }
+ \tl_replace_all:NVn \l__codedoc_tmpa_tl
+ \c_underscore_str { \_ }
\texttt { \l__codedoc_tmpa_tl }
}
\cs_new_protected:Npn \__codedoc_print_end_definition:
@@ -1632,7 +1613,14 @@
{
\seq_gset_filter:NNn \g__codedoc_nested_names_seq
\g__codedoc_nested_names_seq
- { ! \__codedoc_if_macro_internal_p:n {##1} }
+ {
+ ! \bool_lazy_any_p:n
+ {
+ { \__codedoc_if_macro_internal_p:n {##1} }
+ { \l__codedoc_macro_deprecated_bool }
+ { \l__codedoc_macro_nodoc_bool }
+ }
+ }
\seq_if_empty:NF \g__codedoc_nested_names_seq
{
\int_set:Nn \l__codedoc_tmpa_int
@@ -1995,18 +1983,18 @@
\tl_clear:N \l__codedoc_doc_def_tl
\tl_clear:N \l__codedoc_doc_undef_tl
\tl_clear:N \l__codedoc_undoc_def_tl
+ \seq_gremove_duplicates:N \g_doc_functions_seq
+ \seq_gremove_duplicates:N \g_doc_macros_seq
\seq_map_inline:Nn \g_doc_functions_seq
{
\seq_if_in:NnTF \g_doc_macros_seq {##1}
{
\tl_put_right:Ne \l__codedoc_doc_def_tl
- { ##1 \iow_newline: }
- \iow_now:Nn \g__codedoc_func_iow { > ~ ##1 }
+ { \iow_newline: > ~ ##1 }
}
{
\tl_put_right:Ne \l__codedoc_doc_undef_tl
- { ##1 \iow_newline: }
- \iow_now:Nn \g__codedoc_func_iow { ! ~ ##1 }
+ { \iow_newline: ! ~ ##1 }
}
}
\seq_map_inline:Nn \g_doc_macros_seq
@@ -2014,8 +2002,7 @@
\seq_if_in:NnF \g_doc_functions_seq {##1}
{
\tl_put_right:Ne \l__codedoc_undoc_def_tl
- { ##1 \iow_newline: }
- \iow_now:Nn \g__codedoc_func_iow { ? ~ ##1 }
+ { \iow_newline: ? ~ ##1 }
}
}
\__codedoc_functions_typeout:nN
@@ -2040,11 +2027,11 @@
{
\tl_if_empty:NF #2
{
- \typeout
+ \iow_now:Ne \g__codedoc_func_iow
{
\c__codedoc_iow_midrule_tl \iow_newline:
#1 \iow_newline:
- \c__codedoc_iow_midrule_tl \iow_newline:
+ \c__codedoc_iow_midrule_tl
#2
}
\tl_clear:N #2
@@ -2275,7 +2262,7 @@
\__kernel_tl_set:Ne #1 { \tl_to_str:n {#2} }
\__codedoc_if_almost_str:nTF {#2}
{
- \tl_replace_all:Non #1 { \tl_to_str:n { __ } }
+ \tl_replace_all:Nen #1 { \tl_to_str:n { __ } }
{
\verbatimchar
\token_to_str:N \_ \token_to_str:N \_
@@ -2298,8 +2285,8 @@
}
{
\tl_set:Nn #1 {#2}
- \tl_replace_all:Non #1
- { \c_backslash_str }
+ \tl_replace_all:NVn #1
+ \c_backslash_str
{ \token_to_str:N \bslash \c_space_tl }
}
\__codedoc_quote_special_char:N #1
@@ -2312,27 +2299,26 @@
{ \tl_to_str:N ##1 } { \quotechar \tl_to_str:N ##1 }
}
}
-\cs_new_protected:Npn \__codedoc_key_get:n #1
+\cs_new_protected:Npe \__codedoc_key_get:n #1
{
- \__codedoc_key_get_base:nN {#1} \l__codedoc_index_macro_tl
- \__kernel_tl_set:Ne \l__codedoc_index_key_tl
- { \tl_to_str:N \l__codedoc_index_macro_tl }
- \tl_clear:N \l__codedoc_index_module_tl
- \tl_if_in:NoTF \l__codedoc_index_key_tl { \tl_to_str:n { __ } }
- { \bool_set_true:N \l__codedoc_index_internal_bool }
- { \bool_set_false:N \l__codedoc_index_internal_bool }
- \exp_last_unbraced:NNo
- \tl_if_head_eq_charcode:oNT
- { \l__codedoc_index_key_tl } \c_backslash_str
- { \__codedoc_key_pop: }
- \tl_if_in:NoTF \l__codedoc_index_key_tl { \token_to_str:N : }
- { \__codedoc_key_func: }
+ \exp_not:N \__codedoc_key_get_base:nN {#1} \exp_not:N \l__codedoc_index_macro_tl
+ \__kernel_tl_set:Ne \exp_not:N \l__codedoc_index_key_tl
+ { \exp_not:N \tl_to_str:N \exp_not:N \l__codedoc_index_macro_tl }
+ \tl_clear:N \exp_not:N \l__codedoc_index_module_tl
+ \tl_if_in:NnTF \exp_not:N \l__codedoc_index_key_tl { \tl_to_str:n { __ } }
+ { \bool_set_true:N \exp_not:N \l__codedoc_index_internal_bool }
+ { \bool_set_false:N \exp_not:N \l__codedoc_index_internal_bool }
+ \exp_not:N \tl_if_head_eq_charcode:VNT
+ \exp_not:N \l__codedoc_index_key_tl \c_backslash_str
+ { \exp_not:N \__codedoc_key_pop: }
+ \tl_if_in:NnTF \exp_not:N \l__codedoc_index_key_tl { \token_to_str:N : }
+ { \exp_not:N \__codedoc_key_func: }
{
- \tl_if_in:NoTF \l__codedoc_index_key_tl { \token_to_str:N _ }
- { \__codedoc_key_var: }
+ \tl_if_in:NnTF \exp_not:N \l__codedoc_index_key_tl { \token_to_str:N _ }
+ { \exp_not:N \__codedoc_key_var: }
{
- \tl_if_in:NoT \l__codedoc_index_key_tl { \token_to_str:N @ }
- { \tl_set:Nn \l__codedoc_index_module_tl { TeX } }
+ \tl_if_in:NnT \exp_not:N \l__codedoc_index_key_tl { \token_to_str:N @ }
+ { \tl_set:Nn \exp_not:N \l__codedoc_index_module_tl { TeX } }
}
}
}
@@ -2350,12 +2336,12 @@
}
\cs_new_protected:Npn \__codedoc_key_drop_underscores:
{
- \tl_if_head_eq_charcode:oNT { \l__codedoc_index_key_tl } _
+ \tl_if_head_eq_charcode:VNT \l__codedoc_index_key_tl _
{ \__codedoc_key_pop: \__codedoc_key_drop_underscores: }
}
\cs_new_protected:Npn \__codedoc_key_func:
{
- \tl_if_head_eq_charcode:oNT { \l__codedoc_index_key_tl } .
+ \tl_if_head_eq_charcode:VNT \l__codedoc_index_key_tl .
{ \__codedoc_key_pop: }
\__codedoc_key_drop_underscores:
\tl_set_eq:NN \l__codedoc_index_module_tl \l__codedoc_index_key_tl
@@ -2367,7 +2353,7 @@
\exp_args:Ne \tl_if_head_eq_charcode:nNTF
{ \exp_args:No \str_tail:n \l__codedoc_index_key_tl } _
{
- \str_case:fn { \str_head:N \l__codedoc_index_key_tl }
+ \str_case:en { \str_head:N \l__codedoc_index_key_tl }
{
{ q } { \tl_set:Nn \l__codedoc_index_module_tl { quark } }
{ s } { \tl_set:Nn \l__codedoc_index_module_tl { scan } }