diff options
author | Karl Berry <karl@freefriends.org> | 2024-03-14 20:24:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-03-14 20:24:49 +0000 |
commit | 7bad9b14c550da9ae08669e681e2d94c11bddd9e (patch) | |
tree | ed81b7a7d34eb2da325026d3977131cdb8044c00 /Master/texmf-dist/tex | |
parent | 2bb8d5e07c328b2737d7e4ba46365bffa060b64f (diff) |
l3 (14mar24)
git-svn-id: svn://tug.org/texlive/trunk@70637 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
25 files changed, 585 insertions, 695 deletions
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def index 128c0026999..667093f3174 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvipdfmx.def}{2024-02-20}{} + {l3backend-dvipdfmx.def}{2024-03-14}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -798,20 +798,17 @@ %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p:} + { \pdfmanagement_if_active_p: } { \pdfmanagement_add:nnn { Page / Resources / ExtGState } { opacity 1 } { << /ca ~ 1 /CA ~ 1 >> } } \tl_new:N \l__opacity_backend_fill_tl \tl_new:N \l__opacity_backend_stroke_tl +\tl_set:Nn \l__opacity_backend_fill_tl { 1 } +\tl_set:Nn \l__opacity_backend_stroke_tl { 1 } \cs_new_protected:Npn \__opacity_backend_select:n #1 { - \exp_args:Ne \__opacity_backend_select_aux:n - { \fp_eval:n { min(max(0,#1),1) } } - } -\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 - { \tl_set:Nn \l__opacity_backend_fill_tl {#1} \tl_set:Nn \l__opacity_backend_stroke_tl {#1} \pdfmanagement_add:nnn { Page / Resources / ExtGState } @@ -821,12 +818,6 @@ { /opacity #1 ~ gs } \group_insert_after:N \__opacity_backend_reset: } -\bool_lazy_and:nnF - { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p:} - { - \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } - } \cs_new_protected:Npn \__opacity_backend_reset: { \__kernel_backend_literal_pdf:n @@ -834,20 +825,20 @@ } \cs_new_protected:Npn \__opacity_backend_fill:n #1 { - \__opacity_backend_fill_stroke:ee - { \fp_eval:n { min(max(0,#1),1) } } - \l__opacity_backend_stroke_tl + \exp_args:Nno \__opacity_backend_fill_stroke:nn + { #1 } + { \l__opacity_backend_stroke_tl } } \cs_new_protected:Npn \__opacity_backend_stroke:n #1 { - \__opacity_backend_fill_stroke:ee - \l__opacity_backend_fill_tl - { \fp_eval:n { min(max(0,#1),1) } } + \exp_args:No \__opacity_backend_fill_stroke:nn + { \l__opacity_backend_fill_tl } + { #1 } } \cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { \str_if_eq:nnTF {#1} {#2} - { \__opacity_backend_select_aux:n {#1} } + { \__opacity_backend_select:n {#1} } { \tl_set:Nn \l__opacity_backend_fill_tl {#1} \tl_set:Nn \l__opacity_backend_stroke_tl {#2} @@ -855,14 +846,20 @@ { opacity.fill #1 } { << /ca ~ #1 >> } \pdfmanagement_add:nnn { Page / Resources / ExtGState } - { opacity.stroke #1 } + { opacity.stroke #2 } { << /CA ~ #2 >> } \__kernel_backend_literal_pdf:n { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } \group_insert_after:N \__opacity_backend_reset: } } -\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee } +\bool_lazy_and:nnF + { \cs_if_exist_p:N \pdfmanagement_if_active_p: } + { \pdfmanagement_if_active_p: } + { + \cs_gset_protected:Npn \__opacity_backend_select:n #1 { } + \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { } + } %% %% %% End of file `l3backend-dvipdfmx.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def index b808ec8c6de..d5bd655a922 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvips.def}{2024-02-20}{} + {l3backend-dvips.def}{2024-03-14}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -388,13 +388,14 @@ \cs_generate_variant:Nn \__draw_backend_literal:n { e } \cs_new_protected:Npn \__draw_backend_begin: { - \__kernel_backend_literal:n { ps::[begin] } + \__draw_backend_literal:n { [begin] } + \__draw_backend_literal:n { /draw.x~currentpoint~/draw.y~exch~def~def } \__draw_backend_literal:n { @beginspecial } } \cs_new_protected:Npn \__draw_backend_end: { \__draw_backend_literal:n { @endspecial } - \__kernel_backend_literal:n { ps::[end] } + \__draw_backend_literal:n { [end] } } \cs_new_protected:Npn \__draw_backend_scope_begin: { \__draw_backend_literal:n { save } } @@ -559,7 +560,10 @@ } \cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5 { - \__draw_backend_literal:n { @endspecial } + \__draw_backend_literal:n { save } + \__draw_backend_literal:n { 72~Resolution~div~72~VResolution~div~neg~scale } + \__draw_backend_literal:n { magscale { 1~DVImag~div~dup~scale } if } + \__draw_backend_literal:n { draw.x~neg~draw.y~neg~translate } \__draw_backend_literal:n { [end] } \__draw_backend_literal:n { [begin] } \__draw_backend_literal:n { save } @@ -575,7 +579,7 @@ \__draw_backend_literal:n { restore } \__draw_backend_literal:n { [end] } \__draw_backend_literal:n { [begin] } - \__draw_backend_literal:n { @beginspecial } + \__draw_backend_literal:n { restore } } %% File: l3backend-graphics.dtx \cs_new_protected:Npn \__graphics_backend_loaded:n #1 @@ -1025,25 +1029,20 @@ %% File: l3backend-opacity.dtx \cs_new_protected:Npn \__opacity_backend_select:n #1 { - \exp_args:Ne \__opacity_backend_select_aux:n - { \fp_eval:n { min(max(0,#1),1) } } - } -\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 - { \__opacity_backend:nnn {#1} { fill } { ca } \__opacity_backend:nnn {#1} { stroke } { CA } } \cs_new_protected:Npn \__opacity_backend_fill:n #1 { - \__opacity_backend:enn - { \fp_eval:n { min(max(0,#1),1) } } + \__opacity_backend:nnn + { #1 } { fill } { ca } } \cs_new_protected:Npn \__opacity_backend_stroke:n #1 { - \__opacity_backend:enn - { \fp_eval:n { min(max(0,#1),1) } } + \__opacity_backend:nnn + { #1 } { stroke } { CA } } @@ -1066,7 +1065,6 @@ ifelse } } -\cs_generate_variant:Nn \__opacity_backend:nnn { e } %% %% %% End of file `l3backend-dvips.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def index a51db469052..2e3c3cacb44 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvisvgm.def}{2024-02-20}{} + {l3backend-dvisvgm.def}{2024-03-14}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -663,9 +663,9 @@ \cs_new_protected:Npn \__opacity_backend_fill:n #1 { \__opacity_backend:nn {#1} { fill- } } \cs_new_protected:Npn \__opacity_backend_stroke:n #1 - { \__opacity_backend:nn { {#1} } { stroke- } } + { \__opacity_backend:nn {#1} { stroke- } } \cs_new_protected:Npn \__opacity_backend:nn #1#2 - { \__kernel_backend_scope:e { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } } + { \__kernel_backend_scope:e { #2 opacity = " #1 " } } %% %% %% End of file `l3backend-dvisvgm.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def index e4369908111..aaa8312d5d8 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-luatex.def}{2024-02-20}{} + {l3backend-luatex.def}{2024-03-14}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -838,7 +838,7 @@ %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p:} + { \pdfmanagement_if_active_p: } { \__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int { page ~ direct } { /opacity 1 ~ gs } @@ -847,13 +847,10 @@ } \tl_new:N \l__opacity_backend_fill_tl \tl_new:N \l__opacity_backend_stroke_tl +\tl_set:Nn \l__opacity_backend_fill_tl { 1 } +\tl_set:Nn \l__opacity_backend_stroke_tl { 1 } \cs_new_protected:Npn \__opacity_backend_select:n #1 { - \exp_args:Ne \__opacity_backend_select_aux:n - { \fp_eval:n { min(max(0,#1),1) } } - } -\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 - { \tl_set:Nn \l__opacity_backend_fill_tl {#1} \tl_set:Nn \l__opacity_backend_stroke_tl {#1} \pdfmanagement_add:nnn { Page / Resources / ExtGState } @@ -863,32 +860,26 @@ { /opacity #1 ~ gs } \group_insert_after:N \__opacity_backend_reset: } -\bool_lazy_and:nnF - { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p:} - { - \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } - } \cs_new_protected:Npn \__opacity_backend_reset: { \__kernel_color_backend_stack_pop:n \c__opacity_backend_stack_int } \cs_new_protected:Npn \__opacity_backend_fill:n #1 { - \__opacity_backend_fill_stroke:ee - { \fp_eval:n { min(max(0,#1),1) } } - \l__opacity_backend_stroke_tl + \exp_args:Nno \__opacity_backend_fill_stroke:nn + { #1 } + { \l__opacity_backend_stroke_tl } } \cs_new_protected:Npn \__opacity_backend_stroke:n #1 { - \__opacity_backend_fill_stroke:ee - \l__opacity_backend_fill_tl - { \fp_eval:n { min(max(0,#1),1) } } + \exp_args:No \__opacity_backend_fill_stroke:nn + { \l__opacity_backend_fill_tl } + { #1 } } \cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { \str_if_eq:nnTF {#1} {#2} - { \__opacity_backend_select_aux:n {#1} } + { \__opacity_backend_select:n {#1} } { \tl_set:Nn \l__opacity_backend_fill_tl {#1} \tl_set:Nn \l__opacity_backend_stroke_tl {#2} @@ -896,14 +887,20 @@ { opacity.fill #1 } { << /ca ~ #1 >> } \pdfmanagement_add:nnn { Page / Resources / ExtGState } - { opacity.stroke #1 } + { opacity.stroke #2 } { << /CA ~ #2 >> } \__kernel_color_backend_stack_push:nn \c__opacity_backend_stack_int { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } \group_insert_after:N \__opacity_backend_reset: } } -\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee } +\bool_lazy_and:nnF + { \cs_if_exist_p:N \pdfmanagement_if_active_p: } + { \pdfmanagement_if_active_p: } + { + \cs_gset_protected:Npn \__opacity_backend_select:n #1 { } + \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { } + } %% %% %% End of file `l3backend-luatex.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def index 0258ebe3284..2ef1d26d116 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-pdftex.def}{2024-02-20}{} + {l3backend-pdftex.def}{2024-03-14}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -837,7 +837,7 @@ %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p:} + { \pdfmanagement_if_active_p: } { \__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int { page ~ direct } { /opacity 1 ~ gs } @@ -846,13 +846,10 @@ } \tl_new:N \l__opacity_backend_fill_tl \tl_new:N \l__opacity_backend_stroke_tl +\tl_set:Nn \l__opacity_backend_fill_tl { 1 } +\tl_set:Nn \l__opacity_backend_stroke_tl { 1 } \cs_new_protected:Npn \__opacity_backend_select:n #1 { - \exp_args:Ne \__opacity_backend_select_aux:n - { \fp_eval:n { min(max(0,#1),1) } } - } -\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 - { \tl_set:Nn \l__opacity_backend_fill_tl {#1} \tl_set:Nn \l__opacity_backend_stroke_tl {#1} \pdfmanagement_add:nnn { Page / Resources / ExtGState } @@ -862,32 +859,26 @@ { /opacity #1 ~ gs } \group_insert_after:N \__opacity_backend_reset: } -\bool_lazy_and:nnF - { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p:} - { - \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } - } \cs_new_protected:Npn \__opacity_backend_reset: { \__kernel_color_backend_stack_pop:n \c__opacity_backend_stack_int } \cs_new_protected:Npn \__opacity_backend_fill:n #1 { - \__opacity_backend_fill_stroke:ee - { \fp_eval:n { min(max(0,#1),1) } } - \l__opacity_backend_stroke_tl + \exp_args:Nno \__opacity_backend_fill_stroke:nn + { #1 } + { \l__opacity_backend_stroke_tl } } \cs_new_protected:Npn \__opacity_backend_stroke:n #1 { - \__opacity_backend_fill_stroke:ee - \l__opacity_backend_fill_tl - { \fp_eval:n { min(max(0,#1),1) } } + \exp_args:No \__opacity_backend_fill_stroke:nn + { \l__opacity_backend_fill_tl } + { #1 } } \cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { \str_if_eq:nnTF {#1} {#2} - { \__opacity_backend_select_aux:n {#1} } + { \__opacity_backend_select:n {#1} } { \tl_set:Nn \l__opacity_backend_fill_tl {#1} \tl_set:Nn \l__opacity_backend_stroke_tl {#2} @@ -895,14 +886,20 @@ { opacity.fill #1 } { << /ca ~ #1 >> } \pdfmanagement_add:nnn { Page / Resources / ExtGState } - { opacity.stroke #1 } + { opacity.stroke #2 } { << /CA ~ #2 >> } \__kernel_color_backend_stack_push:nn \c__opacity_backend_stack_int { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } \group_insert_after:N \__opacity_backend_reset: } } -\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee } +\bool_lazy_and:nnF + { \cs_if_exist_p:N \pdfmanagement_if_active_p: } + { \pdfmanagement_if_active_p: } + { + \cs_gset_protected:Npn \__opacity_backend_select:n #1 { } + \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { } + } %% %% %% End of file `l3backend-pdftex.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def index bab5a7d20ce..798bd686f2a 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-xetex.def}{2024-02-20}{} + {l3backend-xetex.def}{2024-03-14}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -845,20 +845,17 @@ %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p:} + { \pdfmanagement_if_active_p: } { \pdfmanagement_add:nnn { Page / Resources / ExtGState } { opacity 1 } { << /ca ~ 1 /CA ~ 1 >> } } \tl_new:N \l__opacity_backend_fill_tl \tl_new:N \l__opacity_backend_stroke_tl +\tl_set:Nn \l__opacity_backend_fill_tl { 1 } +\tl_set:Nn \l__opacity_backend_stroke_tl { 1 } \cs_new_protected:Npn \__opacity_backend_select:n #1 { - \exp_args:Ne \__opacity_backend_select_aux:n - { \fp_eval:n { min(max(0,#1),1) } } - } -\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 - { \tl_set:Nn \l__opacity_backend_fill_tl {#1} \tl_set:Nn \l__opacity_backend_stroke_tl {#1} \pdfmanagement_add:nnn { Page / Resources / ExtGState } @@ -868,12 +865,6 @@ { /opacity #1 ~ gs } \group_insert_after:N \__opacity_backend_reset: } -\bool_lazy_and:nnF - { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p:} - { - \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } - } \cs_new_protected:Npn \__opacity_backend_reset: { \__kernel_backend_literal_pdf:n @@ -881,20 +872,20 @@ } \cs_new_protected:Npn \__opacity_backend_fill:n #1 { - \__opacity_backend_fill_stroke:ee - { \fp_eval:n { min(max(0,#1),1) } } - \l__opacity_backend_stroke_tl + \exp_args:Nno \__opacity_backend_fill_stroke:nn + { #1 } + { \l__opacity_backend_stroke_tl } } \cs_new_protected:Npn \__opacity_backend_stroke:n #1 { - \__opacity_backend_fill_stroke:ee - \l__opacity_backend_fill_tl - { \fp_eval:n { min(max(0,#1),1) } } + \exp_args:No \__opacity_backend_fill_stroke:nn + { \l__opacity_backend_fill_tl } + { #1 } } \cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { \str_if_eq:nnTF {#1} {#2} - { \__opacity_backend_select_aux:n {#1} } + { \__opacity_backend_select:n {#1} } { \tl_set:Nn \l__opacity_backend_fill_tl {#1} \tl_set:Nn \l__opacity_backend_stroke_tl {#2} @@ -902,14 +893,20 @@ { opacity.fill #1 } { << /ca ~ #1 >> } \pdfmanagement_add:nnn { Page / Resources / ExtGState } - { opacity.stroke #1 } + { opacity.stroke #2 } { << /CA ~ #2 >> } \__kernel_backend_literal_pdf:n { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } \group_insert_after:N \__opacity_backend_reset: } } -\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee } +\bool_lazy_and:nnF + { \cs_if_exist_p:N \pdfmanagement_if_active_p: } + { \pdfmanagement_if_active_p: } + { + \cs_gset_protected:Npn \__opacity_backend_select:n #1 { } + \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 { } + } %% %% %% End of file `l3backend-xetex.def'. diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty index 0c4871ea36f..b8b9460cfd3 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty @@ -20,7 +20,7 @@ %% %% File: l3benchmark.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3benchmark}{2024-02-20}{} +\ProvidesExplPackage{l3benchmark}{2024-03-14}{} {L3 Experimental benchmarking} \fp_new:N \g_benchmark_duration_target_fp \fp_gset:Nn \g_benchmark_duration_target_fp { 1 } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty index a38d6f149d1..901aea3d8c2 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty @@ -29,7 +29,7 @@ %% File: l3draw.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3draw}{2024-02-20}{} +\ProvidesExplPackage{l3draw}{2024-03-14}{} {L3 Experimental core drawing support} \scan_new:N \s__draw_mark \scan_new:N \s__draw_stop @@ -262,8 +262,8 @@ \bool_new:N \l__draw_corner_arc_bool \cs_new_protected:Npn \draw_path_corner_arc:nn #1#2 { - \dim_set:Nn \l__draw_corner_xarc_dim {#1} - \dim_set:Nn \l__draw_corner_yarc_dim {#2} + \dim_set:Nn \l__draw_corner_xarc_dim { \fp_to_dim:n {#1} } + \dim_set:Nn \l__draw_corner_yarc_dim { \fp_to_dim:n {#2} } \bool_lazy_and:nnTF { \dim_compare_p:nNn \l__draw_corner_xarc_dim = { 0pt } } { \dim_compare_p:nNn \l__draw_corner_yarc_dim = { 0pt } } @@ -597,16 +597,18 @@ { \draw_path_ellipse:nnn {#1} { #2 , 0pt } { 0pt , #2 } } \cs_new_protected:Npn \draw_path_rectangle:nn #1#2 { - \__draw_point_process:nnn + \bool_lazy_or:nnTF + { \l__draw_corner_arc_bool } + { \l__draw_matrix_active_bool } { - \bool_lazy_or:nnTF - { \l__draw_corner_arc_bool } - { \l__draw_matrix_active_bool } - { \__draw_path_rectangle_rounded:nnnn } - { \__draw_path_rectangle:nnnn } + \__draw_point_process:nnn \__draw_path_rectangle_rounded:nnnn + {#1} {#2} + } + { + \__draw_point_process:nnn \__draw_path_rectangle:nnnn + { (#1) + ( \l__draw_xshift_dim , \l__draw_yshift_dim ) } + { #2 } } - {#1} - {#2} } \cs_new_protected:Npn \__draw_path_rectangle:nnnn #1#2#3#4 { @@ -637,8 +639,8 @@ \__draw_point_process:nnn { \__draw_path_grid_auxi:eennnn - { \dim_eval:n { \dim_abs:n {#1} } } - { \dim_eval:n { \dim_abs:n {#2} } } + { \dim_abs:n {#1} } + { \dim_abs:n {#2} } } {#3} {#4} } @@ -658,8 +660,8 @@ \cs_new_protected:Npn \__draw_path_grid_auxiii:nnnnnn #1#2#3#4#5#6 { \__draw_path_grid_auxiv:eennnnnn - { \fp_to_dim:n { #1 * trunc(#3/(#1)) } } - { \fp_to_dim:n { #2 * trunc(#4/(#2)) } } + { \fp_to_dim:n { #1 * ceil(#3/(#1)) } } + { \fp_to_dim:n { #2 * ceil(#4/(#2)) } } {#1} {#2} {#3} {#4} {#5} {#6} } \cs_new_protected:Npn \__draw_path_grid_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8 @@ -685,7 +687,6 @@ \bool_new:N \l__draw_path_use_clip_bool \bool_new:N \l__draw_path_use_fill_bool \bool_new:N \l__draw_path_use_stroke_bool -\bool_new:N \l__draw_path_use_bb_bool \bool_new:N \l__draw_path_use_clear_bool \cs_new_protected:Npn \draw_path_use:n #1 { @@ -703,6 +704,23 @@ } { \__draw_path_use:n { #1 , clear } } } +\cs_new_protected:Npn \draw_path_replace_bb: + { + \__draw_path_replace_bb:NnN x { max } + + \__draw_path_replace_bb:NnN y { max } + + \__draw_path_replace_bb:NnN x { min } - + \__draw_path_replace_bb:NnN y { min } - + \__draw_softpath_clear: + \__draw_path_reset_limits: + } +\cs_new_protected:Npn \__draw_path_replace_bb:NnN #1#2#3 + { + \dim_gset:cn { g__draw_ #1#2 _dim } + { + \dim_use:c { g__draw_path_ #1#2 _dim } + #3 0.5 \g__draw_linewidth_dim + } + } \cs_new_protected:Npn \__draw_path_use:n #1 { \bool_set_false:N \l__draw_path_use_clip_bool @@ -745,7 +763,10 @@ } } \bool_if:NT \l__draw_path_use_clear_bool - { \__draw_softpath_clear: } + { + \__draw_softpath_clear: + \__draw_path_reset_limits: + } } \cs_new_protected:Npn \__draw_path_use_action_draw: { @@ -758,12 +779,12 @@ } \cs_new_protected:Npn \__draw_path_use_stroke_bb: { - \__draw_path_use_stroke_bb_aux:NnN x { max } + - \__draw_path_use_stroke_bb_aux:NnN y { max } + - \__draw_path_use_stroke_bb_aux:NnN x { min } - - \__draw_path_use_stroke_bb_aux:NnN y { min } - + \__draw_path_use_bb:NnN x { max } + + \__draw_path_use_bb:NnN y { max } + + \__draw_path_use_bb:NnN x { min } - + \__draw_path_use_bb:NnN y { min } - } -\cs_new_protected:Npn \__draw_path_use_stroke_bb_aux:NnN #1#2#3 +\cs_new_protected:Npn \__draw_path_use_bb:NnN #1#2#3 { \dim_compare:nNnF { \dim_use:c { g__draw_ #1#2 _dim } } = { #3 -\c_max_dim } { @@ -1540,12 +1561,14 @@ { \__draw_backend_lineto:nn {#1} {#2} } \cs_new_protected:Npn \__draw_softpath_moveto_op:nn #1#2 { \__draw_backend_moveto:nn {#1} {#2} } -\cs_new_protected:Npn \__draw_softpath_roundpoint_op:nn #1#2 { } +\cs_new_protected:Npn \__draw_softpath_roundpoint_op:nn #1#2 + { \__draw_softpath_roundpoint_op:nn } \cs_new_protected:Npn \__draw_softpath_rectangle_opi:nn #1#2 { \__draw_softpath_rectangle_opi:nnNnn {#1} {#2} } \cs_new_protected:Npn \__draw_softpath_rectangle_opi:nnNnn #1#2#3#4#5 { \__draw_backend_rectangle:nnnn {#1} {#2} {#4} {#5} } - \cs_new_protected:Npn \__draw_softpath_rectangle_opii:nn #1#2 { } +\cs_new_protected:Npn \__draw_softpath_rectangle_opii:nn #1#2 + { \__draw_softpath_rectangle_opii:nn } \tl_new:N \l__draw_softpath_main_tl \tl_new:N \l__draw_softpath_part_tl \tl_new:N \l__draw_softpath_curve_end_tl @@ -1826,6 +1849,7 @@ \fp_zero:N \l__draw_matrix_b_fp \fp_zero:N \l__draw_matrix_c_fp \fp_set:Nn \l__draw_matrix_d_fp { 1 } + \bool_set_false:N \l__draw_matrix_active_bool } \cs_new_protected:Npn \draw_transform_shift_reset: { @@ -1898,7 +1922,7 @@ \fp_to_dim:n { #1 + - ( #3 * \l__draw_matrix_a_fp + #4 * \l__draw_matrix_b_fp ) + ( #3 * \l__draw_matrix_a_fp + #4 * \l__draw_matrix_c_fp ) } } \dim_set:Nn \l__draw_yshift_dim @@ -1906,7 +1930,7 @@ \fp_to_dim:n { #2 + - ( #3 * \l__draw_matrix_c_fp + #4 * \l__draw_matrix_d_fp ) + ( #3 * \l__draw_matrix_b_fp + #4 * \l__draw_matrix_d_fp ) } } } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty index 5ed4c89cc3b..767f6dd660a 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3graphics.dtx -\ProvidesExplPackage{l3graphics}{2024-02-20}{} +\ProvidesExplPackage{l3graphics}{2024-03-14}{} {L3 Experimental graphics inclusion support} \dim_new:N \l__graphics_internal_dim \ior_new:N \l__graphics_internal_ior diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty b/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty index 0a2efdb9e64..fb7b9c97bd3 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty @@ -20,8 +20,9 @@ %% %% File: l3opacity.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3opacity}{2024-02-20}{} +\ProvidesExplPackage{l3opacity}{2024-03-14}{} {L3 Experimental opacity support} +\fp_new:N \l__opacity_tmp_fp \cs_new_protected:Npn \opacity_select:n #1 { \__opacity_select:nN {#1} \__opacity_backend_select:n } \cs_new_protected:Npn \opacity_fill:n #1 @@ -29,14 +30,13 @@ \cs_new_protected:Npn \opacity_stroke:n #1 { \__opacity_select:nN {#1} \__opacity_backend_stroke:n } \cs_new_protected:Npn \__opacity_select:nN #1#2 - { \exp_args:Ne \__opacity_select_aux:nN { \fp_eval:n {#1} } #2 } -\cs_new_protected:Npn \__opacity_select_aux:nN #1#2 { + \fp_set:Nn \l__opacity_tmp_fp { #1 } \bool_lazy_or:nnTF - { \fp_compare_p:nNn {#1} < { 0 } } - { \fp_compare_p:nNn {#1} > { 1 } } + { \fp_compare_p:nNn \l__opacity_tmp_fp < \c_zero_fp } + { \fp_compare_p:nNn \l__opacity_tmp_fp > \c_one_fp } { \msg_error:nnn { opacity } { out-of-range } {#1} } - { #2 {#1} } + { \exp_args:Ne #2 { \fp_use:N \l__opacity_tmp_fp } } } \msg_new:nnnn { opacity } { out-of-range } { Opacity~value~out~of~range. } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty index 056a8239407..2bdd71ddb7d 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty @@ -20,7 +20,7 @@ %% %% File: l3str-format.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3str-format}{2024-02-20}{} +\ProvidesExplPackage{l3str-format}{2024-03-14}{} {L3 Experimental string formatting} \cs_generate_variant:Nn \use:nn { nf } \cs_generate_variant:Nn \use:nnn { fnf } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty deleted file mode 100644 index f08e91bba4b..00000000000 --- a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty +++ /dev/null @@ -1,211 +0,0 @@ -%% -%% This is file `l3sys-shell.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% l3sys-shell.dtx (with options: `package') -%% -%% Copyright (C) 2018-2024 The LaTeX Project -%% -%% It may be distributed and/or modified under the conditions of -%% the LaTeX Project Public License (LPPL), either version 1.3c of -%% this license or (at your option) any later version. The latest -%% version of this license is in the file: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% This file is part of the "l3experimental bundle" (The Work in LPPL) -%% and all files in that bundle must be distributed together. -%% -%% File: l3sys-shell.dtx -\RequirePackage{expl3} -\ProvidesExplPackage{l3sys-shell}{2024-02-20}{} - {L3 Experimental system shell functions} -\scan_new:N \s__sys_stop -\quark_new:N \q__sys_nil -\__kernel_quark_new_conditional:Nn \__sys_quark_if_nil:N { F } -\cs_new:Npn \__sys_path_to_win:n #1 - { - \exp_after:wN \__sys_path_to_win:w \tl_to_str:n {#1} ~ \s__sys_stop - } -\cs_new:Npn \__sys_path_to_win:w #1 ~ #2 \s__sys_stop - { - \__sys_path_to_win:N #1 \q__sys_nil - \tl_if_empty:nF {#2} - { - \c_space_tl - \__sys_path_to_win:w #2 \s__sys_stop - } - } -\cs_new:Npn \__sys_path_to_win:N #1 - { - \__sys_quark_if_nil:NF #1 - { - \token_if_eq_meaning:NNTF #1 / - { \c_backslash_str } - {#1} - \__sys_path_to_win:N - } - } -\cs_new_protected:Npe \sys_shell_cp:nn #1#2 - { - \sys_if_shell_unrestricted:T - { - \sys_shell_now:e - { - \sys_if_platform_unix:T - { - cp~-f~ \exp_not:N \tl_to_str:n {#1} ~ - \exp_not:N \tl_to_str:n {#2} - } - \sys_if_platform_windows:T - { - copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~ - \exp_not:N \__sys_path_to_win:n {#2} - } - } - } - } -\cs_new_protected:Npe \sys_shell_mkdir:n #1 - { - \sys_if_shell_unrestricted:T - { - \sys_shell_now:e - { - \sys_if_platform_unix:T - { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} } - \sys_if_platform_windows:T - { - if~not~exist~ - \exp_not:N \__sys_path_to_win:n { #1 / nul } ~ - mkdir~ \exp_not:N \__sys_path_to_win:n {#1} - } - } - } - } -\cs_new_protected:Npe \sys_shell_mv:nn #1#2 - { - \sys_if_shell_unrestricted:T - { - \sys_shell_now:e - { - \sys_if_platform_unix:T - { - mv~ \exp_not:N \tl_to_str:n {#1} ~ - \exp_not:N \tl_to_str:n {#2} - } - \sys_if_platform_windows:T - { - copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~ - \exp_not:N \__sys_path_to_win:n {#2} - \token_to_str:N & \token_to_str:N & - del~/f~/q~\exp_not:N \__sys_path_to_win:n {#1} - } - } - } - } -\cs_new_protected:Npe \sys_shell_rm:n #1 - { - \sys_if_shell_unrestricted:T - { - \sys_shell_now:e - { - \sys_if_platform_unix:T - { rm~-f~ \exp_not:N \tl_to_str:n {#1} } - \sys_if_platform_windows:T - { del~/f~/q~ \exp_not:N \__sys_path_to_win:n {#1} } - } - } - } -\cs_new_protected:Npe \sys_shell_rmdir:n #1 - { - \sys_if_shell_unrestricted:T - { - \sys_shell_mkdir:n {#1} - \sys_shell_now:e - { - \sys_if_platform_unix:T - { rm~-rf~ \exp_not:N \tl_to_str:n {#1} } - \sys_if_platform_windows:T - { rmdir~/s~/q~ \exp_not:N \__sys_path_to_win:n {#1} } - } - } - } -\seq_new:N \l__sys_tmp_seq -\tl_new:N \l__sys_tmp_tl -\cs_new_protected:Npe \sys_get_shell_pwd:N #1 - { - \sys_if_shell_unrestricted:T - { - \exp_not:N \sys_get_shell:nnN - { - \sys_if_platform_unix:T { pwd } - \sys_if_platform_windows:T { cd } - } - { - \char_set_catcode_other:N \exp_not:N \\ - \char_set_catcode_other:N \exp_not:N \# - \char_set_catcode_other:N \exp_not:N \~ - \char_set_catcode_other:N \exp_not:N \% - \char_set_catcode_space:N \exp_not:N \ % - \tex_endlinechar:D -1 \scan_stop: - } - \exp_not:N \l__sys_tmp_tl - \str_set:NV #1 \exp_not:N \l__sys_tmp_tl - } - } -\cs_new_protected:Npe \sys_shell_split_ls:nN #1#2 - { - \sys_if_shell_unrestricted:T - { - \exp_not:N \exp_args:Ne \exp_not:N \sys_get_shell:nnN - { - \sys_if_platform_unix:T { ls~-1~ #1 } - \sys_if_platform_windows:T - { dir~/b~/s~ \exp_not:N \__sys_path_to_win:n {#1} } - } - { - \ExplSyntaxOff - \char_set_catcode_other:N \exp_not:N \\ - \char_set_catcode_other:N \exp_not:N \# - \char_set_catcode_other:N \exp_not:N \~ - \char_set_catcode_other:N \exp_not:N \% - \char_set_catcode_other:n { 13 } - } - \exp_not:N \l__sys_tmp_tl - \str_set:NV \exp_not:N \l__sys_tmp_tl \exp_not:N \l__sys_tmp_tl - \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } } - \exp_not:N \l__sys_tmp_tl - \seq_pop_right:NN #2 \exp_not:N \l__sys_tmp_tl - \exp_not:N \tl_if_blank:eTF { \exp_not:N \seq_item:Nn #2 { 1 } } - { \seq_clear:N #2 } - \sys_if_platform_windows:T - { - \sys_get_shell_pwd:N \exp_not:N \l__sys_tmp_tl - \exp_not:N \exp_args:NV \exp_not:N \__sys_shell_split_ls:nN - \exp_not:N \l__sys_tmp_tl #2 - } - } - } -\sys_if_platform_windows:T - { - \cs_new_protected:Npe \__sys_shell_split_ls:nN #1#2 - { - \cs_set:Npn \exp_not:N \__sys_shell_split_ls:w #1 \c_backslash_str { } - \seq_set_eq:NN \exp_not:N \l__sys_tmp_seq #2 - \seq_clear:N #2 - \seq_map_inline:Nn \exp_not:N \l__sys_tmp_seq - { - \tl_set:Ne \exp_not:N \l__sys_tmp_tl - { \exp_not:N \__sys_shell_split_ls:w ##1 } - \tl_replace_all:Nnn \exp_not:N \l__sys_tmp_tl - { \c_backslash_str } { / } - \seq_put_right:NV #2 \exp_not:N \l__sys_tmp_tl - } - } - \cs_new:Npn \__sys_shell_split_ls:w { } - } -%% -%% -%% End of file `l3sys-shell.sty'. diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty index 8e0aad65502..063610202dd 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: xcoffins.dtx -\ProvidesExplPackage{xcoffins}{2024-02-20}{} +\ProvidesExplPackage{xcoffins}{2024-03-14}{} {L3 Experimental design level coffins} \keys_define:nn { coffin } { diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty index 6cedfc70fd0..4bda3024317 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3galley}{2024-02-20}{} +\ProvidesExplPackage{l3galley}{2024-03-14}{} {L3 Experimental galley code} \int_new:N \l__galley_tmp_int \seq_new:N \g__galley_tmpa_seq diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty index e74c47800fb..47e9e04c17e 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: xgalley.dtx -\ProvidesExplPackage{xgalley}{2024-02-20}{} +\ProvidesExplPackage{xgalley}{2024-03-14}{} {L3 Experimental galley} \RequirePackage{xtemplate,l3galley} \clist_new:N \l__galley_tmpa_clist diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 324ff825f1c..bc4dfe706a4 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -75,7 +75,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2024-02-20}% +\def\ExplFileDate{2024-03-14}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -235,7 +235,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \catcode 124 = 12\relax \catcode 126 = 10\relax \endlinechar = 32\relax -\chardef\l__kernel_expl_bool = 1\relax +\global\chardef\l__kernel_expl_bool = 1\relax \protected \def \ExplSyntaxOn { \bool_if:NF \l__kernel_expl_bool @@ -1450,47 +1450,47 @@ Type H <return> for immediate help}\def~{\errmessage{% \tex_let:D \tex_right:D \normalright \tex_fi:D %% File: l3basics.dtx -\tex_let:D \if_true: \tex_iftrue:D -\tex_let:D \if_false: \tex_iffalse:D -\tex_let:D \or: \tex_or:D -\tex_let:D \else: \tex_else:D -\tex_let:D \fi: \tex_fi:D -\tex_let:D \reverse_if:N \tex_unless:D -\tex_let:D \if:w \tex_if:D -\tex_let:D \if_charcode:w \tex_if:D -\tex_let:D \if_catcode:w \tex_ifcat:D -\tex_let:D \if_meaning:w \tex_ifx:D -\tex_let:D \if_bool:N \tex_ifodd:D -\tex_let:D \if_mode_math: \tex_ifmmode:D -\tex_let:D \if_mode_horizontal: \tex_ifhmode:D -\tex_let:D \if_mode_vertical: \tex_ifvmode:D -\tex_let:D \if_mode_inner: \tex_ifinner:D -\tex_let:D \if_cs_exist:N \tex_ifdefined:D -\tex_let:D \if_cs_exist:w \tex_ifcsname:D -\tex_let:D \cs:w \tex_csname:D -\tex_let:D \cs_end: \tex_endcsname:D -\tex_let:D \exp_after:wN \tex_expandafter:D -\tex_let:D \exp_not:N \tex_noexpand:D -\tex_let:D \exp_not:n \tex_unexpanded:D -\tex_let:D \exp:w \tex_romannumeral:D -\tex_chardef:D \exp_end: = 0 ~ -\tex_let:D \token_to_meaning:N \tex_meaning:D -\tex_let:D \cs_meaning:N \tex_meaning:D -\tex_let:D \tl_to_str:n \tex_detokenize:D -\tex_let:D \token_to_str:N \tex_string:D -\tex_let:D \__kernel_tl_to_str:w \tex_detokenize:D -\tex_let:D \scan_stop: \tex_relax:D -\tex_let:D \group_begin: \tex_begingroup:D -\tex_let:D \group_end: \tex_endgroup:D -\tex_let:D \if_int_compare:w \tex_ifnum:D -\tex_let:D \__int_to_roman:w \tex_romannumeral:D -\tex_let:D \group_insert_after:N \tex_aftergroup:D -\tex_long:D \tex_def:D \exp_args:Nc #1#2 +\tex_global:D \tex_let:D \if_true: \tex_iftrue:D +\tex_global:D \tex_let:D \if_false: \tex_iffalse:D +\tex_global:D \tex_let:D \or: \tex_or:D +\tex_global:D \tex_let:D \else: \tex_else:D +\tex_global:D \tex_let:D \fi: \tex_fi:D +\tex_global:D \tex_let:D \reverse_if:N \tex_unless:D +\tex_global:D \tex_let:D \if:w \tex_if:D +\tex_global:D \tex_let:D \if_charcode:w \tex_if:D +\tex_global:D \tex_let:D \if_catcode:w \tex_ifcat:D +\tex_global:D \tex_let:D \if_meaning:w \tex_ifx:D +\tex_global:D \tex_let:D \if_bool:N \tex_ifodd:D +\tex_global:D \tex_let:D \if_mode_math: \tex_ifmmode:D +\tex_global:D \tex_let:D \if_mode_horizontal: \tex_ifhmode:D +\tex_global:D \tex_let:D \if_mode_vertical: \tex_ifvmode:D +\tex_global:D \tex_let:D \if_mode_inner: \tex_ifinner:D +\tex_global:D \tex_let:D \if_cs_exist:N \tex_ifdefined:D +\tex_global:D \tex_let:D \if_cs_exist:w \tex_ifcsname:D +\tex_global:D \tex_let:D \cs:w \tex_csname:D +\tex_global:D \tex_let:D \cs_end: \tex_endcsname:D +\tex_global:D \tex_let:D \exp_after:wN \tex_expandafter:D +\tex_global:D \tex_let:D \exp_not:N \tex_noexpand:D +\tex_global:D \tex_let:D \exp_not:n \tex_unexpanded:D +\tex_global:D \tex_let:D \exp:w \tex_romannumeral:D +\tex_global:D \tex_chardef:D \exp_end: = 0 ~ +\tex_global:D \tex_let:D \token_to_meaning:N \tex_meaning:D +\tex_global:D \tex_let:D \cs_meaning:N \tex_meaning:D +\tex_global:D \tex_let:D \tl_to_str:n \tex_detokenize:D +\tex_global:D \tex_let:D \token_to_str:N \tex_string:D +\tex_global:D \tex_let:D \__kernel_tl_to_str:w \tex_detokenize:D +\tex_global:D \tex_let:D \scan_stop: \tex_relax:D +\tex_global:D \tex_let:D \group_begin: \tex_begingroup:D +\tex_global:D \tex_let:D \group_end: \tex_endgroup:D +\tex_global:D \tex_let:D \if_int_compare:w \tex_ifnum:D +\tex_global:D \tex_let:D \__int_to_roman:w \tex_romannumeral:D +\tex_global:D \tex_let:D \group_insert_after:N \tex_aftergroup:D +\tex_long:D \tex_gdef:D \exp_args:Nc #1#2 { \exp_after:wN #1 \cs:w #2 \cs_end: } -\tex_long:D \tex_def:D \exp_args:cc #1#2 +\tex_long:D \tex_gdef:D \exp_args:cc #1#2 { \cs:w #1 \exp_after:wN \cs_end: \cs:w #2 \cs_end: } -\tex_def:D \token_to_str:c { \exp_args:Nc \token_to_str:N } -\tex_long:D \tex_def:D \cs_meaning:c #1 +\tex_gdef:D \token_to_str:c { \exp_args:Nc \token_to_str:N } +\tex_long:D \tex_gdef:D \cs_meaning:c #1 { \if_cs_exist:w #1 \cs_end: \exp_after:wN \use_i:nn @@ -1500,168 +1500,168 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_args:Nc \cs_meaning:N {#1} } { \tl_to_str:n {undefined} } } -\tex_let:D \token_to_meaning:c = \cs_meaning:c -\tex_chardef:D \c_zero_int = 0 ~ +\tex_global:D \tex_let:D \token_to_meaning:c = \cs_meaning:c +\tex_global:D \tex_chardef:D \c_zero_int = 0 ~ \tex_ifdefined:D \tex_luatexversion:D - \tex_chardef:D \c_max_register_int = 65 535 ~ + \tex_global:D \tex_chardef:D \c_max_register_int = 65 535 ~ \tex_else:D \tex_ifdefined:D \tex_omathchardef:D - \tex_omathchardef:D \c_max_register_int = 65535 ~ + \tex_global:D \tex_omathchardef:D \c_max_register_int = 65535 ~ \tex_else:D - \tex_mathchardef:D \c_max_register_int = 32767 ~ + \tex_global:D \tex_mathchardef:D \c_max_register_int = 32767 ~ \tex_fi:D \tex_fi:D -\tex_let:D \cs_set_nopar:Npn \tex_def:D -\tex_let:D \cs_set_nopar:Npe \tex_edef:D -\tex_let:D \cs_set_nopar:Npx \tex_edef:D -\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npn - { \tex_long:D \tex_def:D } -\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npe - { \tex_long:D \tex_edef:D } -\tex_let:D \cs_set:Npx \cs_set:Npe -\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npn - { \tex_protected:D \tex_def:D } -\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npe - { \tex_protected:D \tex_edef:D } -\tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe -\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npn - { \tex_protected:D \tex_long:D \tex_def:D } -\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npe - { \tex_protected:D \tex_long:D \tex_edef:D } -\tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe -\tex_let:D \cs_gset_nopar:Npn \tex_gdef:D -\tex_let:D \cs_gset_nopar:Npe \tex_xdef:D -\tex_let:D \cs_gset_nopar:Npx \tex_xdef:D -\cs_set_protected:Npn \cs_gset:Npn +\tex_global:D \tex_let:D \cs_gset_nopar:Npn \tex_gdef:D +\tex_global:D \tex_let:D \cs_gset_nopar:Npe \tex_xdef:D +\tex_global:D \tex_let:D \cs_gset_nopar:Npx \tex_xdef:D +\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset:Npn { \tex_long:D \tex_gdef:D } -\cs_set_protected:Npn \cs_gset:Npe +\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset:Npe { \tex_long:D \tex_xdef:D } -\tex_let:D \cs_gset:Npx \cs_gset:Npe -\cs_set_protected:Npn \cs_gset_protected_nopar:Npn +\tex_global:D \tex_let:D \cs_gset:Npx \cs_gset:Npe +\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected_nopar:Npn { \tex_protected:D \tex_gdef:D } -\cs_set_protected:Npn \cs_gset_protected_nopar:Npe +\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected_nopar:Npe { \tex_protected:D \tex_xdef:D } -\tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe -\cs_set_protected:Npn \cs_gset_protected:Npn +\tex_global:D \tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe +\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected:Npn { \tex_protected:D \tex_long:D \tex_gdef:D } -\cs_set_protected:Npn \cs_gset_protected:Npe +\tex_protected:D \tex_long:D \tex_gdef:D \cs_gset_protected:Npe { \tex_protected:D \tex_long:D \tex_xdef:D } -\tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe -\cs_set_nopar:Npn \l__exp_internal_tl { } -\cs_set:Npn \use:c #1 { \cs:w #1 \cs_end: } -\cs_set_protected:Npn \use:x #1 +\tex_global:D \tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe +\tex_global:D \tex_let:D \cs_set_nopar:Npn \tex_def:D +\tex_global:D \tex_let:D \cs_set_nopar:Npe \tex_edef:D +\tex_global:D \tex_let:D \cs_set_nopar:Npx \tex_edef:D +\cs_gset_protected:Npn \cs_set:Npn + { \tex_long:D \tex_def:D } +\cs_gset_protected:Npn \cs_set:Npe + { \tex_long:D \tex_edef:D } +\tex_global:D \tex_let:D \cs_set:Npx \cs_set:Npe +\cs_gset_protected:Npn \cs_set_protected_nopar:Npn + { \tex_protected:D \tex_def:D } +\cs_gset_protected:Npn \cs_set_protected_nopar:Npe + { \tex_protected:D \tex_edef:D } +\tex_global:D \tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe +\cs_gset_protected:Npn \cs_set_protected:Npn + { \tex_protected:D \tex_long:D \tex_def:D } +\cs_gset_protected:Npn \cs_set_protected:Npe + { \tex_protected:D \tex_long:D \tex_edef:D } +\tex_global:D \tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe +\cs_gset_nopar:Npn \l__exp_internal_tl { } +\cs_gset:Npn \use:c #1 { \cs:w #1 \cs_end: } +\cs_gset_protected:Npn \use:x #1 { \cs_set_nopar:Npx \l__exp_internal_tl {#1} \l__exp_internal_tl } -\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} } -\cs_set:Npn \use:n #1 {#1} -\cs_set:Npn \use:nn #1#2 {#1#2} -\cs_set:Npn \use:nnn #1#2#3 {#1#2#3} -\cs_set:Npn \use:nnnn #1#2#3#4 {#1#2#3#4} -\cs_set:Npn \use_i:nn #1#2 {#1} -\cs_set:Npn \use_ii:nn #1#2 {#2} -\cs_set:Npn \use_i:nnn #1#2#3 {#1} -\cs_set:Npn \use_ii:nnn #1#2#3 {#2} -\cs_set:Npn \use_iii:nnn #1#2#3 {#3} -\cs_set:Npn \use_i:nnnn #1#2#3#4 {#1} -\cs_set:Npn \use_ii:nnnn #1#2#3#4 {#2} -\cs_set:Npn \use_iii:nnnn #1#2#3#4 {#3} -\cs_set:Npn \use_iv:nnnn #1#2#3#4 {#4} -\cs_set:Npn \use_i:nnnnn #1#2#3#4#5 {#1} -\cs_set:Npn \use_ii:nnnnn #1#2#3#4#5 {#2} -\cs_set:Npn \use_iii:nnnnn #1#2#3#4#5 {#3} -\cs_set:Npn \use_iv:nnnnn #1#2#3#4#5 {#4} -\cs_set:Npn \use_v:nnnnn #1#2#3#4#5 {#5} -\cs_set:Npn \use_i:nnnnnn #1#2#3#4#5#6 {#1} -\cs_set:Npn \use_ii:nnnnnn #1#2#3#4#5#6 {#2} -\cs_set:Npn \use_iii:nnnnnn #1#2#3#4#5#6 {#3} -\cs_set:Npn \use_iv:nnnnnn #1#2#3#4#5#6 {#4} -\cs_set:Npn \use_v:nnnnnn #1#2#3#4#5#6 {#5} -\cs_set:Npn \use_vi:nnnnnn #1#2#3#4#5#6 {#6} -\cs_set:Npn \use_i:nnnnnnn #1#2#3#4#5#6#7 {#1} -\cs_set:Npn \use_ii:nnnnnnn #1#2#3#4#5#6#7 {#2} -\cs_set:Npn \use_iii:nnnnnnn #1#2#3#4#5#6#7 {#3} -\cs_set:Npn \use_iv:nnnnnnn #1#2#3#4#5#6#7 {#4} -\cs_set:Npn \use_v:nnnnnnn #1#2#3#4#5#6#7 {#5} -\cs_set:Npn \use_vi:nnnnnnn #1#2#3#4#5#6#7 {#6} -\cs_set:Npn \use_vii:nnnnnnn #1#2#3#4#5#6#7 {#7} -\cs_set:Npn \use_i:nnnnnnnn #1#2#3#4#5#6#7#8 {#1} -\cs_set:Npn \use_ii:nnnnnnnn #1#2#3#4#5#6#7#8 {#2} -\cs_set:Npn \use_iii:nnnnnnnn #1#2#3#4#5#6#7#8 {#3} -\cs_set:Npn \use_iv:nnnnnnnn #1#2#3#4#5#6#7#8 {#4} -\cs_set:Npn \use_v:nnnnnnnn #1#2#3#4#5#6#7#8 {#5} -\cs_set:Npn \use_vi:nnnnnnnn #1#2#3#4#5#6#7#8 {#6} -\cs_set:Npn \use_vii:nnnnnnnn #1#2#3#4#5#6#7#8 {#7} -\cs_set:Npn \use_viii:nnnnnnnn #1#2#3#4#5#6#7#8 {#8} -\cs_set:Npn \use_i:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#1} -\cs_set:Npn \use_ii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#2} -\cs_set:Npn \use_iii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#3} -\cs_set:Npn \use_iv:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#4} -\cs_set:Npn \use_v:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#5} -\cs_set:Npn \use_vi:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#6} -\cs_set:Npn \use_vii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#7} -\cs_set:Npn \use_viii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#8} -\cs_set:Npn \use_ix:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#9} -\cs_set:Npn \use_i_ii:nnn #1#2#3 {#1#2} -\cs_set:Npn \use_ii_i:nn #1#2 { #2 #1 } -\cs_set:Npn \use_none_delimit_by_q_nil:w #1 \q_nil { } -\cs_set:Npn \use_none_delimit_by_q_stop:w #1 \q_stop { } -\cs_set:Npn \use_none_delimit_by_q_recursion_stop:w #1 \q_recursion_stop { } -\cs_set:Npn \use_i_delimit_by_q_nil:nw #1#2 \q_nil {#1} -\cs_set:Npn \use_i_delimit_by_q_stop:nw #1#2 \q_stop {#1} -\cs_set:Npn \use_i_delimit_by_q_recursion_stop:nw +\cs_gset:Npn \use:e #1 { \tex_expanded:D {#1} } +\cs_gset:Npn \use:n #1 {#1} +\cs_gset:Npn \use:nn #1#2 {#1#2} +\cs_gset:Npn \use:nnn #1#2#3 {#1#2#3} +\cs_gset:Npn \use:nnnn #1#2#3#4 {#1#2#3#4} +\cs_gset:Npn \use_i:nn #1#2 {#1} +\cs_gset:Npn \use_ii:nn #1#2 {#2} +\cs_gset:Npn \use_i:nnn #1#2#3 {#1} +\cs_gset:Npn \use_ii:nnn #1#2#3 {#2} +\cs_gset:Npn \use_iii:nnn #1#2#3 {#3} +\cs_gset:Npn \use_i:nnnn #1#2#3#4 {#1} +\cs_gset:Npn \use_ii:nnnn #1#2#3#4 {#2} +\cs_gset:Npn \use_iii:nnnn #1#2#3#4 {#3} +\cs_gset:Npn \use_iv:nnnn #1#2#3#4 {#4} +\cs_gset:Npn \use_i:nnnnn #1#2#3#4#5 {#1} +\cs_gset:Npn \use_ii:nnnnn #1#2#3#4#5 {#2} +\cs_gset:Npn \use_iii:nnnnn #1#2#3#4#5 {#3} +\cs_gset:Npn \use_iv:nnnnn #1#2#3#4#5 {#4} +\cs_gset:Npn \use_v:nnnnn #1#2#3#4#5 {#5} +\cs_gset:Npn \use_i:nnnnnn #1#2#3#4#5#6 {#1} +\cs_gset:Npn \use_ii:nnnnnn #1#2#3#4#5#6 {#2} +\cs_gset:Npn \use_iii:nnnnnn #1#2#3#4#5#6 {#3} +\cs_gset:Npn \use_iv:nnnnnn #1#2#3#4#5#6 {#4} +\cs_gset:Npn \use_v:nnnnnn #1#2#3#4#5#6 {#5} +\cs_gset:Npn \use_vi:nnnnnn #1#2#3#4#5#6 {#6} +\cs_gset:Npn \use_i:nnnnnnn #1#2#3#4#5#6#7 {#1} +\cs_gset:Npn \use_ii:nnnnnnn #1#2#3#4#5#6#7 {#2} +\cs_gset:Npn \use_iii:nnnnnnn #1#2#3#4#5#6#7 {#3} +\cs_gset:Npn \use_iv:nnnnnnn #1#2#3#4#5#6#7 {#4} +\cs_gset:Npn \use_v:nnnnnnn #1#2#3#4#5#6#7 {#5} +\cs_gset:Npn \use_vi:nnnnnnn #1#2#3#4#5#6#7 {#6} +\cs_gset:Npn \use_vii:nnnnnnn #1#2#3#4#5#6#7 {#7} +\cs_gset:Npn \use_i:nnnnnnnn #1#2#3#4#5#6#7#8 {#1} +\cs_gset:Npn \use_ii:nnnnnnnn #1#2#3#4#5#6#7#8 {#2} +\cs_gset:Npn \use_iii:nnnnnnnn #1#2#3#4#5#6#7#8 {#3} +\cs_gset:Npn \use_iv:nnnnnnnn #1#2#3#4#5#6#7#8 {#4} +\cs_gset:Npn \use_v:nnnnnnnn #1#2#3#4#5#6#7#8 {#5} +\cs_gset:Npn \use_vi:nnnnnnnn #1#2#3#4#5#6#7#8 {#6} +\cs_gset:Npn \use_vii:nnnnnnnn #1#2#3#4#5#6#7#8 {#7} +\cs_gset:Npn \use_viii:nnnnnnnn #1#2#3#4#5#6#7#8 {#8} +\cs_gset:Npn \use_i:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#1} +\cs_gset:Npn \use_ii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#2} +\cs_gset:Npn \use_iii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#3} +\cs_gset:Npn \use_iv:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#4} +\cs_gset:Npn \use_v:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#5} +\cs_gset:Npn \use_vi:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#6} +\cs_gset:Npn \use_vii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#7} +\cs_gset:Npn \use_viii:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#8} +\cs_gset:Npn \use_ix:nnnnnnnnn #1#2#3#4#5#6#7#8#9 {#9} +\cs_gset:Npn \use_i_ii:nnn #1#2#3 {#1#2} +\cs_gset:Npn \use_ii_i:nn #1#2 { #2 #1 } +\cs_gset:Npn \use_none_delimit_by_q_nil:w #1 \q_nil { } +\cs_gset:Npn \use_none_delimit_by_q_stop:w #1 \q_stop { } +\cs_gset:Npn \use_none_delimit_by_q_recursion_stop:w #1 \q_recursion_stop { } +\cs_gset:Npn \use_i_delimit_by_q_nil:nw #1#2 \q_nil {#1} +\cs_gset:Npn \use_i_delimit_by_q_stop:nw #1#2 \q_stop {#1} +\cs_gset:Npn \use_i_delimit_by_q_recursion_stop:nw #1#2 \q_recursion_stop {#1} -\cs_set:Npn \use_none:n #1 { } -\cs_set:Npn \use_none:nn #1#2 { } -\cs_set:Npn \use_none:nnn #1#2#3 { } -\cs_set:Npn \use_none:nnnn #1#2#3#4 { } -\cs_set:Npn \use_none:nnnnn #1#2#3#4#5 { } -\cs_set:Npn \use_none:nnnnnn #1#2#3#4#5#6 { } -\cs_set:Npn \use_none:nnnnnnn #1#2#3#4#5#6#7 { } -\cs_set:Npn \use_none:nnnnnnnn #1#2#3#4#5#6#7#8 { } -\cs_set:Npn \use_none:nnnnnnnnn #1#2#3#4#5#6#7#8#9 { } -\cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#2} -\cs_set_protected:Npn \debug_on:n #1 +\cs_gset:Npn \use_none:n #1 { } +\cs_gset:Npn \use_none:nn #1#2 { } +\cs_gset:Npn \use_none:nnn #1#2#3 { } +\cs_gset:Npn \use_none:nnnn #1#2#3#4 { } +\cs_gset:Npn \use_none:nnnnn #1#2#3#4#5 { } +\cs_gset:Npn \use_none:nnnnnn #1#2#3#4#5#6 { } +\cs_gset:Npn \use_none:nnnnnnn #1#2#3#4#5#6#7 { } +\cs_gset:Npn \use_none:nnnnnnnn #1#2#3#4#5#6#7#8 { } +\cs_gset:Npn \use_none:nnnnnnnnn #1#2#3#4#5#6#7#8#9 { } +\cs_gset_protected:Npn \__kernel_if_debug:TF #1#2 {#2} +\cs_gset_protected:Npn \debug_on:n #1 { \sys_load_debug: \cs_if_exist:NT \__debug_all_on: { \debug_on:n {#1} } } -\cs_set_protected:Npn \debug_off:n #1 +\cs_gset_protected:Npn \debug_off:n #1 { \sys_load_debug: \cs_if_exist:NT \__debug_all_on: { \debug_off:n {#1} } } -\cs_set_protected:Npn \debug_suspend: { } -\cs_set_protected:Npn \debug_resume: { } -\cs_set_nopar:Npn \g__debug_deprecation_on_tl { } -\cs_set_nopar:Npn \g__debug_deprecation_off_tl { } -\cs_set_protected:Npn \__kernel_deprecation_code:nn #1#2 +\cs_gset_protected:Npn \debug_suspend: { } +\cs_gset_protected:Npn \debug_resume: { } +\cs_gset_nopar:Npn \g__debug_deprecation_on_tl { } +\cs_gset_nopar:Npn \g__debug_deprecation_off_tl { } +\cs_gset_protected:Npn \__kernel_deprecation_code:nn #1#2 { \tl_gput_right:Nn \g__debug_deprecation_on_tl {#1} \tl_gput_right:Nn \g__debug_deprecation_off_tl {#2} } -\cs_set:Npn \prg_return_true: +\cs_gset:Npn \prg_return_true: { \exp_after:wN \use_i:nn \exp:w } -\cs_set:Npn \prg_return_false: +\cs_gset:Npn \prg_return_false: { \exp_after:wN \use_ii:nn \exp:w} -\cs_set:Npn \__prg_use_none_delimit_by_q_recursion_stop:w +\cs_gset:Npn \__prg_use_none_delimit_by_q_recursion_stop:w #1 \q__prg_recursion_stop { } -\cs_set_protected:Npn \prg_set_conditional:Npnn +\cs_gset_protected:Npn \prg_set_conditional:Npnn { \__prg_generate_conditional_parm:NNNpnn \cs_set:Npn e } -\cs_set_protected:Npn \prg_gset_conditional:Npnn +\cs_gset_protected:Npn \prg_gset_conditional:Npnn { \__prg_generate_conditional_parm:NNNpnn \cs_gset:Npn e } -\cs_set_protected:Npn \prg_new_conditional:Npnn +\cs_gset_protected:Npn \prg_new_conditional:Npnn { \__prg_generate_conditional_parm:NNNpnn \cs_new:Npn e } -\cs_set_protected:Npn \prg_set_protected_conditional:Npnn +\cs_gset_protected:Npn \prg_set_protected_conditional:Npnn { \__prg_generate_conditional_parm:NNNpnn \cs_set_protected:Npn p } -\cs_set_protected:Npn \prg_gset_protected_conditional:Npnn +\cs_gset_protected:Npn \prg_gset_protected_conditional:Npnn { \__prg_generate_conditional_parm:NNNpnn \cs_gset_protected:Npn p } -\cs_set_protected:Npn \prg_new_protected_conditional:Npnn +\cs_gset_protected:Npn \prg_new_protected_conditional:Npnn { \__prg_generate_conditional_parm:NNNpnn \cs_new_protected:Npn p } -\cs_set_protected:Npn \__prg_generate_conditional_parm:NNNpnn #1#2#3#4# +\cs_gset_protected:Npn \__prg_generate_conditional_parm:NNNpnn #1#2#3#4# { \use:e { @@ -1670,19 +1670,19 @@ Type H <return> for immediate help}\def~{\errmessage{% } #1 #2 {#4} } -\cs_set_protected:Npn \prg_set_conditional:Nnn +\cs_gset_protected:Npn \prg_set_conditional:Nnn { \__prg_generate_conditional_count:NNNnn \cs_set:Npn e } -\cs_set_protected:Npn \prg_gset_conditional:Nnn +\cs_gset_protected:Npn \prg_gset_conditional:Nnn { \__prg_generate_conditional_count:NNNnn \cs_set:Npn e } -\cs_set_protected:Npn \prg_new_conditional:Nnn +\cs_gset_protected:Npn \prg_new_conditional:Nnn { \__prg_generate_conditional_count:NNNnn \cs_new:Npn e } -\cs_set_protected:Npn \prg_set_protected_conditional:Nnn +\cs_gset_protected:Npn \prg_set_protected_conditional:Nnn { \__prg_generate_conditional_count:NNNnn \cs_set_protected:Npn p } -\cs_set_protected:Npn \prg_gset_protected_conditional:Nnn +\cs_gset_protected:Npn \prg_gset_protected_conditional:Nnn { \__prg_generate_conditional_count:NNNnn \cs_gset_protected:Npn p } -\cs_set_protected:Npn \prg_new_protected_conditional:Nnn +\cs_gset_protected:Npn \prg_new_protected_conditional:Nnn { \__prg_generate_conditional_count:NNNnn \cs_new_protected:Npn p } -\cs_set_protected:Npn \__prg_generate_conditional_count:NNNnn #1#2#3 +\cs_gset_protected:Npn \__prg_generate_conditional_count:NNNnn #1#2#3 { \use:e { @@ -1691,7 +1691,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } #1 #2 } -\cs_set_protected:Npn \__prg_generate_conditional_count:nnNNNnn #1#2#3#4#5 +\cs_gset_protected:Npn \__prg_generate_conditional_count:nnNNNnn #1#2#3#4#5 { \__kernel_cs_parm_from_arg_count:nnF { \__prg_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 } @@ -1703,7 +1703,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \use_none:nn } } -\cs_set_protected:Npn \__prg_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8 +\cs_gset_protected:Npn \__prg_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8 { \if_meaning:w \c_false_bool #3 \msg_error:nne { kernel } { missing-colon } @@ -1724,12 +1724,12 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_not:n { , \q__prg_recursion_tail , \q__prg_recursion_stop } } } -\cs_set:Npn \__prg_generate_conditional_test:w +\cs_gset:Npn \__prg_generate_conditional_test:w #1 \prg_return_true: \else: \prg_return_false: \fi: \s__prg_mark #2 { #2 {#1} } -\cs_set:Npn \__prg_generate_conditional_fast:nw #1#2 \exp_not:n #3 +\cs_gset:Npn \__prg_generate_conditional_fast:nw #1#2 \exp_not:n #3 { \exp_not:n { {#1} \use_i:nn } } -\cs_set_protected:Npn \__prg_generate_conditional:NNnnnnNw #1#2#3#4#5#6#7#8 , +\cs_gset_protected:Npn \__prg_generate_conditional:NNnnnnNw #1#2#3#4#5#6#7#8 , { \if_meaning:w \q__prg_recursion_tail #8 \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w @@ -1746,7 +1746,7 @@ Type H <return> for immediate help}\def~{\errmessage{% #1 #2 {#3} {#4} {#5} {#6} #7 \__prg_generate_conditional:NNnnnnNw #1 #2 {#3} {#4} {#5} {#6} #7 } -\cs_set_protected:Npn \__prg_generate_p_form:wNNnnnnN +\cs_gset_protected:Npn \__prg_generate_p_form:wNNnnnnN #1 \s__prg_stop #2#3#4#5#6#7#8 { \if_meaning:w e #3 @@ -1765,7 +1765,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \token_to_str:c { #4 _p: #5 } } } } -\cs_set_protected:Npn \__prg_generate_T_form:wNNnnnnN +\cs_gset_protected:Npn \__prg_generate_T_form:wNNnnnnN #1 \s__prg_stop #2#3#4#5#6#7#8 { #8 @@ -1773,7 +1773,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { { #7 \exp_end: \use:n \use_none:n } } { #7 \__prg_T_true:w \fi: \use_none:n } } -\cs_set_protected:Npn \__prg_generate_F_form:wNNnnnnN +\cs_gset_protected:Npn \__prg_generate_F_form:wNNnnnnN #1 \s__prg_stop #2#3#4#5#6#7#8 { #8 @@ -1781,7 +1781,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { { #7 \exp_end: { } } } { #7 \__prg_F_true:w \fi: \use:n } } -\cs_set_protected:Npn \__prg_generate_TF_form:wNNnnnnN +\cs_gset_protected:Npn \__prg_generate_TF_form:wNNnnnnN #1 \s__prg_stop #2#3#4#5#6#7#8 { #8 @@ -1789,17 +1789,17 @@ Type H <return> for immediate help}\def~{\errmessage{% { { #7 \exp_end: } } { #7 \__prg_TF_true:w \fi: \use_ii:nn } } -\cs_set:Npn \__prg_p_true:w \fi: \c_false_bool { \fi: \c_true_bool } -\cs_set:Npn \__prg_T_true:w \fi: \use_none:n { \fi: \use:n } -\cs_set:Npn \__prg_F_true:w \fi: \use:n { \fi: \use_none:n } -\cs_set:Npn \__prg_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn } -\cs_set_protected:Npn \prg_set_eq_conditional:NNn +\cs_gset:Npn \__prg_p_true:w \fi: \c_false_bool { \fi: \c_true_bool } +\cs_gset:Npn \__prg_T_true:w \fi: \use_none:n { \fi: \use:n } +\cs_gset:Npn \__prg_F_true:w \fi: \use:n { \fi: \use_none:n } +\cs_gset:Npn \__prg_TF_true:w \fi: \use_ii:nn { \fi: \use_i:nn } +\cs_gset_protected:Npn \prg_set_eq_conditional:NNn { \__prg_set_eq_conditional:NNNn \cs_set_eq:cc } -\cs_set_protected:Npn \prg_gset_eq_conditional:NNn +\cs_gset_protected:Npn \prg_gset_eq_conditional:NNn { \__prg_set_eq_conditional:NNNn \cs_gset_eq:cc } -\cs_set_protected:Npn \prg_new_eq_conditional:NNn +\cs_gset_protected:Npn \prg_new_eq_conditional:NNn { \__prg_set_eq_conditional:NNNn \cs_new_eq:cc } -\cs_set_protected:Npn \__prg_set_eq_conditional:NNNn #1#2#3#4 +\cs_gset_protected:Npn \__prg_set_eq_conditional:NNNn #1#2#3#4 { \use:e { @@ -1811,7 +1811,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_not:n { , \q__prg_recursion_tail , \q__prg_recursion_stop } } } -\cs_set_protected:Npn \__prg_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6 +\cs_gset_protected:Npn \__prg_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6 { \if_meaning:w \c_false_bool #3 \msg_error:nne { kernel } { missing-colon } @@ -1825,7 +1825,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#4} {#5} } -\cs_set_protected:Npn \__prg_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 , +\cs_gset_protected:Npn \__prg_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 , { \if_meaning:w \q__prg_recursion_tail #6 \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w @@ -1842,42 +1842,42 @@ Type H <return> for immediate help}\def~{\errmessage{% #5 {#1} {#2} {#3} {#4} \__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5 } -\cs_set:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 +\cs_gset:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 { #2 { #3 _p : #4 } { #5 _p : #6 } } -\cs_set:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 +\cs_gset:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 { #2 { #3 : #4 TF } { #5 : #6 TF } } -\cs_set:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 +\cs_gset:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 { #2 { #3 : #4 T } { #5 : #6 T } } -\cs_set:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 +\cs_gset:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \s__prg_stop #2#3#4#5#6 { #2 { #3 : #4 F } { #5 : #6 F } } -\tex_chardef:D \c_true_bool = 1 ~ -\tex_chardef:D \c_false_bool = 0 ~ -\cs_set:Npn \cs_to_str:N +\tex_global:D \tex_chardef:D \c_true_bool = 1 ~ +\tex_global:D \tex_chardef:D \c_false_bool = 0 ~ +\cs_gset:Npn \cs_to_str:N { \tex_romannumeral:D \if:w \token_to_str:N \ \__cs_to_str:w \fi: \exp_after:wN \__cs_to_str:N \token_to_str:N } -\cs_set:Npn \__cs_to_str:N #1 { \c_zero_int } -\cs_set:Npn \__cs_to_str:w #1 \__cs_to_str:N +\cs_gset:Npn \__cs_to_str:N #1 { \c_zero_int } +\cs_gset:Npn \__cs_to_str:w #1 \__cs_to_str:N { - \int_value:w \fi: \exp_after:wN \c_zero_int } -\cs_set_protected:Npn \__cs_tmp:w #1 +\cs_gset_protected:Npn \__cs_tmp:w #1 { - \cs_set:Npn \cs_split_function:N ##1 + \cs_gset:Npn \cs_split_function:N ##1 { \exp_after:wN \exp_after:wN \exp_after:wN \__cs_split_function_auxi:w \cs_to_str:N ##1 \s__cs_mark \c_true_bool #1 \s__cs_mark \c_false_bool \s__cs_stop } - \cs_set:Npn \__cs_split_function_auxi:w + \cs_gset:Npn \__cs_split_function_auxi:w ##1 #1 ##2 \s__cs_mark ##3##4 \s__cs_stop { \__cs_split_function_auxii:w ##1 \s__cs_mark \s__cs_stop {##2} ##3 } - \cs_set:Npn \__cs_split_function_auxii:w ##1 \s__cs_mark ##2 \s__cs_stop + \cs_gset:Npn \__cs_split_function_auxii:w ##1 \s__cs_mark ##2 \s__cs_stop { {##1} } } \exp_after:wN \__cs_tmp:w \token_to_str:N : -\prg_set_conditional:Npnn \cs_if_exist:N #1 { p , T , F , TF } +\prg_gset_conditional:Npnn \cs_if_exist:N #1 { p , T , F , TF } { \if_meaning:w #1 \scan_stop: \use_i:nnnn @@ -1891,7 +1891,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_if_exist:NTF \tex_lastnamedcs:D { - \prg_set_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF } + \prg_gset_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF } { \if_cs_exist:w #1 \cs_end: \__cs_if_exist_c_aux: @@ -1900,11 +1900,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \prg_return_false: \fi: } - \cs_set:Npn \__cs_if_exist_c_aux: + \cs_gset:Npn \__cs_if_exist_c_aux: { \fi: \exp_after:wN \if_meaning:w \tex_lastnamedcs:D \scan_stop: \else: } } { - \prg_set_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF } + \prg_gset_conditional:Npnn \cs_if_exist:c #1 { p , T , F , TF } { \if_cs_exist:w #1 \cs_end: \__cs_if_exist_c_aux:w @@ -1916,10 +1916,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \prg_return_false: \fi: } - \cs_set:Npn \__cs_if_exist_c_aux:w \fi: \use_none:n #1 \if_false: + \cs_gset:Npn \__cs_if_exist_c_aux:w \fi: \use_none:n #1 \if_false: { \fi: \exp_after:wN \if_meaning:w \cs:w #1 \cs_end: \scan_stop: \else: } } -\prg_set_conditional:Npnn \cs_if_free:N #1 { p , T , F , TF } +\prg_gset_conditional:Npnn \cs_if_free:N #1 { p , T , F , TF } { \if_cs_exist:N #1 \else: @@ -1933,7 +1933,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_if_exist:NTF \tex_lastnamedcs:D { - \prg_set_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF } + \prg_gset_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF } { \if_cs_exist:w #1 \cs_end: \__cs_if_free_c_aux:w @@ -1944,11 +1944,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \prg_return_false: \fi: } - \cs_set:Npn \__cs_if_free_c_aux:w \fi: \if_true: + \cs_gset:Npn \__cs_if_free_c_aux:w \fi: \if_true: { \fi: \exp_after:wN \if_meaning:w \tex_lastnamedcs:D \scan_stop: } } { - \prg_set_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF } + \prg_gset_conditional:Npnn \cs_if_free:c #1 { p , T , F , TF } { \if_cs_exist:w #1 \cs_end: \__cs_if_free_c_aux:w @@ -1960,54 +1960,54 @@ Type H <return> for immediate help}\def~{\errmessage{% \prg_return_false: \fi: } - \cs_set:Npn \__cs_if_free_c_aux:w \fi: \use_none:n #1 \if_true: + \cs_gset:Npn \__cs_if_free_c_aux:w \fi: \use_none:n #1 \if_true: { \fi: \exp_after:wN \if_meaning:w \cs:w #1 \cs_end: \scan_stop: } } -\cs_set:Npn \cs_if_exist_use:NTF #1#2 +\cs_gset:Npn \cs_if_exist_use:NTF #1#2 { \cs_if_exist:NTF #1 { #1 #2 } } -\cs_set:Npn \cs_if_exist_use:NF #1 +\cs_gset:Npn \cs_if_exist_use:NF #1 { \cs_if_exist:NTF #1 #1 } -\cs_set:Npn \cs_if_exist_use:NT #1 #2 +\cs_gset:Npn \cs_if_exist_use:NT #1 #2 { \cs_if_exist:NT #1 { #1 #2 } } -\cs_set:Npn \cs_if_exist_use:N #1 +\cs_gset:Npn \cs_if_exist_use:N #1 { \cs_if_exist:NT #1 #1 } \cs_if_exist:NTF \tex_lastnamedcs:D { - \cs_set:Npn \cs_if_exist_use:cTF #1 + \cs_gset:Npn \cs_if_exist_use:cTF #1 { \if_cs_exist:w #1 \cs_end: \__cs_if_exist_use_aux:w \fi: \use_ii:nn } - \cs_set:Npn \__cs_if_exist_use_aux:w \fi: \use_ii:nn + \cs_gset:Npn \__cs_if_exist_use_aux:w \fi: \use_ii:nn { \fi: \exp_after:wN \__cs_if_exist_use_aux:Nnn \tex_lastnamedcs:D } } { - \cs_set:Npn \cs_if_exist_use:cTF #1 + \cs_gset:Npn \cs_if_exist_use:cTF #1 { \if_cs_exist:w #1 \cs_end: \__cs_if_exist_use_aux:w \fi: \use_iii:nnn {#1} } - \cs_set:Npn \__cs_if_exist_use_aux:w \fi: \use_iii:nnn #1 + \cs_gset:Npn \__cs_if_exist_use_aux:w \fi: \use_iii:nnn #1 { \fi: \exp_after:wN \__cs_if_exist_use_aux:Nnn \cs:w #1 \cs_end: } } -\cs_set:Npn \__cs_if_exist_use_aux:Nnn #1#2 +\cs_gset:Npn \__cs_if_exist_use_aux:Nnn #1#2 { \if_meaning:w #1 \scan_stop: \exp_after:wN \use_iii:nnn \fi: \use_i:nn { #1 #2 } } -\cs_set:Npn \cs_if_exist_use:cF #1 +\cs_gset:Npn \cs_if_exist_use:cF #1 { \cs_if_exist_use:cTF {#1} {} } -\cs_set:Npn \cs_if_exist_use:cT #1#2 +\cs_gset:Npn \cs_if_exist_use:cT #1#2 { \cs_if_exist_use:cTF {#1} {#2} {} } -\cs_set:Npn \cs_if_exist_use:c #1 +\cs_gset:Npn \cs_if_exist_use:c #1 { \cs_if_exist_use:cTF {#1} {} {} } -\cs_set_protected:Npn \msg_error:nnee #1#2#3#4 +\cs_gset_protected:Npn \msg_error:nnee #1#2#3#4 { \tex_newlinechar:D = `\^^J \scan_stop: \tex_errmessage:D @@ -2020,17 +2020,17 @@ Type H <return> for immediate help}\def~{\errmessage{% } \tex_end:D } -\cs_set_protected:Npn \msg_error:nne #1#2#3 +\cs_gset_protected:Npn \msg_error:nne #1#2#3 { \msg_error:nnee {#1} {#2} {#3} { } } -\cs_set_protected:Npn \msg_error:nn #1#2 +\cs_gset_protected:Npn \msg_error:nn #1#2 { \msg_error:nnee {#1} {#2} { } { } } -\cs_set:Npn \msg_line_context: +\cs_gset:Npn \msg_line_context: { on~line~ \tex_the:D \tex_inputlineno:D } -\cs_set_protected:Npn \iow_log:e +\cs_gset_protected:Npn \iow_log:e { \tex_immediate:D \tex_write:D -1 } -\cs_set_protected:Npn \iow_term:e +\cs_gset_protected:Npn \iow_term:e { \tex_immediate:D \tex_write:D 16 } -\cs_set_protected:Npn \__kernel_chk_if_free_cs:N #1 +\cs_gset_protected:Npn \__kernel_chk_if_free_cs:N #1 { \cs_if_free:NF #1 { @@ -2038,11 +2038,11 @@ Type H <return> for immediate help}\def~{\errmessage{% { \token_to_str:N #1 } { \token_to_meaning:N #1 } } } -\cs_set_protected:Npn \__kernel_chk_if_free_cs:c +\cs_gset_protected:Npn \__kernel_chk_if_free_cs:c { \exp_args:Nc \__kernel_chk_if_free_cs:N } \cs_set:Npn \__cs_tmp:w #1#2 { - \cs_set_protected:Npn #1 ##1 + \cs_gset_protected:Npn #1 ##1 { \__kernel_chk_if_free_cs:N ##1 #2 ##1 @@ -2124,7 +2124,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \exp_args:Nc \cs_undefine:N {#1} } -\cs_set_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2 +\cs_new_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2 { \exp_args:Ne \__cs_parm_from_arg_count_test:nnF { @@ -2145,7 +2145,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } {#1} } -\cs_set_protected:Npn \__cs_parm_from_arg_count_test:nnF #1#2 +\cs_new_protected:Npn \__cs_parm_from_arg_count_test:nnF #1#2 { \if_meaning:w \c_false_bool #1 \exp_after:wN \use_ii:nn @@ -3375,23 +3375,37 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__quark_new_test_define_tl:nNnNNn {##1##2} #2 {##2} } \cs_new_protected:Npn \__quark_new_test_define_break_ifx:nNNNNn #1 #2 #3 { \__quark_new_test_define_ifx:nNnNNn {##1##2} #2 {##2} } -\cs_new_protected:Npn \__quark_new_conditional_n:Nnnn - { \__quark_new_conditional_aux_do:NNnnn \use_i:nn } -\cs_new_protected:Npn \__quark_new_conditional_N:Nnnn - { \__quark_new_conditional_aux_do:NNnnn \use_ii:nn } -\cs_new_protected:Npn \__quark_new_conditional_aux_do:NNnnn #1 #2 #3 #4 +\cs_new_protected:Npn \__quark_new_conditional_n:Nnnn #1 #2 #3 { - \exp_args:Ncc \__quark_new_conditional_define:NNNNn - { __ #4 _if_quark_ #3 :w } { q__ #4 _ #3 } #2 #1 + \exp_args:Ncc \__quark_new_conditional_n_aux:NNNn + { __ #3 _if_quark_ #2 :w } { q__ #3 _ #2 } #1 } -\cs_new_protected:Npn \__quark_new_conditional_define:NNNNn #1 #2 #3 #4 #5 +\cs_new_protected:Npn \__quark_new_conditional_N:Nnnn #1 #2 #3 { - #4 { \cs_gset:Npn #1 ##1 #2 ##2 ? ##3 ?! { ##1 ##2 } } { } - \exp_args:Nno \use:n { \prg_new_conditional:Npnn #3 ##1 {#5} } + \exp_args:NNc \__quark_new_conditional_N_aux:NNNn + \prg_do_nothing: { q__ #3 _ #2 } #1 + } +\cs_new_protected:Npn \__quark_new_conditional_n_aux:NNNn #1 #2 #3 #4 + { + \cs_gset:Npn #1 ##1 #2 ##2 ? ##3 ?! { ##1##2 } + \prg_new_conditional:Npnn #3 ##1 {#4} + { + \__quark_if_empty_if:o { #1 {} ##1 {} ?! #2 ??! } + \prg_return_true: + \else: + \prg_return_false: + \fi: + } + } +\cs_new_protected:Npn \__quark_new_conditional_N_aux:NNNn #1 #2 #3 #4 + { + \prg_new_conditional:Npnn #3 ##1 {#4} { - #4 { \__quark_if_empty_if:o { #1 {} ##1 {} ?! #2 ??! } } - { \if_meaning:w #2 ##1 } - \prg_return_true: \else: \prg_return_false: \fi: + \if_meaning:w #2 ##1 + \prg_return_true: + \else: + \prg_return_false: + \fi: } } \cs_set:Npn \__quark_tmp:w #1#2 @@ -6305,7 +6319,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new:Npn \__int_abs:N #1 { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: } -\cs_set:Npn \int_max:nn #1#2 +\cs_new:Npn \int_max:nn #1#2 { \int_value:w \exp_after:wN \__int_maxmin:wwN \int_value:w \__int_eval:w #1 \exp_after:wN ; @@ -6313,7 +6327,7 @@ Type H <return> for immediate help}\def~{\errmessage{% > \exp_stop_f: } -\cs_set:Npn \int_min:nn #1#2 +\cs_new:Npn \int_min:nn #1#2 { \int_value:w \exp_after:wN \__int_maxmin:wwN \int_value:w \__int_eval:w #1 \exp_after:wN ; @@ -6405,10 +6419,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_if_exist:NTF \tex_omathchardef:D { \cs_new_eq:NN \__int_constdef:Nw \tex_omathchardef:D } { \cs_new_eq:NN \__int_constdef:Nw \tex_chardef:D } - \__int_constdef:Nw \c__int_max_constdef_int 1114111 ~ + \tex_global:D \__int_constdef:Nw \c__int_max_constdef_int 1114111 ~ \else: \cs_new_eq:NN \__int_constdef:Nw \tex_mathchardef:D - \tex_mathchardef:D \c__int_max_constdef_int 32767 ~ + \tex_global:D \__int_constdef:Nw \c__int_max_constdef_int 32767 ~ \fi: \cs_new_protected:Npn \int_zero:N #1 { #1 = \c_zero_int } \cs_new_protected:Npn \int_gzero:N #1 { \tex_global:D #1 = \c_zero_int } @@ -7536,6 +7550,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \group_end: \int_new:N \g__kernel_prg_map_int %% File: l3sys.dtx +\tl_new:N \l__sys_tmp_tl \cs_new_protected:Npn \__sys_const:nn #1#2 { \bool_if:nTF {#2} @@ -7939,6 +7954,78 @@ Type H <return> for immediate help}\def~{\errmessage{% \__sys_const:nn { sys_if_shell_restricted } { \int_compare_p:nNn \c_sys_shell_escape_int = 2 } } +\cs_new_protected:Npn \sys_get_query:nN #1#2 + { \sys_get_query:nnnN {#1} { } { } #2 } +\cs_new_protected:Npn \sys_get_query:nnN #1#2#3 + { \sys_get_query:nnnN {#1} { } {#2} #3 } +\cs_new_protected:Npn \sys_get_query:nnnN #1#2#3#4 + { + \str_clear:N #4 + \__sys_get_query_auxi:neeN {#1} {#2} {#3} #4 + } +\cs_new:Npn \__sys_get_query_auxi:nnnN #1#2#3#4 + { + \__sys_get_query_auxii:neeN {#1} + { \tl_if_blank:nF {#2} { \tl_to_str:n { ~ #2 } } } + { + \tl_if_blank:nF {#3} + { + \c_space_tl + \sys_if_shell_restricted:F ' + \tl_to_str:n {#3} + \sys_if_shell_restricted:F ' + } + } + #4 + } +\cs_generate_variant:Nn \__sys_get_query_auxi:nnnN { nee } +\cs_new_protected:Npn \__sys_get_query_auxii:nnnN #1#2#3#4 + { + \sys_if_shell:T + { + \sys_get_shell:nnN + { l3sys-query~#1 #2 #3 } + { + \int_step_inline:nnn { 0 } { `a - 1 } + { \char_set_catcode_other:n {##1} } + \int_step_inline:nnn { `Z + 1 } { 127 } + { \char_set_catcode_other:n {##1} } + \tex_endlinechar:D 13 \scan_stop: + } + \l__sys_tmp_tl + \tl_if_empty:NF \l__sys_tmp_tl + { + \exp_after:wN \__sys_get_query:Nw \exp_after:wN #4 + \l__sys_tmp_tl \q_stop + } + } + } +\cs_generate_variant:Nn \__sys_get_query_auxii:nnnN { nee } +\group_begin: + \tex_lccode:D `\* = 13 \scan_stop: + \tex_lowercase:D + { + \group_end: + \cs_new_protected:Npn \__sys_get_query:Nw #1#2 * \q_stop + } + { \tl_set:Nn #1 {#2} } +\cs_new_protected:Npn \sys_split_query:nN #1#2 + { \sys_split_query:nnnN {#1} { } { } #2 } +\cs_new_protected:Npn \sys_split_query:nnN #1#2#3 + { \sys_split_query:nnnN {#1} { } {#2} #3 } +\group_begin: + \tex_lccode:D `\* = 13 \scan_stop: + \tex_lowercase:D + { + \group_end: + \cs_new_protected:Npn \sys_split_query:nnnN #1#2#3#4 + { + \seq_clear:N #4 + \sys_get_query:nnnN {#1} {#2} {#3} \l__sys_tmp_tl + \tl_if_empty:NF \l__sys_tmp_tl + { \seq_set_split:NnV #4 * \l__sys_tmp_tl } + } + } \__sys_everyjob:n { \cs_gset_eq:NN \g_file_curr_name_str \tex_jobname:D } \cs_new_protected:Npn \sys_finalise: @@ -9167,7 +9254,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } } { - \tex_chardef:D \c__token_A_int = `A ~ % + \tex_global:D \tex_chardef:D \c__token_A_int = `A ~ % \use:e { \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N #1 @@ -26935,7 +27022,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__regex_show_one:n { `-group~end \__regex_msg_repeated:nnN {#3} {#4} #5 } } -\cs_set:Npn \__regex_show_class:NnnnN #1#2#3#4#5 +\cs_new:Npn \__regex_show_class:NnnnN #1#2#3#4#5 { \group_begin: \tl_build_begin:N \l__regex_build_tl @@ -29774,8 +29861,9 @@ Type H <return> for immediate help}\def~{\errmessage{% { #5 #1 { - \fp_set:Nn \l__box_scale_x_fp { ( #2 ) / \box_wd:N #1 } - \fp_set:Nn \l__box_scale_y_fp { ( #3 ) / ( #4 ) } + \fp_set:Nn \l__box_scale_x_fp { ( \dim_to_fp:n {#2} ) / \box_wd:N #1 } + \fp_set:Nn \l__box_scale_y_fp + { ( \dim_to_fp:n {#3} ) / ( \dim_to_fp:n {#4} ) } \fp_compare:nNnTF \l__box_scale_x_fp > \l__box_scale_y_fp { \fp_set_eq:NN \l__box_scale_x_fp \l__box_scale_y_fp } { \fp_set_eq:NN \l__box_scale_y_fp \l__box_scale_x_fp } @@ -32320,7 +32408,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } } } -\cs_set_protected:Npn \__coffin_calculate_intersection:nnnnnn #1#2#3#4#5#6 +\cs_new_protected:Npn \__coffin_calculate_intersection:nnnnnn #1#2#3#4#5#6 { \fp_compare:nNnTF {#1} = {#2} { \bool_set_true:N \l__coffin_error_bool } @@ -33117,7 +33205,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \lua_now:n , \lua_now:e } { - \cs_set:Npn #1 ##1 + \cs_gset:Npn #1 ##1 { \msg_expandable_error:nnn { luatex } { luatex-required } { #1 } @@ -33126,7 +33214,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \clist_map_inline:nn { \lua_shipout_e:n , \lua_shipout:n, \lua_load_module:n } { - \cs_set_protected:Npn #1 ##1 + \cs_gset_protected:Npn #1 ##1 { \msg_error:nnn { luatex } { luatex-required } { #1 } @@ -34083,12 +34171,12 @@ Type H <return> for immediate help}\def~{\errmessage{% } } \tl_new:N \l__text_math_mode_tl -\tex_chardef:D \c__text_chardef_space_token = `\ % -\tex_mathchardef:D \c__text_mathchardef_space_token = `\ % -\tex_chardef:D \c__text_chardef_group_begin_token = `\{ % `\} -\tex_mathchardef:D \c__text_mathchardef_group_begin_token = `\{ % `\} `\{ -\tex_chardef:D \c__text_chardef_group_end_token = `\} % `\{ -\tex_mathchardef:D \c__text_mathchardef_group_end_token = `\} % +\tex_global:D \tex_chardef:D \c__text_chardef_space_token = `\ % +\tex_global:D \tex_mathchardef:D \c__text_mathchardef_space_token = `\ % +\tex_global:D \tex_chardef:D \c__text_chardef_group_begin_token = `\{ % `\} +\tex_global:D \tex_mathchardef:D \c__text_mathchardef_group_begin_token = `\{ % `\} `\{ +\tex_global:D \tex_chardef:D \c__text_chardef_group_end_token = `\} % `\{ +\tex_global:D \tex_mathchardef:D \c__text_mathchardef_group_end_token = `\} % \cs_new:Npn \text_expand:n #1 { \__kernel_exp_not:w \exp_after:wN @@ -37084,7 +37172,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \tl_if_blank:nF {#3} { Use~ \tl_trim_spaces:n {#3} ~not~ } #2~deprecated~on~#1. } -\cs_gset:Npn \cs_argument_spec:N { \cs_parameter_spec:N } +\cs_new:Npn \cs_argument_spec:N { \cs_parameter_spec: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 @@ -37103,11 +37191,11 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__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 } -\cs_set_protected:Npn \keys_set_filter:nnn { \keys_set_exclude_groups:nnn } +\cs_new_protected:Npn \keys_set_filter:nnn { \keys_set_exclude_groups:nnn } \cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno } -\cs_set_protected:Npn \keys_set_filter:nnnN { \keys_set_exclude_groups:nnnN } +\cs_new_protected:Npn \keys_set_filter:nnnN { \keys_set_exclude_groups:nnnN } \cs_generate_variant:Nn \keys_set_filter:nnnN { nnV , nnv , nno } -\cs_set_protected:Npn \keys_set_filter:nnnnN { \keys_set_exclude_groups:nnnnN } +\cs_new_protected:Npn \keys_set_filter:nnnnN { \keys_set_exclude_groups:nnnnN } \cs_generate_variant:Nn \keys_set_filter:nnnnN { nnV , nnv , nno } \__kernel_patch_deprecation:nnNNpn { 2024-02-13 } { \msg_set:nnnn } \cs_new_protected:Npn \msg_gset:nnnn { \msg_set:nnnn } @@ -37129,76 +37217,76 @@ Type H <return> for immediate help}\def~{\errmessage{% } \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 } +\cs_new:Npn \bool_case_true:n { \bool_case:n } \__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nT } -\cs_gset:Npn \bool_case_true:nT { \bool_case:nT } +\cs_new:Npn \bool_case_true:nT { \bool_case:nT } \__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nF } -\cs_gset:Npn \bool_case_true:nF { \bool_case:nF } +\cs_new:Npn \bool_case_true:nF { \bool_case:nF } \__kernel_patch_deprecation:nnNNpn { 2023-05-03 } { \bool_case:nTF } -\cs_gset:Npn \bool_case_true:nTF { \bool_case:nTF } +\cs_new: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 } +\cs_new:Npn \str_lower_case:n { \str_lowercase:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:f } -\cs_gset:Npn \str_lower_case:f { \str_lowercase:f } +\cs_new:Npn \str_lower_case:f { \str_lowercase:f } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:n } -\cs_gset:Npn \str_upper_case:n { \str_uppercase:n } +\cs_new:Npn \str_upper_case:n { \str_uppercase:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:f } -\cs_gset:Npn \str_upper_case:f { \str_uppercase:f } +\cs_new:Npn \str_upper_case:f { \str_uppercase:f } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n } -\cs_gset:Npn \str_fold_case:n { \str_casefold:n } +\cs_new:Npn \str_fold_case:n { \str_casefold:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:V } -\cs_gset:Npn \str_fold_case:V { \str_casefold:V } +\cs_new:Npn \str_fold_case:V { \str_casefold:V } \__kernel_patch_deprecation:nnNNpn { 2020-10-17 } { \str_casefold:n } -\cs_gset:Npn \str_foldcase:n { \str_casefold:n } +\cs_new:Npn \str_foldcase:n { \str_casefold:n } \__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:V } -\cs_gset:Npn \str_foldcase:V { \str_casefold:V } +\cs_new:Npn \str_foldcase:V { \str_casefold:V } \__kernel_patch_deprecation:nnNNpn { 2020-08-20 } { } -\cs_gset_protected:Npn \str_declare_eight_bit_encoding:nnn #1 +\cs_new_protected:Npn \str_declare_eight_bit_encoding:nnn #1 { \__str_declare_eight_bit_encoding:nnnn {#1} { 1114112 } } \__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_inline:Nn } -\cs_gset_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn } +\cs_new_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 } +\cs_new:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN } \__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_map_pairwise_function:NNN } -\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN } +\cs_new: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 } +\cs_new_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn } \__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_gset_map_e:NNn } -\cs_gset_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn } +\cs_new_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn } \__kernel_patch_deprecation:nnNNpn { 2021-01-11 } { (no~longer~required) } -\cs_gset_protected:Npn \sys_load_deprecation: { } +\cs_new_protected:Npn \sys_load_deprecation: { } \__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:n } -\cs_gset:Npn \text_titlecase:n #1 +\cs_new:Npn \text_titlecase:n #1 { \text_titlecase_first:n { \text_lowercase:n {#1} } } \__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:nn } -\cs_gset:Npn \text_titlecase:nn #1#2 +\cs_new:Npn \text_titlecase:nn #1#2 { \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n } -\cs_gset:Npn \tl_lower_case:n #1 +\cs_new:Npn \tl_lower_case:n #1 { \text_lowercase:n {#1} } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:nn } -\cs_gset:Npn \tl_lower_case:nn #1#2 +\cs_new:Npn \tl_lower_case:nn #1#2 { \text_lowercase:nn {#1} {#2} } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n } -\cs_gset:Npn \tl_upper_case:n #1 +\cs_new:Npn \tl_upper_case:n #1 { \text_uppercase:n {#1} } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:nn } -\cs_gset:Npn \tl_upper_case:nn #1#2 +\cs_new:Npn \tl_upper_case:nn #1#2 { \text_uppercase:nn {#1} {#2} } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n } -\cs_gset:Npn \tl_mixed_case:n #1 +\cs_new:Npn \tl_mixed_case:n #1 { \text_titlecase_first:n {#1} } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn } -\cs_gset:Npn \tl_mixed_case:nn #1#2 +\cs_new:Npn \tl_mixed_case:nn #1#2 { \text_titlecase_first:nn {#1} {#2} } \__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:Nn } -\cs_gset:Npn \tl_case:Nn { \token_case_meaning:Nn } +\cs_new:Npn \tl_case:Nn { \token_case_meaning:Nn } \__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnT } -\cs_gset:Npn \tl_case:NnT { \token_case_meaning:NnT } +\cs_new:Npn \tl_case:NnT { \token_case_meaning:NnT } \__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnF } -\cs_gset:Npn \tl_case:NnF { \token_case_meaning:NnF } +\cs_new:Npn \tl_case:NnF { \token_case_meaning:NnF } \__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnTF } -\cs_gset:Npn \tl_case:NnTF { \token_case_meaning:NnTF } +\cs_new:Npn \tl_case:NnTF { \token_case_meaning:NnTF } \cs_generate_variant:Nn \tl_case:Nn { c } \prg_generate_conditional_variant:Nnn \tl_case:Nn { c } { T , F , TF } @@ -37209,45 +37297,45 @@ Type H <return> for immediate help}\def~{\errmessage{% \__kernel_patch_deprecation:nnNNpn { 2023-10-25 } { \tl_build_get_intermediate:NN } \cs_new_protected:Npn \tl_build_get:NN { \tl_build_get_intermediate:NN } \__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { [ \codepoint_generate:nn ] } -\cs_gset:Npn \char_to_utfviii_bytes:n { \__kernel_codepoint_to_bytes:n } +\cs_new: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} } +\cs_new:Npn \char_to_nfd:N #1 { \codepoint_to_nfd:n {`#1} } \__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n } -\cs_gset:Npn \char_to_nfd:n { \codepoint_to_nfd:n } +\cs_new:Npn \char_to_nfd:n { \codepoint_to_nfd:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n } -\cs_gset:Npn \char_lower_case:N { \text_lowercase:n } +\cs_new:Npn \char_lower_case:N { \text_lowercase:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n } -\cs_gset:Npn \char_upper_case:N { \text_uppercase:n } +\cs_new:Npn \char_upper_case:N { \text_uppercase:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n } -\cs_gset:Npn \char_mixed_case:N { \text_titlecase_first:n } +\cs_new:Npn \char_mixed_case:N { \text_titlecase_first:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n } -\cs_gset:Npn \char_fold_case:N { \str_casefold:n } +\cs_new:Npn \char_fold_case:N { \str_casefold:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n } -\cs_gset:Npn \char_str_lower_case:N { \str_lowercase:n } +\cs_new:Npn \char_str_lower_case:N { \str_lowercase:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:n } -\cs_gset:Npn \char_str_upper_case:N { \str_uppercase:n } +\cs_new:Npn \char_str_upper_case:N { \str_uppercase:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_titlecase:n } -\cs_gset:Npn \char_str_mixed_case:N { \str_titlecase:n } +\cs_new:Npn \char_str_mixed_case:N { \str_titlecase:n } \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n } -\cs_gset:Npn \char_str_fold_case:N { \str_casefold:n } +\cs_new:Npn \char_str_fold_case:N { \str_casefold:n } \__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \text_lowercase:n } -\cs_gset:Npn \char_lowercase:N { \text_lowercase:n } +\cs_new: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 } +\cs_new: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 } +\cs_new: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 } +\cs_new: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 } +\cs_new: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 +\cs_new: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 } +\cs_new:Npn \char_str_uppercase:N { \str_uppercase:n } \__kernel_patch_deprecation:nnNNpn { 2022-10-17 } { \str_casefold:n } -\cs_gset:Npn \char_str_foldcase:N { \str_casefold:n } +\cs_new:Npn \char_str_foldcase:N { \str_casefold:n } \tl_map_inline:nn { { catcode } { catcode_remove } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index e57bdbe49e7..213c07e7254 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-02-20}% +\def\ExplFileDate{2024-03-14}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 @@ -57,6 +57,13 @@ }% \expandafter\edef\csname ver@expl3-generic.tex\endcsname {\ExplFileDate\space L3 programming layer}% +\ifnum\currentgrouplevel=0 % +\else + \errhelp{expl3 cannot be loaded inside a group: + reading the code has been aborted.}% + \errmessage{expl3 Error: Loading attempted inside a group!}% + \expandafter\endinput +\fi \expandafter\edef\csname l@expl@tidy@tl\endcsname {% \catcode64=\the\catcode64\relax diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx index a40c3a3176d..6120a015e75 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-02-20}% +\def\ExplFileDate{2024-03-14}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 03a22d85e19..4fcce5872d7 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-02-20}% +\def\ExplFileDate{2024-03-14}% \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 1021e5373e7..dd2820e0385 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-02-20}{}{L3 Debugging support} +\ProvidesExplFile{l3debug.def}{2024-03-14}{}{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 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index 5c0b0436c63..c91ab01446c 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-02-20}{} +\ProvidesExplClass{l3doc}{2024-03-14}{} {L3 Experimental documentation class} \clist_new:N \g_docinput_clist \seq_new:N \g_doc_functions_seq @@ -768,11 +768,9 @@ { \hyperlink { explTF } } { \mbox } { - \color{black} \itshape TF \makebox[0pt][r] { - \cs_if_exist:NT \Codedoc@explTF { \color{red} } \underline { \phantom{\itshape TF} \kern-0.1em } } } @@ -1487,18 +1485,16 @@ \tl_set:Nn \l__codedoc_tmpa_tl {#1} \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 + \__codedoc_print_macroname_aux:on + \l__codedoc_tmpa_tl { \bool_if:NT #2 { \__codedoc_typeset_TF: } } } } -\cs_new_protected:Npn \__codedoc_macroname_prefix:n #1 +\cs_new_protected:Npn \__codedoc_print_macroname_aux:nn #1#2 { \__codedoc_if_macro_internal:nTF {#1} - { \__codedoc_typeset_aux:n {#1} } {#1} + { \__codedoc_typeset_aux:n { #1 #2 } } { #1 #2 } } -\cs_generate_variant:Nn \__codedoc_macroname_prefix:n { o } -\cs_new_protected:Npn \__codedoc_macroname_suffix:N #1 - { \bool_if:NTF #1 { \__codedoc_typeset_TF: } { } } +\cs_generate_variant:Nn \__codedoc_print_macroname_aux:nn { o } \providecommand \MacroLongFont { \fontfamily{lmtt}\fontseries{lc}\small diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index d5bf6774074..7a35d81618e 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3keys2e}{2024-02-18}{} +\ProvidesExplPackage{l3keys2e}{2024-03-14}{} {LaTeX2e option processing using LaTeX3 keys} \cs_if_exist:NT \ProcessKeysOptions { \file_input_stop: } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty index 00c7b7ee07f..995615e80e5 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{xfp}{2024-02-18}{} +\ProvidesExplPackage{xfp}{2024-03-14}{} {L3 Floating point unit} \ProvideExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} } \ProvideExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} } diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index 7f2fb07719c..e09776c5644 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -60,7 +60,7 @@ } } \ExplSyntaxOff -\ProvidesExplPackage{xparse}{2024-02-18}{} +\ProvidesExplPackage{xparse}{2024-03-14}{} {L3 Experimental document command parser} \clist_new:N \l__cmd_options_clist \DeclareOption* { \clist_put_right:NV \l__cmd_options_clist \CurrentOption } diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index d3fc0172cd9..e4ce40461c7 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -25,12 +25,12 @@ \endinput } {% - \ProvidesExplPackage{xtemplate}{2023-10-10}{} + \ProvidesExplPackage{xtemplate}{2024-03-14}{} {L3 Experimental prototype document functions} \long\protected\def\DeclareRestrictedTemplate#1#2#3#4{% - \DeclareTemplateCopy{#1}{#3}{#2}% - \EditTemplateDefaults{#1}{#3}{#4}% - }% + \DeclareTemplateCopy{#1}{#3}{#2}% + \EditTemplateDefaults{#1}{#3}{#4}% + }% } \ExplSyntaxOn \cs_new_protected:Npn \DeclareObjectType #1#2 |