summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-04-30 20:03:09 +0000
committerKarl Berry <karl@freefriends.org>2024-04-30 20:03:09 +0000
commit753708379c1fbd17a96f1a6788c94ce1fa1208d7 (patch)
treed1bfa8c85ad78bf1312298d97eb72490baa44683 /Master/texmf-dist/tex/latex/l3kernel
parent93ae2978eea5bd5c39e8e0ac208a658c4c0c2e05 (diff)
l3kernel (30apr24)
git-svn-id: svn://tug.org/texlive/trunk@71140 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.tex190
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.lua53
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3debug.def6
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3doc.cls4
7 files changed, 218 insertions, 41 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index bc4dfe706a4..8207f52f0fe 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -51,7 +51,7 @@
%% l3regex.dtx (with options: `package')
%% l3box.dtx (with options: `package')
%% l3color.dtx (with options: `package')
-%% l3pdf.dtx (with options: `package')
+%% l3pdf.dtx (with options: `package,tex')
%% l3coffins.dtx (with options: `package')
%% l3luatex.dtx (with options: `package,tex')
%% l3unicode.dtx (with options: `package')
@@ -75,7 +75,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-03-14}%
+\def\ExplFileDate{2024-04-11}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -7960,7 +7960,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \sys_get_query:nnnN {#1} { } {#2} #3 }
\cs_new_protected:Npn \sys_get_query:nnnN #1#2#3#4
{
- \str_clear:N #4
+ \tl_clear:N #4
\__sys_get_query_auxi:neeN {#1} {#2} {#3} #4
}
\cs_new:Npn \__sys_get_query_auxi:nnnN #1#2#3#4
@@ -7986,10 +7986,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\sys_get_shell:nnN
{ l3sys-query~#1 #2 #3 }
{
- \int_step_inline:nnn { 0 } { `a - 1 }
+ \int_step_inline:nnn { 0 } { `A - 1 }
{ \char_set_catcode_other:n {##1} }
- \int_step_inline:nnn { `Z + 1 } { 127 }
+ \int_step_inline:nnn { `Z + 1 } { `a - 1 }
{ \char_set_catcode_other:n {##1} }
+ \int_step_inline:nnn { `z + 1 } { 127 }
+ { \char_set_catcode_other:n {##1} }
+ \char_set_catcode_active:n { `\ }
\tex_endlinechar:D 13 \scan_stop:
}
\l__sys_tmp_tl
@@ -10042,9 +10045,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__prop_put:nNNnn { } \cs_set_nopar:Npe }
\cs_new_protected:Npn \prop_gput:Nnn
{ \__prop_put:nNNnn { } \cs_gset_nopar:Npe }
-\cs_new_protected:Npn \prop_put_if_new:Nnn
+\cs_new_protected:Npn \prop_put_if_not_in:Nnn
{ \__prop_put:nNNnn \use_none:nnn \cs_set_nopar:Npe }
-\cs_new_protected:Npn \prop_gput_if_new:Nnn
+\cs_new_protected:Npn \prop_gput_if_not_in:Nnn
{ \__prop_put:nNNnn \use_none:nnn \cs_gset_nopar:Npe }
\cs_generate_variant:Nn \prop_put:Nnn
{
@@ -10074,10 +10077,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_generate_variant:Nn \prop_gput:Nnn
{ cno , co , coo , cnx , cVx , cxV , cxx }
-\cs_generate_variant:Nn \prop_put_if_new:Nnn
- { NnV , NV , cnV , cV }
-\cs_generate_variant:Nn \prop_gput_if_new:Nnn
- { NnV , NV , cnV , cV }
+\cs_generate_variant:Nn \prop_put_if_not_in:Nnn
+ { NnV , NV , c , cnV , cV }
+\cs_generate_variant:Nn \prop_gput_if_not_in:Nnn
+ { NnV , NV , c , cnV , cV }
\cs_new_protected:Npn \__prop_put:nNNnn #1#2#3#4#5
{
\tl_set:Nn \l__prop_internal_tl
@@ -11633,16 +11636,21 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__kernel_tl_set:Nx \l__iow_file_name_tl
{ \__kernel_file_name_sanitize:n {#2} }
+ \__kernel_iow_open:No #1 \l__iow_file_name_tl
+ }
+\cs_generate_variant:Nn \iow_open:Nn { NV , c , cV }
+\cs_new_protected:Npn \__kernel_iow_open:Nn #1#2
+ {
\iow_close:N #1
\seq_gpop:NNTF \g__iow_streams_seq \l__iow_stream_tl
- { \__iow_open_stream:NV #1 \l__iow_file_name_tl }
+ { \__iow_open_stream:Nn #1 {#2} }
{
\__iow_new:N #1
\__kernel_tl_set:Nx \l__iow_stream_tl { \int_eval:n {#1} }
- \__iow_open_stream:NV #1 \l__iow_file_name_tl
+ \__iow_open_stream:Nn #1 {#2}
}
}
-\cs_generate_variant:Nn \iow_open:Nn { NV , c , cV }
+\cs_generate_variant:Nn \__kernel_iow_open:Nn { No }
\cs_new_protected:Npn \__iow_open_stream:Nn #1#2
{
\tex_global:D \tex_chardef:D #1 = \l__iow_stream_tl \scan_stop:
@@ -15196,6 +15204,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__intarray_gset_range:Nw #1
}
}
+\prg_new_eq_conditional:NNn \intarray_if_exist:N \cs_if_exist:N
+ { TF , T , F , p }
+\prg_new_eq_conditional:NNn \intarray_if_exist:c \cs_if_exist:c
+ { TF , T , F , p }
\cs_new_protected:Npn \intarray_show:N { \__intarray_show:NN \msg_show:nneeee }
\cs_generate_variant:Nn \intarray_show:N { c }
\cs_new_protected:Npn \intarray_log:N { \__intarray_show:NN \msg_log:nneeee }
@@ -22131,6 +22143,10 @@ 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} ; }
+\prg_new_eq_conditional:NNn \fparray_if_exist:N \cs_if_exist:N
+ { TF , T , F , p }
+\prg_new_eq_conditional:NNn \fparray_if_exist:c \cs_if_exist:c
+ { TF , T , F , p }
%% File: l3bitset.dtx
\cs_if_exist:NT \@expl@finalise@setup@@
{
@@ -22361,9 +22377,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{
\cs_new_protected:Npn \__cctab_new:N #1
- { \intarray_new:Nn #1 { 257 } }
+ {
+ \debug_suspend:
+ \intarray_new:Nn #1 { 257 }
+ \debug_resume:
+ }
\cs_new_protected:Npn \__cctab_gstore:Nnn #1#2#3
- { \intarray_gset:Nnn #1 { \int_eval:n { #2 + 1 } } {#3} }
+ { \intarray_gset:Nnn #1 { #2 + 1 } {#3} }
\cs_new_protected:Npn \cctab_new:N #1
{
\__kernel_chk_if_free_cs:N #1
@@ -22622,8 +22642,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \cctab_const:Nn #1#2
{
- \cctab_new:N #1
- \cctab_gset:Nn #1 {#2}
+ \__kernel_chk_if_free_cs:N #1
+ \__cctab_new:N #1
+ \group_begin:
+ \cctab_select:N \c_initex_cctab
+ #2 \scan_stop:
+ \__cctab_gset:n {#1}
+ \group_end:
}
\cs_generate_variant:Nn \cctab_const:Nn { c }
\cctab_new:N \c_initex_cctab
@@ -31784,33 +31809,130 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__pdf_backend_compress_objects:n { \c_false_bool }
}
}
+\int_new:N \g__pdf_backend_object_int
\cs_new_protected:Npn \pdf_object_new:n #1
{
- \__pdf_backend_object_new:n {#1}
- \cs_new_eq:cc
- { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
- { c__pdf_object_ \tl_to_str:n {#1} _int }
+ \__pdf_backend_object_new:
+ \__pdf_object_record:nN {#1} \g__pdf_backend_object_int
}
\cs_new_protected:Npn \pdf_object_write:nnn #1#2#3
{
- \__pdf_backend_object_write:nnn {#1} {#2} {#3}
+ \exp_args:Ne \__pdf_backend_object_write:nnn
+ { \__pdf_object_retrieve:n {#1} } {#2} {#3}
\bool_gset_true:N \g__pdf_init_bool
}
\cs_generate_variant:Nn \pdf_object_write:nnn { nne , nnx }
-\cs_new:Npn \pdf_object_ref:n #1 { \__pdf_backend_object_ref:n {#1} }
-\cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2
+\cs_new:Npn \pdf_object_ref:n #1
{
- \__pdf_backend_object_now:nn {#1} {#2}
- \bool_gset_true:N \g__pdf_init_bool
+ \exp_args:Ne \__pdf_backend_object_ref:n
+ { \__pdf_object_retrieve:n {#1} }
+ }
+\cs_new:Npn \__kernel_pdf_object_id:n #1
+ {
+ \exp_args:Ne \__pdf_backend_object_id:n
+ { \__pdf_object_retrieve:n {#1} }
+ }
+\sys_if_engine_luatex:F
+ {
+ \cs_new_protected:Npn \__pdf_object_record:nN #1#2
+ {
+ \int_const:cn
+ { c__pdf_object_ #1 _int } {#2}
+ }
+ \cs_new:Npn \__pdf_object_retrieve:n #1
+ {
+ \int_if_exist:cTF { c__pdf_object_ #1 _int }
+ {
+ \int_use:c
+ { c__pdf_object_ #1 _int }
+ }
+ { 0 }
+ }
}
-\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { ne , nx }
-\cs_new:Npn \pdf_object_ref_last: { \__pdf_backend_object_last: }
\prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF }
{
- \int_if_exist:cTF { c__pdf_object_ \tl_to_str:n {#1} _int }
- \prg_return_true:
+ \int_compare:nNnTF { \__pdf_object_retrieve:n {#1} } = 0
\prg_return_false:
+ \prg_return_true:
+ }
+\cs_new_protected:Npn \pdf_object_new_indexed:nn #1#2
+ {
+ \__pdf_backend_object_new:
+ \__pdf_object_record:neN {#1}
+ { \int_eval:n {#2} } \g__pdf_backend_object_int
+ }
+\cs_new_protected:Npn \pdf_object_write_indexed:nnnn #1#2#3#4
+ {
+ \exp_args:Ne \__pdf_backend_object_write:nnn
+ { \__pdf_object_retrieve:ne {#1} { \int_eval:n {#2} } } {#3} {#4}
+ \bool_gset_true:N \g__pdf_init_bool
+ }
+\cs_generate_variant:Nn \pdf_object_write_indexed:nnnn { nnne }
+\cs_new:Npn \pdf_object_ref_indexed:nn #1#2
+ {
+ \exp_args:Ne \__pdf_backend_object_ref:n
+ { \__pdf_object_retrieve:ne {#1} { \int_eval:n {#2} } }
+ }
+\cs_new:Npn \__kernel_pdf_object_id_indexed:nn #1#2
+ {
+ \exp_args:Ne \__pdf_backend_object_id:n
+ { \__pdf_object_retrieve:ne {#1} { \int_eval:n {#2} } }
+ }
+\sys_if_engine_luatex:F
+ {
+ \cs_new_protected:Npn \__pdf_object_record:nnN #1#2#3
+ {
+ \use:e
+ {
+ \__pdf_object_record:NnN
+ \__pdf_object_index_split:nn {#1} {#2}
+ \exp_not:N #3
+ }
+ }
+ \cs_new_protected:Npn \__pdf_object_record:NnN #1#2#3
+ {
+ \intarray_if_exist:NF #1
+ { \intarray_new:Nn #1 \c__pdf_object_block_size_int }
+ \intarray_gset:Nnn #1 {#2} #3
+ }
+ \cs_new:Npn \__pdf_object_retrieve:nn #1#2
+ {
+ \use:e
+ {
+ \exp_not:N \__pdf_object_retrieve:Nn
+ \__pdf_object_index_split:nn {#1} {#2}
+ }
+ }
+ \cs_new:Npn \__pdf_object_retrieve:Nn #1#2
+ { \intarray_item:Nn #1 {#2} }
+ \cs_new:Npn \__pdf_object_index_split:nn #1#2
+ {
+ \exp_not:c
+ {
+ g__pdf_object_ #1 _
+ \int_eval:n
+ {
+ \int_div_truncate:nn { #2 - 1 }
+ \c__pdf_object_block_size_int + 1
+ }
+ _intarray
+ }
+ {
+ \int_eval:n
+ { \int_mod:nn { #2 - 1 } \c__pdf_object_block_size_int + 1 }
+ }
+ }
+ \int_const:Nn \c__pdf_object_block_size_int { 10000 }
+ }
+\cs_generate_variant:Nn \__pdf_object_record:nnN { ne }
+\cs_generate_variant:Nn \__pdf_object_retrieve:nn { ne }
+\cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2
+ {
+ \exp_args:Ne \__pdf_backend_object_now:nn {#1} {#2}
+ \bool_gset_true:N \g__pdf_init_bool
}
+\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { ne , nx }
+\cs_new:Npn \pdf_object_ref_last: { \__pdf_backend_object_last: }
\cs_new:Npn \pdf_pageobject_ref:n #1
{ \__pdf_backend_pageobject_ref:n {#1} }
\prg_new_conditional:Npnn \pdf_version_compare:Nn #1#2 { p , T , F , TF }
@@ -37365,6 +37487,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
+\cs_new_protected:Npn \prop_put_if_new:Nnn { \prop_put_if_not_in:Nnn }
+\cs_new_protected:Npn \prop_gput_if_new:Nnn { \prop_gput_if_not_in:Nnn }
+\cs_generate_variant:Nn \prop_put_if_new:Nnn
+ { NnV , NV , c , cnV , cV }
+\cs_generate_variant:Nn \prop_gput_if_new:Nnn
+ { NnV , NV , c , cnV , cV }
%%
%%
%% End of file `expl3-code.tex'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 213c07e7254..dd19a6f698a 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{2024-03-14}%
+\def\ExplFileDate{2024-04-11}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
index 6120a015e75..9c853155636 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{2024-03-14}%
+\def\ExplFileDate{2024-04-11}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
index 0ed3d56ab8c..f436dc4daf3 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
@@ -9,6 +9,7 @@
-- l3sys.dtx (with options: `package,lua')
-- l3token.dtx (with options: `package,lua')
-- l3intarray.dtx (with options: `package,lua')
+-- l3pdf.dtx (with options: `package,lua')
--
-- Copyright (C) 1990-2024 The LaTeX Project
--
@@ -418,11 +419,11 @@ do
[cmd'outer_call' or cmd'tolerant_call'] = true,
[cmd'long_outer_call' or cmd'tolerant_protected_call'] = true,
[cmd'assign_glue' or cmd'register_glue'] = index_not_nil,
- [cmd'assign_mu_glue' or cmd'register_mu_glue'] = index_not_nil,
+ [cmd'assign_mu_glue' or cmd'register_mu_glue' or cmd'register_muglue'] = index_not_nil,
[cmd'assign_toks' or cmd'register_toks'] = index_not_nil,
- [cmd'assign_int' or cmd'register_int'] = index_not_nil,
+ [cmd'assign_int' or cmd'register_int' or cmd'register_integer'] = index_not_nil,
[cmd'assign_attr' or cmd'register_attribute'] = true,
- [cmd'assign_dimen' or cmd'register_dimen'] = index_not_nil,
+ [cmd'assign_dimen' or cmd'register_dimen' or cmd'register_dimension'] = index_not_nil,
}
luacmd("__token_if_primitive_lua:N", function()
@@ -569,3 +570,49 @@ luacmd('__intarray_gset_range:w', function()
from = from + 1
end
end, 'global', 'protected')
+-- File: l3pdf.dtx
+
+local scan_int = token.scan_int
+local scan_string = token.scan_string
+local cprint = tex.cprint
+
+local __pdf_objects_named = {}
+local __pdf_objects_indexed = {}
+
+luacmd('__pdf_object_record:nN', function()
+ local name = scan_string()
+ local n = scan_int()
+ __pdf_objects_named[name] = n
+end,'protected','global')
+
+local function object_id(name,index)
+ if index then
+ return __pdf_objects_indexed[name][index] or 0
+ else
+ return __pdf_objects_named[name] or 0
+ end
+end
+
+luacmd('__pdf_object_retrieve:n', function()
+ local name = scan_string()
+ return cprint(12,tostring(object_id(name)))
+end,'global')
+
+ltx.pdf = ltx.pdf or {}
+ltx.pdf.object_id = object_id
+
+
+luacmd('__pdf_object_record:nnN', function()
+ local name = scan_string()
+ local index = tonumber(scan_string())
+ local n = scan_int()
+ __pdf_objects_indexed[name] = __pdf_objects_indexed[name] or {}
+ __pdf_objects_indexed[name][index] = n
+end,'protected','global')
+
+luacmd('__pdf_object_retrieve:nn', function()
+ local name = scan_string()
+ local index = tonumber(scan_string())
+ return cprint(12,tostring(object_id(name,index)))
+end,'global')
+
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 4fcce5872d7..17f9599acdb 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{2024-03-14}%
+\def\ExplFileDate{2024-04-11}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
index dd2820e0385..8b210aa484a 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}{2024-03-14}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-04-11}{}{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
@@ -470,7 +470,7 @@
\prop_pop:NnNF
\prop_pop:NnNTF
\prop_put:Nnn
- \prop_put_if_new:Nnn
+ \prop_put_if_not_in:Nnn
\prop_put_from_keyval:Nn
\prop_remove:Nn
\prop_set_eq:NN
@@ -551,7 +551,7 @@
\prop_gpop:NnNF
\prop_gpop:NnNTF
\prop_gput:Nnn
- \prop_gput_if_new:Nnn
+ \prop_gput_if_not_in:Nnn
\prop_gput_from_keyval:Nn
\prop_gremove:Nn
\prop_gset_eq:NN
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
index c91ab01446c..55284d08838 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
@@ -20,7 +20,7 @@
%%
%% File: l3doc.dtx
\RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2024-03-14}{}
+\ProvidesExplClass{l3doc}{2024-04-11}{}
{L3 Experimental documentation class}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
@@ -798,6 +798,8 @@
{
\tl_remove_all:Ne \l__codedoc_tmpa_tl
{ \iow_char:N \^^M \c_percent_str }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl
+ { \token_to_str:N \obeyedline \c_space_tl \c_percent_str }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^I }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^M }