[latex3-commits] [git/LaTeX3-latex3-latex2e] develop: Update l3backend and l3kernel to 2023-04-19 (a03c0a84)
Joseph Wright
joseph.wright at morningstar2.co.uk
Wed Apr 19 09:58:10 CEST 2023
Repository : https://github.com/latex3/latex2e
On branch : develop
Link : https://github.com/latex3/latex2e/commit/a03c0a84e2be2c097c1f4e98e0777ad6b8b33880
>---------------------------------------------------------------
commit a03c0a84e2be2c097c1f4e98e0777ad6b8b33880
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Wed Apr 19 08:53:59 2023 +0100
Update l3backend and l3kernel to 2023-04-19
>---------------------------------------------------------------
a03c0a84e2be2c097c1f4e98e0777ad6b8b33880
base/testfiles/github-0944.tlg | 2 +-
texmf/tex/latex/l3backend/l3backend-dvipdfmx.def | 6 +-
texmf/tex/latex/l3backend/l3backend-dvips.def | 4 +-
texmf/tex/latex/l3backend/l3backend-dvisvgm.def | 5 +-
texmf/tex/latex/l3backend/l3backend-luatex.def | 33 ++-
texmf/tex/latex/l3backend/l3backend-pdftex.def | 33 ++-
texmf/tex/latex/l3backend/l3backend-xetex.def | 6 +-
texmf/tex/latex/l3kernel/expl3-code.tex | 299 ++++++++++++++---------
texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +-
texmf/tex/latex/l3kernel/expl3.ltx | 2 +-
texmf/tex/latex/l3kernel/expl3.sty | 2 +-
11 files changed, 240 insertions(+), 154 deletions(-)
diff --git a/base/testfiles/github-0944.tlg b/base/testfiles/github-0944.tlg
index e1d1e169..c49aa72b 100644
--- a/base/testfiles/github-0944.tlg
+++ b/base/testfiles/github-0944.tlg
@@ -22,7 +22,7 @@ LaTeX Warning: Reference `unknown' on page 1 undefined on input line ....
] (github-0944.aux)
***********
-formatname- <-formatversion-> pre-release-2 (-release-version-test- branch)
-L3 programming layer <2023-03-30>
+L3 programming layer <2023-04-19>
***********
*File List*
-show the file list here-
diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
index 36a61dec..e986d264 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvipdfmx.def}{2023-01-16}{}
+ {l3backend-dvipdfmx.def}{2023-04-19}{}
{L3 backend support: dvipdfmx}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -503,7 +503,7 @@
\cs_if_exist:NTF \hook_gput_code:nnn
{
\hook_gput_code:nnn
- { file / l3graphics.sty / after }
+ { package / l3graphics / after }
{ backend }
{#1}
}
@@ -607,7 +607,7 @@
\tl_if_empty:NF \l__graphics_decodearray_str
{ /Decode~[ \l__graphics_decodearray_str ] }
\bool_if:NT \l__graphics_interpolate_bool
- { /Interpolate~true> }
+ { /Interpolate~true }
>>
}
}
diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def
index ff1c6cd5..49325030 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvips.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvips.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvips.def}{2023-01-16}{}
+ {l3backend-dvips.def}{2023-04-19}{}
{L3 backend support: dvips}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -599,7 +599,7 @@
\cs_if_exist:NTF \hook_gput_code:nnn
{
\hook_gput_code:nnn
- { file / l3graphics.sty / after }
+ { package / l3graphics / after }
{ backend }
{#1}
}
diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
index 4d83257e..27398561 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvisvgm.def}{2023-01-16}{}
+ {l3backend-dvisvgm.def}{2023-04-19}{}
{L3 backend support: dvisvgm}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -494,7 +494,7 @@
\cs_if_exist:NTF \hook_gput_code:nnn
{
\hook_gput_code:nnn
- { file / l3graphics.sty / after }
+ { package / l3graphics / after }
{ backend }
{#1}
}
@@ -644,7 +644,6 @@
\__graphics_backend_loaded:n
{ \cs_new_eq:NN \__graphics_backend_get_pagecount:n \__graphics_get_pagecount:n }
%% File: l3backend-pdf.dtx
-\box_new:N \l__pdf_internal_box
\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4 { }
\cs_new:Npn \__pdf_backend_annotation_last: { }
\cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2 { }
diff --git a/texmf/tex/latex/l3backend/l3backend-luatex.def b/texmf/tex/latex/l3backend/l3backend-luatex.def
index e5b62586..9342d7cd 100644
--- a/texmf/tex/latex/l3backend/l3backend-luatex.def
+++ b/texmf/tex/latex/l3backend/l3backend-luatex.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-luatex.def}{2023-01-16}{}
+ {l3backend-luatex.def}{2023-04-19}{}
{L3 backend support: PDF output (LuaTeX)}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -514,7 +514,7 @@
\cs_if_exist:NTF \hook_gput_code:nnn
{
\hook_gput_code:nnn
- { file / l3graphics.sty / after }
+ { package / l3graphics / after }
{ backend }
{#1}
}
@@ -526,19 +526,20 @@
\l_graphics_search_ext_seq
{ .pdf , .eps , .ps , .png , .jpg , .jpeg }
}
-\tl_new:N \l__graphics_graphics_attr_tl
+\tl_new:N \l__graphics_attr_tl
\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
{
\int_zero:N \l__graphics_page_int
\tl_clear:N \l__graphics_pagebox_tl
- \tl_set:Nx \l__graphics_graphics_attr_tl
+ \tl_set:Nx \l__graphics_attr_tl
{
\tl_if_empty:NF \l__graphics_decodearray_str
{ :D \l__graphics_decodearray_str }
\bool_if:NT \l__graphics_interpolate_bool
{ :I }
+ \str_if_empty:NF \l__graphics_pdf_str
+ { :X \l__graphics_pdf_str }
}
- \tl_clear:N \l__graphics_graphics_attr_tl
\__graphics_backend_getbb_auxi:n {#1}
}
\cs_new_eq:NN \__graphics_backend_getbb_jpeg:n \__graphics_backend_getbb_jpg:n
@@ -547,33 +548,38 @@
{
\tl_clear:N \l__graphics_decodearray_str
\bool_set_false:N \l__graphics_interpolate_bool
- \tl_set:Nx \l__graphics_graphics_attr_tl
+ \tl_set:Nx \l__graphics_attr_tl
{
: \l__graphics_pagebox_tl
\int_compare:nNnT \l__graphics_page_int > 1
{ :P \int_use:N \l__graphics_page_int }
+ \str_if_empty:NF \l__graphics_pdf_str
+ { :X \l__graphics_pdf_str }
}
\__graphics_backend_getbb_auxi:n {#1}
}
\cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
{
- \__graphics_bb_restore:xF { #1 \l__graphics_graphics_attr_tl }
+ \__graphics_bb_restore:xF { #1 \l__graphics_attr_tl }
{ \__graphics_backend_getbb_auxii:n {#1} }
}
\cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
{
\exp_args:Ne \__graphics_backend_getbb_auxiii:n
{ \__graphics_backend_dequote:w #1 " #1 " \s__graphics_stop }
- \int_const:cn { c__graphics_ #1 \l__graphics_graphics_attr_tl _int }
+ \int_const:cn { c__graphics_ #1 \l__graphics_attr_tl _int }
{ \tex_the:D \tex_pdflastximage:D }
- \__graphics_bb_save:x { #1 \l__graphics_graphics_attr_tl }
+ \__graphics_bb_save:x { #1 \l__graphics_attr_tl }
}
\cs_new_protected:Npn \__graphics_backend_getbb_auxiii:n #1
{
\tex_immediate:D \tex_pdfximage:D
- \bool_lazy_or:nnT
- { \l__graphics_interpolate_bool }
- { ! \tl_if_empty_p:N \l__graphics_decodearray_str }
+ \bool_lazy_any:nT
+ {
+ { \l__graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l__graphics_decodearray_str }
+ { ! \str_if_empty_p:N \l__graphics_pdf_str }
+ }
{
attr ~
{
@@ -581,6 +587,7 @@
{ /Decode~[ \l__graphics_decodearray_str ] }
\bool_if:NT \l__graphics_interpolate_bool
{ /Interpolate~true }
+ \l__graphics_pdf_str
}
}
\int_compare:nNnT \l__graphics_page_int > 0
@@ -597,7 +604,7 @@
\cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
{
\tex_pdfrefximage:D
- \int_use:c { c__graphics_ #1 \l__graphics_graphics_attr_tl _int }
+ \int_use:c { c__graphics_ #1 \l__graphics_attr_tl _int }
}
\cs_new_eq:NN \__graphics_backend_include_jpeg:n \__graphics_backend_include_jpg:n
\cs_new_eq:NN \__graphics_backend_include_pdf:n \__graphics_backend_include_jpg:n
diff --git a/texmf/tex/latex/l3backend/l3backend-pdftex.def b/texmf/tex/latex/l3backend/l3backend-pdftex.def
index 174146e2..830e165b 100644
--- a/texmf/tex/latex/l3backend/l3backend-pdftex.def
+++ b/texmf/tex/latex/l3backend/l3backend-pdftex.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-pdftex.def}{2023-01-16}{}
+ {l3backend-pdftex.def}{2023-04-19}{}
{L3 backend support: PDF output (pdfTeX)}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -514,7 +514,7 @@
\cs_if_exist:NTF \hook_gput_code:nnn
{
\hook_gput_code:nnn
- { file / l3graphics.sty / after }
+ { package / l3graphics / after }
{ backend }
{#1}
}
@@ -526,19 +526,20 @@
\l_graphics_search_ext_seq
{ .pdf , .eps , .ps , .png , .jpg , .jpeg }
}
-\tl_new:N \l__graphics_graphics_attr_tl
+\tl_new:N \l__graphics_attr_tl
\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
{
\int_zero:N \l__graphics_page_int
\tl_clear:N \l__graphics_pagebox_tl
- \tl_set:Nx \l__graphics_graphics_attr_tl
+ \tl_set:Nx \l__graphics_attr_tl
{
\tl_if_empty:NF \l__graphics_decodearray_str
{ :D \l__graphics_decodearray_str }
\bool_if:NT \l__graphics_interpolate_bool
{ :I }
+ \str_if_empty:NF \l__graphics_pdf_str
+ { :X \l__graphics_pdf_str }
}
- \tl_clear:N \l__graphics_graphics_attr_tl
\__graphics_backend_getbb_auxi:n {#1}
}
\cs_new_eq:NN \__graphics_backend_getbb_jpeg:n \__graphics_backend_getbb_jpg:n
@@ -547,33 +548,38 @@
{
\tl_clear:N \l__graphics_decodearray_str
\bool_set_false:N \l__graphics_interpolate_bool
- \tl_set:Nx \l__graphics_graphics_attr_tl
+ \tl_set:Nx \l__graphics_attr_tl
{
: \l__graphics_pagebox_tl
\int_compare:nNnT \l__graphics_page_int > 1
{ :P \int_use:N \l__graphics_page_int }
+ \str_if_empty:NF \l__graphics_pdf_str
+ { :X \l__graphics_pdf_str }
}
\__graphics_backend_getbb_auxi:n {#1}
}
\cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
{
- \__graphics_bb_restore:xF { #1 \l__graphics_graphics_attr_tl }
+ \__graphics_bb_restore:xF { #1 \l__graphics_attr_tl }
{ \__graphics_backend_getbb_auxii:n {#1} }
}
\cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
{
\exp_args:Ne \__graphics_backend_getbb_auxiii:n
{ \__graphics_backend_dequote:w #1 " #1 " \s__graphics_stop }
- \int_const:cn { c__graphics_ #1 \l__graphics_graphics_attr_tl _int }
+ \int_const:cn { c__graphics_ #1 \l__graphics_attr_tl _int }
{ \tex_the:D \tex_pdflastximage:D }
- \__graphics_bb_save:x { #1 \l__graphics_graphics_attr_tl }
+ \__graphics_bb_save:x { #1 \l__graphics_attr_tl }
}
\cs_new_protected:Npn \__graphics_backend_getbb_auxiii:n #1
{
\tex_immediate:D \tex_pdfximage:D
- \bool_lazy_or:nnT
- { \l__graphics_interpolate_bool }
- { ! \tl_if_empty_p:N \l__graphics_decodearray_str }
+ \bool_lazy_any:nT
+ {
+ { \l__graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l__graphics_decodearray_str }
+ { ! \str_if_empty_p:N \l__graphics_pdf_str }
+ }
{
attr ~
{
@@ -581,6 +587,7 @@
{ /Decode~[ \l__graphics_decodearray_str ] }
\bool_if:NT \l__graphics_interpolate_bool
{ /Interpolate~true }
+ \l__graphics_pdf_str
}
}
\int_compare:nNnT \l__graphics_page_int > 0
@@ -597,7 +604,7 @@
\cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
{
\tex_pdfrefximage:D
- \int_use:c { c__graphics_ #1 \l__graphics_graphics_attr_tl _int }
+ \int_use:c { c__graphics_ #1 \l__graphics_attr_tl _int }
}
\cs_new_eq:NN \__graphics_backend_include_jpeg:n \__graphics_backend_include_jpg:n
\cs_new_eq:NN \__graphics_backend_include_pdf:n \__graphics_backend_include_jpg:n
diff --git a/texmf/tex/latex/l3backend/l3backend-xetex.def b/texmf/tex/latex/l3backend/l3backend-xetex.def
index 3a37d457..afc37e66 100644
--- a/texmf/tex/latex/l3backend/l3backend-xetex.def
+++ b/texmf/tex/latex/l3backend/l3backend-xetex.def
@@ -26,7 +26,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-xetex.def}{2023-01-16}{}
+ {l3backend-xetex.def}{2023-04-19}{}
{L3 backend support: XeTeX}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
@@ -503,7 +503,7 @@
\cs_if_exist:NTF \hook_gput_code:nnn
{
\hook_gput_code:nnn
- { file / l3graphics.sty / after }
+ { package / l3graphics / after }
{ backend }
{#1}
}
@@ -590,7 +590,7 @@
\tl_if_empty:NF \l__graphics_decodearray_str
{ /Decode~[ \l__graphics_decodearray_str ] }
\bool_if:NT \l__graphics_interpolate_bool
- { /Interpolate~true> }
+ { /Interpolate~true }
>>
}
}
diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex
index a163950e..58d68175 100644
--- a/texmf/tex/latex/l3kernel/expl3-code.tex
+++ b/texmf/tex/latex/l3kernel/expl3-code.tex
@@ -71,7 +71,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -28466,6 +28466,116 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
+\cs_new_protected:Npn \box_set_clipped:N #1
+ { \hbox_set:Nn #1 { \__box_backend_clip:N #1 } }
+\cs_generate_variant:Nn \box_set_clipped:N { c }
+\cs_new_protected:Npn \box_gset_clipped:N #1
+ { \hbox_gset:Nn #1 { \__box_backend_clip:N #1 } }
+\cs_generate_variant:Nn \box_gset_clipped:N { c }
+\cs_new_protected:Npn \box_set_trim:Nnnnn #1#2#3#4#5
+ { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
+\cs_generate_variant:Nn \box_set_trim:Nnnnn { c }
+\cs_new_protected:Npn \box_gset_trim:Nnnnn #1#2#3#4#5
+ { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
+\cs_generate_variant:Nn \box_gset_trim:Nnnnn { c }
+\cs_new_protected:Npn \__box_set_trim:NnnnnN #1#2#3#4#5#6
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \__kernel_kern:n { -#2 }
+ \box_use:N #1
+ \__kernel_kern:n { -#4 }
+ }
+ \dim_compare:nNnTF { \box_dp:N #1 } > {#3}
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \box_move_down:nn \c_zero_dim
+ { \box_use_drop:N \l__box_internal_box }
+ }
+ \box_set_dp:Nn \l__box_internal_box { \box_dp:N #1 - (#3) }
+ }
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \box_move_down:nn { (#3) - \box_dp:N #1 }
+ { \box_use_drop:N \l__box_internal_box }
+ }
+ \box_set_dp:Nn \l__box_internal_box \c_zero_dim
+ }
+ \dim_compare:nNnTF { \box_ht:N \l__box_internal_box } > {#5}
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \box_move_up:nn \c_zero_dim
+ { \box_use_drop:N \l__box_internal_box }
+ }
+ \box_set_ht:Nn \l__box_internal_box
+ { \box_ht:N \l__box_internal_box - (#5) }
+ }
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \box_move_up:nn { (#5) - \box_ht:N \l__box_internal_box }
+ { \box_use_drop:N \l__box_internal_box }
+ }
+ \box_set_ht:Nn \l__box_internal_box \c_zero_dim
+ }
+ #6 #1 \l__box_internal_box
+ }
+\cs_new_protected:Npn \box_set_viewport:Nnnnn #1#2#3#4#5
+ { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
+\cs_generate_variant:Nn \box_set_viewport:Nnnnn { c }
+\cs_new_protected:Npn \box_gset_viewport:Nnnnn #1#2#3#4#5
+ { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
+\cs_generate_variant:Nn \box_gset_viewport:Nnnnn { c }
+\cs_new_protected:Npn \__box_set_viewport:NnnnnN #1#2#3#4#5#6
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \__kernel_kern:n { -#2 }
+ \box_use:N #1
+ \__kernel_kern:n { #4 - \box_wd:N #1 }
+ }
+ \dim_compare:nNnTF {#3} < \c_zero_dim
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \box_move_down:nn \c_zero_dim
+ { \box_use_drop:N \l__box_internal_box }
+ }
+ \box_set_dp:Nn \l__box_internal_box { - \__box_dim_eval:n {#3} }
+ }
+ {
+ \hbox_set:Nn \l__box_internal_box
+ { \box_move_down:nn {#3} { \box_use_drop:N \l__box_internal_box } }
+ \box_set_dp:Nn \l__box_internal_box \c_zero_dim
+ }
+ \dim_compare:nNnTF {#5} > \c_zero_dim
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \box_move_up:nn \c_zero_dim
+ { \box_use_drop:N \l__box_internal_box }
+ }
+ \box_set_ht:Nn \l__box_internal_box
+ {
+ (#5)
+ \dim_compare:nNnT {#3} > \c_zero_dim
+ { - (#3) }
+ }
+ }
+ {
+ \hbox_set:Nn \l__box_internal_box
+ {
+ \box_move_up:nn { - \__box_dim_eval:n {#5} }
+ { \box_use_drop:N \l__box_internal_box }
+ }
+ \box_set_ht:Nn \l__box_internal_box \c_zero_dim
+ }
+ #6 #1 \l__box_internal_box
+ }
+
%% File: l3color.dtx
\cs_new_eq:NN \color_group_begin: \group_begin:
\cs_new_eq:NN \color_group_end: \group_end:
@@ -30316,7 +30426,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \pdf_version_major: { \__pdf_backend_version_major: }
\cs_new:Npn \pdf_version_minor: { \__pdf_backend_version_minor: }
\cs_new_protected:Npn \pdf_pagesize_gset:nn #1#2
- { \__pdf_pagesize_gset:nn {#1} {#2} }
+ { \__pdf_backend_pagesize_gset:nn {#1} {#2} }
\cs_new_protected:Npn \pdf_destination:nn #1#2
{ \__pdf_backend_destination:nn {#1} {#2} }
\cs_new_protected:Npn \pdf_destination:nnnn #1#2#3#4
@@ -33215,7 +33325,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__text_change_case_exclude:nnN {#1} {#2} }
{
\__text_codepoint_process:nN
- { \use:c { __text_change_case_codepoint_ #1 :nnn } {#1} {#2} }
+ { \use:c { __text_change_case_custom_ #1 :nnn } {#1} {#2} }
}
#3
}
@@ -33264,13 +33374,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\cs_if_exist:cTF { l__text_case_ \token_to_str:N #3 _tl }
{
- \exp_args:Nv \__text_change_case_replace:nnn
+ \__text_change_case_replace:vnn
{ l__text_case_ \token_to_str:N #3 _tl } {#1} {#2}
}
{ \__text_change_case_switch:nnN {#1} {#2} #3 }
}
\cs_new:Npn \__text_change_case_replace:nnn #1#2#3
{ \__text_change_case_loop:nnw {#2} {#3} #1 }
+\cs_generate_variant:Nn \__text_change_case_replace:nnn { v }
\cs_new:Npn \__text_change_case_switch:nnN #1#2#3
{
\cs_if_eq:NNTF #3 \text_case_switch:nnnn
@@ -33326,6 +33437,39 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__text_change_case_loop:nnw {#3} {#4} }
}
}
+\cs_new:Npn \__text_change_case_custom_lower:nnn #1#2#3
+ {
+ \__text_change_case_custom:nnnnn {#1} {#2} {#3} {#1}
+ { \use:c { __text_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+ }
+\cs_new_eq:NN \__text_change_case_custom_upper:nnn
+ \__text_change_case_custom_lower:nnn
+\cs_new:Npn \__text_change_case_custom_title:nnn #1#2#3
+ {
+ \__text_change_case_custom:nnnnn { title } {#2} {#3} {#1}
+ {
+ \__text_change_case_custom:nnnnn { upper } {#2} {#3} {#1}
+ { \use:c { __text_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+ }
+ }
+\cs_new_eq:NN \__text_change_case_custom_titleonly:nnn
+ \__text_change_case_custom_title:nnn
+\cs_new:Npn \__text_change_case_custom:nnnnn #1#2#3#4#5
+ {
+ \tl_if_exist:cTF { l__text_ #1 case _ \tl_to_str:n {#3} _ #2 _tl }
+ {
+ \__text_change_case_replace:vnn
+ { l__text_ #1 case _ \tl_to_str:n {#3} _ #2 _tl } {#4} {#2}
+ }
+ {
+ \tl_if_exist:cTF { l__text_ #1 case _ \tl_to_str:n {#3} _tl }
+ {
+ \__text_change_case_replace:vnn
+ { l__text_ #1 case _ \tl_to_str:n {#3} _tl } {#4} {#2}
+ }
+ {#5}
+ }
+ }
\cs_new:Npn \__text_change_case_codepoint_lower:nnn #1#2#3
{
\cs_if_exist_use:cF { __text_change_case_lower_ #2 :nnnn }
@@ -33499,6 +33643,38 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tl_clear_new:c { l__text_case_ \token_to_str:N #1 _tl }
\tl_set:cn { l__text_case_ \token_to_str:N #1 _tl } {#2}
}
+\cs_new_protected:Npn \text_declare_lowercase_mapping:nn #1#2
+ { \__text_declare_case_mapping:nnn { lower } {#1} {#2} }
+\cs_new_protected:Npn \text_declare_titlecase_mapping:nn #1#2
+ { \__text_declare_case_mapping:nnn { title } {#1} {#2} }
+\cs_new_protected:Npn \text_declare_uppercase_mapping:nn #1#2
+ { \__text_declare_case_mapping:nnn { upper } {#1} {#2} }
+\cs_new_protected:Npn \__text_declare_case_mapping:nnn #1#2#3
+ {
+ \exp_args:Ne \__text_declare_case_mapping_aux:nnn
+ { \codepoint_str_generate:n {#2} } {#1} {#3}
+ }
+\cs_new_protected:Npn \__text_declare_case_mapping_aux:nnn #1#2#3
+ {
+ \tl_clear_new:c { l__text_ #2 case _ #1 _tl }
+ \tl_set:cn { l__text_ #2 case _ #1 _ tl } {#3}
+ }
+\cs_new_protected:Npn \text_declare_lowercase_mapping:nnn #1#2#3
+ { \__text_declare_case_mapping:nnnn { lower } {#1} {#2} {#3} }
+\cs_new_protected:Npn \text_declare_titlecase_mapping:nnn #1#2#3
+ { \__text_declare_case_mapping:nnnn { title } {#1} {#2} {#3} }
+\cs_new_protected:Npn \text_declare_uppercase_mapping:nnn #1#2#3
+ { \__text_declare_case_mapping:nnnn { upper } {#1} {#2} {#3} }
+\cs_new_protected:Npn \__text_declare_case_mapping:nnnn #1#2#3#4
+ {
+ \exp_args:Ne \__text_declare_case_mapping_aux:nnnn
+ { \codepoint_str_generate:n {#2} } {#1} {#3} {#4}
+ }
+\cs_new_protected:Npn \__text_declare_case_mapping_aux:nnnn #1#2#3#4
+ {
+ \tl_clear_new:c { l__text_ #2 case _ #1 _ #3 _tl }
+ \tl_set:cn { l__text_ #2 case _ #1 _ #3 _ tl } {#4}
+ }
\cs_new:Npn \text_case_switch:nnnn #1#2#3#4
{
\__text_case_switch_marker:
@@ -34440,6 +34616,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
+\bool_lazy_or:nnF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
+ }
%% File: l3text-map.dtx
\cs_new:Npn \text_map_function:nN #1#2
{ \exp_args:Ne \__text_map_function:nN { \text_expand:n {#1} } #2 }
@@ -35358,115 +35540,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
\q_recursion_stop
\group_end:
%% File: l3candidates.dtx
-\cs_new_protected:Npn \box_clip:N #1
- { \hbox_set:Nn #1 { \__box_backend_clip:N #1 } }
-\cs_generate_variant:Nn \box_clip:N { c }
-\cs_new_protected:Npn \box_gclip:N #1
- { \hbox_gset:Nn #1 { \__box_backend_clip:N #1 } }
-\cs_generate_variant:Nn \box_gclip:N { c }
-\cs_new_protected:Npn \box_set_trim:Nnnnn #1#2#3#4#5
- { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
-\cs_generate_variant:Nn \box_set_trim:Nnnnn { c }
-\cs_new_protected:Npn \box_gset_trim:Nnnnn #1#2#3#4#5
- { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
-\cs_generate_variant:Nn \box_gset_trim:Nnnnn { c }
-\cs_new_protected:Npn \__box_set_trim:NnnnnN #1#2#3#4#5#6
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \__kernel_kern:n { -#2 }
- \box_use:N #1
- \__kernel_kern:n { -#4 }
- }
- \dim_compare:nNnTF { \box_dp:N #1 } > {#3}
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \box_move_down:nn \c_zero_dim
- { \box_use_drop:N \l__box_internal_box }
- }
- \box_set_dp:Nn \l__box_internal_box { \box_dp:N #1 - (#3) }
- }
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \box_move_down:nn { (#3) - \box_dp:N #1 }
- { \box_use_drop:N \l__box_internal_box }
- }
- \box_set_dp:Nn \l__box_internal_box \c_zero_dim
- }
- \dim_compare:nNnTF { \box_ht:N \l__box_internal_box } > {#5}
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \box_move_up:nn \c_zero_dim
- { \box_use_drop:N \l__box_internal_box }
- }
- \box_set_ht:Nn \l__box_internal_box
- { \box_ht:N \l__box_internal_box - (#5) }
- }
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \box_move_up:nn { (#5) - \box_ht:N \l__box_internal_box }
- { \box_use_drop:N \l__box_internal_box }
- }
- \box_set_ht:Nn \l__box_internal_box \c_zero_dim
- }
- #6 #1 \l__box_internal_box
- }
-\cs_new_protected:Npn \box_set_viewport:Nnnnn #1#2#3#4#5
- { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
-\cs_generate_variant:Nn \box_set_viewport:Nnnnn { c }
-\cs_new_protected:Npn \box_gset_viewport:Nnnnn #1#2#3#4#5
- { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
-\cs_generate_variant:Nn \box_gset_viewport:Nnnnn { c }
-\cs_new_protected:Npn \__box_set_viewport:NnnnnN #1#2#3#4#5#6
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \__kernel_kern:n { -#2 }
- \box_use:N #1
- \__kernel_kern:n { #4 - \box_wd:N #1 }
- }
- \dim_compare:nNnTF {#3} < \c_zero_dim
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \box_move_down:nn \c_zero_dim
- { \box_use_drop:N \l__box_internal_box }
- }
- \box_set_dp:Nn \l__box_internal_box { - \__box_dim_eval:n {#3} }
- }
- {
- \hbox_set:Nn \l__box_internal_box
- { \box_move_down:nn {#3} { \box_use_drop:N \l__box_internal_box } }
- \box_set_dp:Nn \l__box_internal_box \c_zero_dim
- }
- \dim_compare:nNnTF {#5} > \c_zero_dim
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \box_move_up:nn \c_zero_dim
- { \box_use_drop:N \l__box_internal_box }
- }
- \box_set_ht:Nn \l__box_internal_box
- {
- (#5)
- \dim_compare:nNnT {#3} > \c_zero_dim
- { - (#3) }
- }
- }
- {
- \hbox_set:Nn \l__box_internal_box
- {
- \box_move_up:nn { - \__box_dim_eval:n {#5} }
- { \box_use_drop:N \l__box_internal_box }
- }
- \box_set_ht:Nn \l__box_internal_box \c_zero_dim
- }
- #6 #1 \l__box_internal_box
- }
\cs_new:Npn \flag_raise_if_clear:n #1
{
\if_cs_exist:w flag~#1~0 \cs_end:
diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex
index 198d834f..21e73fab 100644
--- a/texmf/tex/latex/l3kernel/expl3-generic.tex
+++ b/texmf/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx
index 2dd58eeb..294451fd 100644
--- a/texmf/tex/latex/l3kernel/expl3.ltx
+++ b/texmf/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty
index 787ffb31..b5e40bc1 100644
--- a/texmf/tex/latex/l3kernel/expl3.sty
+++ b/texmf/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2023-03-30}%
+\def\ExplFileDate{2023-04-19}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
More information about the latex3-commits
mailing list.