diff options
author | Karl Berry <karl@freefriends.org> | 2024-04-30 20:03:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-04-30 20:03:09 +0000 |
commit | 753708379c1fbd17a96f1a6788c94ce1fa1208d7 (patch) | |
tree | d1bfa8c85ad78bf1312298d97eb72490baa44683 /Master/texmf-dist/tex/latex/l3kernel | |
parent | 93ae2978eea5bd5c39e8e0ac208a658c4c0c2e05 (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.tex | 190 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3.ltx | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3.lua | 53 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/l3debug.def | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/l3doc.cls | 4 |
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 } |