summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3backend
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-10-11 03:02:59 +0000
committerNorbert Preining <norbert@preining.info>2023-10-11 03:02:59 +0000
commit366cf31a771ded1f10860be3212058d48020398d (patch)
tree99ee483a9fd05dfd4ec908582abb44028bdffbd1 /macros/latex/contrib/l3backend
parent48eedda2cb4d2644886b862409b24a1d8e9a136f (diff)
CTAN sync 202310110302
Diffstat (limited to 'macros/latex/contrib/l3backend')
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx62
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx30
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin934066 -> 934368 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx54
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx90
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx40
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx24
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx120
11 files changed, 223 insertions, 209 deletions
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 5877ce53d3..94da9cacbe 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-10-10]
+
+### Changed
+- Track `expl3` changes
+
## [2023-04-19]
### Changed
@@ -296,7 +301,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-04-19...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[2023-10-10]: https://github.com/latex3/latex3/compare/2023-04-19...2023-10-10
[2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
[2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-16...2023-03-30
[2023-01-16]: https://github.com/latex3/latex3/compare/2022-10-26...2023-01-16
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 0aa2b14b5f..883bd5d1c6 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2023-04-19
+Release 2023-10-10
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index cf4ad444ba..a6f7ea6d1c 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2023-04-19}{}
+ {l3backend-dvipdfmx.def}{2023-10-10}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2023-04-19}{}
+ {l3backend-dvips.def}{2023-10-10}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2023-04-19}{}
+ {l3backend-dvisvgm.def}{2023-10-10}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2023-04-19}{}
+ {l3backend-luatex.def}{2023-10-10}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2023-04-19}{}
+ {l3backend-pdftex.def}{2023-10-10}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2023-04-19}{}
+ {l3backend-xetex.def}{2023-10-10}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
@@ -137,8 +137,7 @@
% \begin{macro}
% {
% \__kernel_backend_literal:e,
-% \__kernel_backend_literal:n,
-% \__kernel_backend_literal:x
+% \__kernel_backend_literal:n
% }
% The one shared function for all backends is access to the basic
% \tn{special} primitive: it has slightly odd expansion behaviour
@@ -147,7 +146,6 @@
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
{ \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
% \end{macrocode}
% \end{macro}
%
@@ -175,7 +173,7 @@
% \end{macrocode}
%
% \begin{macro}
-% {\__kernel_backend_literal_postscript:n, \__kernel_backend_literal_postscript:x}
+% {\__kernel_backend_literal_postscript:n, \__kernel_backend_literal_postscript:e}
% Literal PostScript can be included using a few low-level formats. Here,
% we use the form with no positioning: this is overall more convenient as
% a wrapper. Note that this does require that where position is important,
@@ -183,18 +181,18 @@
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_literal_postscript:n #1
{ \__kernel_backend_literal:n { ps:: #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { e }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\__kernel_backend_postscript:n, \__kernel_backend_postscript:x}
+% \begin{macro}{\__kernel_backend_postscript:n, \__kernel_backend_postscript:e}
% PostScript data that does have positioning, and also applying
% a shift to |SDict| (which is not done automatically by
% |ps:| or |ps::|, in contrast to |!| or |"|).
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_postscript:n #1
{ \__kernel_backend_literal:n { ps: SDict ~ begin ~ #1 ~ end } }
-\cs_generate_variant:Nn \__kernel_backend_postscript:n { x }
+\cs_generate_variant:Nn \__kernel_backend_postscript:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -265,7 +263,7 @@
% to have more code in Lua means we create two independent files using
% shared DocStrip code.
%
-% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x}
+% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:e}
% This is equivalent to \verb|\special{pdf:}| but the engine can
% track it. Without the \texttt{direct} keyword everything is kept in
% sync: the transformation matrix is set to the current point automatically.
@@ -282,11 +280,11 @@
%</pdftex>
{ \exp_not:n {#1} }
}
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\__kernel_backend_literal_page:n}
+% \begin{macro}{\__kernel_backend_literal_page:n, \__kernel_backend_literal_page:e}
% Page literals are pretty simple. To avoid an expansion, we write out
% by hand.
% \begin{macrocode}
@@ -300,6 +298,16 @@
%</pdftex>
page { \exp_not:n {#1} }
}
+\cs_new_protected:Npn \__kernel_backend_literal_page:e #1
+ {
+%<*luatex>
+ \tex_pdfextension:D literal ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfliteral:D
+%</pdftex>
+ page {#1}
+ }
% \end{macrocode}
% \end{macro}
%
@@ -327,7 +335,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\__kernel_backend_matrix:n, \__kernel_backend_matrix:x}
+% \begin{macro}{\__kernel_backend_matrix:n, \__kernel_backend_matrix:e}
% Here the appropriate function is set up to insert an affine matrix
% into the PDF. With \pdfTeX{} and \LuaTeX{} in direct PDF output mode there
% is a primitive for this, which only needs the rotation/scaling/skew part.
@@ -342,7 +350,7 @@
%</pdftex>
{ \exp_not:n {#1} }
}
-\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
+\cs_generate_variant:Nn \__kernel_backend_matrix:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -362,14 +370,14 @@
% for both backends, with some \texttt{clean up} for \XeTeX{} as
% required.
%
-% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x}
+% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:e}
% Undocumented but equivalent to \pdfTeX{}'s |literal| keyword. It's similar to
% be not the same as the documented |contents| keyword as that adds a |q|/|Q|
% pair.
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
{ \__kernel_backend_literal:n { pdf:literal~ #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -404,7 +412,7 @@
%<*dvisvgm>
% \end{macrocode}
%
-% \begin{macro}{\__kernel_backend_literal_svg:n, \__kernel_backend_literal_svg:x}
+% \begin{macro}{\__kernel_backend_literal_svg:n, \__kernel_backend_literal_svg:e}
% Unlike the other backends, the requirements for making SVG files mean
% that we can't conveniently transform all operations to the current point.
% That makes life a bit more tricky later as that needs to be accounted for.
@@ -413,7 +421,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_literal_svg:n #1
{ \__kernel_backend_literal:n { dvisvgm:raw~ #1 { ?nl } } }
-\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -427,8 +435,8 @@
% \end{variable}
%
% \begin{macro}{\__kernel_backend_scope_begin:, \__kernel_backend_scope_end:}
-% \begin{macro}{\__kernel_backend_scope_begin:n, \__kernel_backend_scope_begin:x}
-% \begin{macro}{\__kernel_backend_scope:n, \__kernel_backend_scope:x}
+% \begin{macro}{\__kernel_backend_scope_begin:n, \__kernel_backend_scope_begin:e}
+% \begin{macro}{\__kernel_backend_scope:n, \__kernel_backend_scope:e}
% In SVG, the need to attach concepts to a scope means we need to be sure we
% will close all of the open scopes. That is easiest done if we only need
% an outer \enquote{wrapper} \texttt{begin}/\texttt{end} pair, and within
@@ -464,13 +472,13 @@
\group_begin:
\int_gset:Nn \g__kernel_backend_scope_int { 1 }
}
-\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { x }
+\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { e }
\cs_new_protected:Npn \__kernel_backend_scope:n #1
{
\__kernel_backend_literal_svg:n { <g ~ #1 > }
\int_gincr:N \g__kernel_backend_scope_int
}
-\cs_generate_variant:Nn \__kernel_backend_scope:n { x }
+\cs_generate_variant:Nn \__kernel_backend_scope:n { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index 6d8d4ede02..9bc74a1611 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -82,7 +82,7 @@
\__kernel_backend_literal_postscript:n
{ Resolution~72~div~VResolution~72~div~scale }
\__kernel_backend_literal_postscript:n { DVImag~dup~scale }
- \__kernel_backend_literal_postscript:x
+ \__kernel_backend_literal_postscript:e
{
0 ~
\dim_to_decimal_in_bp:n { \box_dp:N #1 } ~
@@ -111,7 +111,7 @@
{
\__kernel_backend_scope_begin:
\__kernel_backend_align_begin:
- \__kernel_backend_literal_postscript:x
+ \__kernel_backend_literal_postscript:e
{
\fp_compare:nNnTF {#2} = \c_zero_fp
{ 0 }
@@ -134,7 +134,7 @@
{
\__kernel_backend_scope_begin:
\__kernel_backend_align_begin:
- \__kernel_backend_literal_postscript:x
+ \__kernel_backend_literal_postscript:e
{
\fp_eval:n { round ( #2 , 5 ) } ~
\fp_eval:n { round ( #3 , 5 ) } ~
@@ -169,7 +169,7 @@
\cs_new_protected:Npn \@@_backend_clip:N #1
{
\__kernel_backend_scope_begin:
- \__kernel_backend_literal_pdf:x
+ \__kernel_backend_literal_pdf:e
{
0~
\dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -204,7 +204,7 @@
\fp_compare:nNnT \l_@@_backend_cos_fp = \c_zero_fp
{ \fp_zero:N \l_@@_backend_cos_fp }
\fp_set:Nn \l_@@_backend_sin_fp { round ( sind ( #2 ) , 5 ) }
- \__kernel_backend_matrix:x
+ \__kernel_backend_matrix:e
{
\fp_use:N \l_@@_backend_cos_fp \c_space_tl
\fp_compare:nNnTF \l_@@_backend_sin_fp = \c_zero_fp
@@ -234,7 +234,7 @@
\cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
{
\__kernel_backend_scope_begin:
- \__kernel_backend_matrix:x
+ \__kernel_backend_matrix:e
{
\fp_eval:n { round ( #2 , 5 ) } ~
0~0~
@@ -263,7 +263,7 @@
\cs_new_protected:Npn \@@_backend_clip:N #1
{
\__kernel_backend_scope_begin:
- \__kernel_backend_literal_pdf:x
+ \__kernel_backend_literal_pdf:e
{
0~
\dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -293,7 +293,7 @@
\cs_new_protected:Npn \@@_backend_rotate_aux:Nn #1#2
{
\__kernel_backend_scope_begin:
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:rotate~
\fp_compare:nNnTF {#2} = \c_zero_fp
@@ -314,7 +314,7 @@
\cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
{
\__kernel_backend_scope_begin:
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:scale~
\fp_eval:n { round ( #2 , 5 ) } ~
@@ -350,9 +350,9 @@
\cs_new_protected:Npn \@@_backend_clip:N #1
{
\int_gincr:N \g__kernel_clip_path_int
- \__kernel_backend_literal_svg:x
+ \__kernel_backend_literal_svg:e
{ < clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " > }
- \__kernel_backend_literal_svg:x
+ \__kernel_backend_literal_svg:e
{
<
path ~ d =
@@ -387,7 +387,7 @@
scale ( 1 , -1 )
"
}
- \__kernel_backend_scope:x
+ \__kernel_backend_scope:e
{
clip-path =
"url ( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int ) "
@@ -416,7 +416,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_rotate:Nn #1#2
{
- \__kernel_backend_scope_begin:x
+ \__kernel_backend_scope_begin:e
{
transform =
"
@@ -437,7 +437,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
{
- \__kernel_backend_scope_begin:x
+ \__kernel_backend_scope_begin:e
{
transform =
"
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index 6f9ea9a52e..0131abee16 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index 5049aae5f9..73eee0ca2c 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -322,7 +322,7 @@
% \begin{macro}[EXP]{\@@_backend_devicen_colorants:n}
% \begin{macro}[EXP]{\@@_backend_devicen_colorants:w}
% \begin{macrocode}
-\cs_new:Npx \@@_backend_devicen_colorants:n #1
+\cs_new:Npe \@@_backend_devicen_colorants:n #1
{
\exp_not:N \tl_if_blank:nF {#1}
{
@@ -377,7 +377,7 @@
% \begin{macro}
% {
% \@@_backend_separation_init:nnnnn,
-% \@@_backend_separation_init:nxxnn
+% \@@_backend_separation_init:neenn
% }
% \begin{macro}
% {\@@_backend_separation_init_aux:nnnnnn}
@@ -402,17 +402,17 @@
% ideas from \url{https://tex.stackexchange.com/q/560093} plus using
% the PostScript manual for other aspects.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_separation_init:nnnnn #1#2#3#4#5
+\cs_new_protected:Npe \@@_backend_separation_init:nnnnn #1#2#3#4#5
{
\bool_if:NT \g__kernel_backend_header_bool
{
- \exp_args:Nx \__kernel_backend_first_shipout:n
+ \exp_not:N \exp_args:Ne \__kernel_backend_first_shipout:n
{
\exp_not:N \@@_backend_separation_init_aux:nnnnnn
{ \exp_not:N \int_use:N \g_@@_model_int }
{#1} {#2} {#3} {#4} {#5}
}
- \prop_gput:Nxx \exp_not:N \g_@@_backend_colorant_prop
+ \prop_gput:Nee \exp_not:N \g_@@_backend_colorant_prop
{ / \exp_not:N \str_convert_pdfname:n {#1} }
{
<< ~
@@ -423,7 +423,7 @@
}
}
}
-\cs_generate_variant:Nn \@@_backend_separation_init:nnnnn { nxx }
+\cs_generate_variant:Nn \@@_backend_separation_init:nnnnn { nee }
\cs_new_protected:Npn \@@_backend_separation_init_aux:nnnnnn #1#2#3#4#5#6
{
\__kernel_backend_literal:e
@@ -552,7 +552,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
{
- \@@_backend_separation_init:nxxnn
+ \@@_backend_separation_init:neenn
{#2}
{
/CIEBasedABC ~
@@ -678,7 +678,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select_iccbased:nn #1#2
{
- \__kernel_backend_literal_svg:x
+ \__kernel_backend_literal_svg:e
{
<style>
@color-profile ~
@@ -712,7 +712,7 @@
% \begin{macrocode}
%<*dvipdfmx|xetex>
\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
- { \__kernel_backend_literal:x { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
+ { \__kernel_backend_literal:e { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
%</dvipdfmx|xetex>
%<*luatex|pdftex>
\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
@@ -734,7 +734,7 @@
{ \cs_if_exist_p:N \pdfmanagement_if_active_p: }
{ \pdfmanagement_if_active_p: }
{
- \use:x
+ \use:e
{
\pdfmanagement_add:nnn
{ Page / Resources / ColorSpace }
@@ -759,7 +759,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5
{
- \pdf_object_unnamed_write:nx { dict }
+ \pdf_object_unnamed_write:ne { dict }
{
/FunctionType ~ 2
/Domain ~ [0 ~ 1]
@@ -767,19 +767,19 @@
/C0 ~ [#4] ~
/C1 ~ [#5] /N ~ 1
}
- \exp_args:Nx \@@_backend_separation_init:nn
+ \exp_args:Ne \@@_backend_separation_init:nn
{ \str_convert_pdfname:n {#1} } {#2}
\@@_backend_init_resource:n { color \int_use:N \g_@@_model_int }
}
\cs_new_protected:Npn \@@_backend_separation_init:nn #1#2
{
- \use:x
+ \use:e
{
\pdf_object_new:n { color \int_use:N \g_@@_model_int }
\pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array }
{ /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
}
- \prop_gput:Nnx \g_@@_backend_colorant_prop { /#1 }
+ \prop_gput:Nne \g_@@_backend_colorant_prop { /#1 }
{ \pdf_object_ref_last: }
}
% \end{macrocode}
@@ -791,7 +791,7 @@
\pdf_object_if_exist:nF { @@_illuminant_CIELAB_ #1 }
{
\pdf_object_new:n { @@_illuminant_CIELAB_ #1 }
- \pdf_object_write:nnx { @@_illuminant_CIELAB_ #1 } { array }
+ \pdf_object_write:nne { @@_illuminant_CIELAB_ #1 } { array }
{
/Lab ~
<<
@@ -820,7 +820,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_devicen_init:nnn #1#2#3
{
- \pdf_object_unnamed_write:nx { stream }
+ \pdf_object_unnamed_write:ne { stream }
{
{
/FunctionType ~ 4 ~
@@ -842,7 +842,7 @@
}
{ {#3} }
}
- \use:x
+ \use:e
{
\pdf_object_new:n { color \int_use:N \g_@@_model_int }
\pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array }
@@ -875,7 +875,7 @@
\pdf_object_if_exist:nF { @@_icc_ #1 }
{
\pdf_object_new:n { @@_icc_ #1 }
- \pdf_object_write:nnx { @@_icc_ #1 } { fstream }
+ \pdf_object_write:nne { @@_icc_ #1 } { fstream }
{
{
/N ~ \exp_not:n { #2 } ~
@@ -884,7 +884,7 @@
{#1}
}
}
- \pdf_object_unnamed_write:nx { array }
+ \pdf_object_unnamed_write:ne { array }
{ /ICCBased ~ \pdf_object_ref:n { @@_icc_ #1 } }
\@@_backend_init_resource:n { color \int_use:N \g_@@_model_int }
}
@@ -906,7 +906,7 @@
{#1}
}
}
- \pdf_object_unnamed_write:nx { array }
+ \pdf_object_unnamed_write:ne { array }
{ /ICCBased ~ \pdf_object_ref:n { @@_icc_ #1 } }
\@@_backend_init_resource:n { Default #2 }
}
@@ -965,12 +965,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_fill_separation:nn #1#2
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{ pdf : bc ~ fill ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
}
\cs_new_protected:Npn \@@_backend_stroke_separation:nn #1#2
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{ pdf : bc ~ stroke ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
}
\cs_new_eq:NN \@@_backend_fill_devicen:nn \@@_backend_fill_separation:nn
@@ -1171,7 +1171,7 @@
\cs_new_protected:Npn \@@_backend_stroke_cmyk:w
#1 ~ #2 ~ #3 ~ #4 \s_@@_stop
{
- \use:x
+ \use:e
{
\@@_backend:nnn
{ \fp_eval:n { -100 * ( 1 - min ( 1 , #1 + #4 ) ) } }
@@ -1181,7 +1181,7 @@
}
\cs_new_protected:Npn \@@_backend_stroke_gray:n #1
{
- \use:x
+ \use:e
{
\@@_backend_stroke_gray_aux:n
{ \fp_eval:n { 100 * (#1) } }
@@ -1194,7 +1194,7 @@
\cs_new_protected:Npn \@@_backend_stroke_rgb:w
#1 ~ #2 ~ #3 \s_@@_stop
{
- \use:x
+ \use:e
{
\@@_backend:nnn
{ \fp_eval:n { 100 * (#1) } }
@@ -1202,7 +1202,7 @@
{ \fp_eval:n { 100 * (#3) } }
}
}
-\cs_new_protected:Npx \@@_backend:nnn #1#2#3
+\cs_new_protected:Npe \@@_backend:nnn #1#2#3
{
\__kernel_backend_scope:n
{
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 170f4090cd..8fa2fda940 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -66,12 +66,12 @@
%<*dvips>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
% The same as literal PostScript: same arguments about positioning apply
% her.
% \begin{macrocode}
\cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_postscript:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -125,7 +125,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_moveto:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~
\dim_to_decimal_in_bp:n {#2} ~ moveto
@@ -133,7 +133,7 @@
}
\cs_new_protected:Npn \@@_backend_lineto:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~
\dim_to_decimal_in_bp:n {#2} ~ lineto
@@ -141,7 +141,7 @@
}
\cs_new_protected:Npn \@@_backend_rectangle:nnnn #1#2#3#4
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#3} ~
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
@@ -150,7 +150,7 @@
}
\cs_new_protected:Npn \@@_backend_curveto:nnnnnn #1#2#3#4#5#6
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
\dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -205,7 +205,7 @@
\@@_backend_literal:n { grestore }
\bool_if:NT \g_@@_draw_clip_bool
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
clip
@@ -221,14 +221,14 @@
}
\cs_new_protected:Npn \@@_backend_fill:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
fill
}
\bool_if:NT \g_@@_draw_clip_bool
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
clip
@@ -239,7 +239,7 @@
}
\cs_new_protected:Npn \@@_backend_fillstroke:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
fill
@@ -250,7 +250,7 @@
\@@_backend_literal:n { grestore }
\bool_if:NT \g_@@_draw_clip_bool
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
clip
@@ -266,7 +266,7 @@
{
\bool_if:NT \g_@@_draw_clip_bool
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
clip
@@ -293,7 +293,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
[
\exp_args:Nf \use:n
@@ -306,7 +306,7 @@
{ ~ \dim_to_decimal_in_bp:n {#1} }
\cs_new_protected:Npn \@@_backend_linewidth:n #1
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ \dim_to_decimal_in_bp:n {#1} ~ setlinewidth }
}
\cs_new_protected:Npn \@@_backend_miterlimit:n #1
@@ -400,11 +400,11 @@
%
% \subsubsection{Drawing}
%
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
% Pass data through using a dedicated interface.
% \begin{macrocode}
\cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -434,17 +434,17 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_moveto:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
}
\cs_new_protected:Npn \@@_backend_lineto:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
}
\cs_new_protected:Npn \@@_backend_curveto:nnnnnn #1#2#3#4#5#6
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
\dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -454,7 +454,7 @@
}
\cs_new_protected:Npn \@@_backend_rectangle:nnnn #1#2#3#4
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
\dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -500,17 +500,17 @@
{ \@@_backend_literal:n { s } }
\cs_new_protected:Npn \@@_backend_fill:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ f \bool_if:NT \g_@@_draw_eor_bool * }
}
\cs_new_protected:Npn \@@_backend_fillstroke:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ B \bool_if:NT \g_@@_draw_eor_bool * }
}
\cs_new_protected:Npn \@@_backend_clip:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ W \bool_if:NT \g_@@_draw_eor_bool * }
}
\cs_new_protected:Npn \@@_backend_discardpath:
@@ -532,7 +532,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
[
\exp_args:Nf \use:n
@@ -545,11 +545,11 @@
{ ~ \dim_to_decimal_in_bp:n {#1} }
\cs_new_protected:Npn \@@_backend_linewidth:n #1
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ \dim_to_decimal_in_bp:n {#1} ~ w }
}
\cs_new_protected:Npn \@@_backend_miterlimit:n #1
- { \@@_backend_literal:x { #1 ~ M } }
+ { \@@_backend_literal:e { #1 ~ M } }
\cs_new_protected:Npn \@@_backend_cap_butt:
{ \@@_backend_literal:n { 0 ~ J } }
\cs_new_protected:Npn \@@_backend_cap_round:
@@ -594,20 +594,20 @@
%<*dvipdfmx|xetex>
\cs_new_protected:Npn \@@_backend_cm_aux:nnnn #1#2#3#4
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:rotate~
\fp_compare:nNnTF {#1} = \c_zero_fp
{ 0 }
{ \fp_eval:n { round ( -#1 , 5 ) } }
}
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:scale~
\fp_eval:n { round ( #2 , 5 ) } ~
\fp_eval:n { round ( #3 , 5 ) }
}
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:rotate~
\fp_compare:nNnTF {#4} = \c_zero_fp
@@ -678,7 +678,7 @@
%<*dvipdfmx|xetex>
\cs_new_protected:Npn \@@_backend_cm_decompose:nnnnN #1#2#3#4#5
{
- \use:x
+ \use:e
{
\@@_backend_cm_decompose_auxi:nnnnN
{ \fp_eval:n { (#1 + #4) / 2 } }
@@ -690,7 +690,7 @@
}
\cs_new_protected:Npn \@@_backend_cm_decompose_auxi:nnnnN #1#2#3#4#5
{
- \use:x
+ \use:e
{
\@@_backend_cm_decompose_auxii:nnnnN
{ \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
@@ -702,7 +702,7 @@
}
\cs_new_protected:Npn \@@_backend_cm_decompose_auxii:nnnnN #1#2#3#4#5
{
- \use:x
+ \use:e
{
\@@_backend_cm_decompose_auxiii:nnnnN
{ \fp_eval:n { ( #4 - #3 ) / 2 } }
@@ -760,11 +760,11 @@
%<*dvisvgm>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
% The same as the more general literal call.
% \begin{macrocode}
\cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_svg:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -834,7 +834,7 @@
}
\cs_new_protected:Npn \@@_backend_add_to_path:n #1
{
- \tl_gset:Nx \g_@@_backend_path_tl
+ \tl_gset:Ne \g_@@_backend_path_tl
{
\g_@@_backend_path_tl
\tl_if_empty:NF \g_@@_backend_path_tl { \c_space_tl }
@@ -885,7 +885,7 @@
\bool_if:NTF \g_@@_draw_clip_bool
{
\int_gincr:N \g__kernel_clip_path_int
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
< clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " >
{ ?nl }
@@ -897,14 +897,14 @@
#1
/>
}
- \__kernel_backend_scope:x
+ \__kernel_backend_scope:e
{
clip-path =
"url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
}
}
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ <path ~ d=" \g_@@_backend_path_tl " ~ #1 /> }
}
\tl_gclear:N \g_@@_backend_path_tl
@@ -930,14 +930,14 @@
\bool_if:NT \g_@@_draw_clip_bool
{
\int_gincr:N \g__kernel_clip_path_int
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
< clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " >
{ ?nl }
<path~d=" \g_@@_backend_path_tl "/> { ?nl }
< /clipPath >
}
- \__kernel_backend_scope:x
+ \__kernel_backend_scope:e
{
clip-path =
"url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
@@ -968,7 +968,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
{
- \use:x
+ \use:e
{
\@@_backend_dash_aux:nn
{ \clist_map_function:nN {#1} \@@_backend_dash:n }
@@ -979,7 +979,7 @@
{ , \dim_to_decimal_in_bp:n {#1} }
\cs_new_protected:Npn \@@_backend_dash_aux:nn #1#2
{
- \__kernel_backend_scope:x
+ \__kernel_backend_scope:e
{
stroke-dasharray =
"
@@ -991,9 +991,9 @@
}
}
\cs_new_protected:Npn \@@_backend_linewidth:n #1
- { \__kernel_backend_scope:x { stroke-width=" \dim_to_decimal:n {#1} " } }
+ { \__kernel_backend_scope:e { stroke-width=" \dim_to_decimal:n {#1} " } }
\cs_new_protected:Npn \@@_backend_miterlimit:n #1
- { \__kernel_backend_scope:x { stroke-miterlimit=" #1 " } }
+ { \__kernel_backend_scope:e { stroke-miterlimit=" #1 " } }
\cs_new_protected:Npn \@@_backend_cap_butt:
{ \__kernel_backend_scope:n { stroke-linecap="butt" } }
\cs_new_protected:Npn \@@_backend_cap_round:
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index da7dc7516e..610785e348 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -107,7 +107,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_include_eps:n #1
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
PSfile = #1 \c_space_tl
llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -185,7 +185,7 @@
{
\int_zero:N \l_@@_page_int
\tl_clear:N \l_@@_pagebox_tl
- \tl_set:Nx \l_@@_attr_tl
+ \tl_set:Ne \l_@@_attr_tl
{
\tl_if_empty:NF \l_@@_decodearray_str
{ :D \l_@@_decodearray_str }
@@ -202,7 +202,7 @@
{
\tl_clear:N \l_@@_decodearray_str
\bool_set_false:N \l_@@_interpolate_bool
- \tl_set:Nx \l_@@_attr_tl
+ \tl_set:Ne \l_@@_attr_tl
{
: \l_@@_pagebox_tl
\int_compare:nNnT \l_@@_page_int > 1
@@ -214,7 +214,7 @@
}
\cs_new_protected:Npn \@@_backend_getbb_auxi:n #1
{
- \@@_bb_restore:xF { #1 \l_@@_attr_tl }
+ \@@_bb_restore:eF { #1 \l_@@_attr_tl }
{ \@@_backend_getbb_auxii:n {#1} }
}
% \end{macrocode}
@@ -230,7 +230,7 @@
{ \@@_backend_dequote:w #1 " #1 " \s_@@_stop }
\int_const:cn { c_@@_ #1 \l_@@_attr_tl _int }
{ \tex_the:D \tex_pdflastximage:D }
- \@@_bb_save:x { #1 \l_@@_attr_tl }
+ \@@_bb_save:e { #1 \l_@@_attr_tl }
}
\cs_new_protected:Npn \@@_backend_getbb_auxiii:n #1
{
@@ -310,7 +310,7 @@
\l_@@_backend_dir_str
\l_@@_backend_name_str
\l_@@_backend_ext_str
- \exp_args:Nx \@@_backend_getbb_eps:nn
+ \exp_args:Ne \@@_backend_getbb_eps:nn
{
\exp_args:Ne \__kernel_file_name_quote:n
{
@@ -336,7 +336,7 @@
{
\file_parse_full_name:nNNN {#1}
\l_@@_backend_dir_str \l_@@_backend_name_str \l_@@_backend_ext_str
- \exp_args:Nx \@@_backend_include_pdf:n
+ \exp_args:Ne \@@_backend_include_pdf:n
{
\exp_args:Ne \__kernel_file_name_quote:n
{
@@ -436,7 +436,7 @@
% \@@_backend_include_bmp:n ,
% }
% \begin{macro}{\@@_backend_include_auxi:nn}
-% \begin{macro}{\@@_backend_include_auxii:nnn, \@@_backend_include_auxii:xnn}
+% \begin{macro}{\@@_backend_include_auxii:nnn, \@@_backend_include_auxii:enn}
% \begin{macro}{\@@_backend_include_auxiii:nnn}
% The special syntax depends on the file type. There is a difference in
% how PDF graphics are best handled between |dvipdfmx| and \XeTeX{}: for
@@ -445,7 +445,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_include_eps:n #1
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
PSfile = #1 \c_space_tl
llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -472,7 +472,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_include_auxi:nn #1#2
{
- \@@_backend_include_auxii:xnn
+ \@@_backend_include_auxii:enn
{
\tl_if_empty:NF \l_@@_pagebox_tl
{ : \l_@@_pagebox_tl }
@@ -489,12 +489,12 @@
{
\int_if_exist:cTF { c_@@_ #2#1 _int }
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{ pdf:usexobj~@graphic \int_use:c { c_@@_ #2#1 _int } }
}
{ \@@_backend_include_auxiii:nnn {#2} {#1} {#3} }
}
-\cs_generate_variant:Nn \@@_backend_include_auxii:nnn { x }
+\cs_generate_variant:Nn \@@_backend_include_auxii:nnn { e }
% \end{macrocode}
% Inclusion using the specials is relatively straight-forward, but there
% is one wrinkle. To get the |pagebox| correct for PDF graphics in all cases,
@@ -505,7 +505,7 @@
{
\int_gincr:N \g_@@_track_int
\int_const:cn { c_@@_ #1#2 _int } { \g_@@_track_int }
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
pdf:#3~
@graphic \int_use:c { c_@@_ #1#2 _int } ~
@@ -612,7 +612,7 @@
}
\cs_new_protected:Npn \@@_backend_getbb_auxiv:nnNnn #1#2#3#4#5
{
- \use:x
+ \use:e
{
\@@_backend_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
{
@@ -750,10 +750,10 @@
}
\cs_new_protected:Npn \@@_backend_getbb_svg_auxi:nNn #1#2#3
{
- \use:x
+ \use:e
{
\cs_set_protected:Npn \@@_backend_getbb_svg_auxii:w
- ####1 \tl_to_str:n {#1} = ####2 \tl_to_str:n {#1} = ####3
+ ##1 \tl_to_str:n {#1} = ##2 \tl_to_str:n {#1} = ##3
\s_@@_stop
}
{
@@ -772,7 +772,7 @@
##2 \s_@@_stop
}
}
- \use:x
+ \use:e
{
\@@_backend_getbb_svg_auxii:w #3
\tl_to_str:n {#1} = \tl_to_str:n {#1} =
@@ -855,7 +855,7 @@
{ \@@_backend_include:nn { pdffile } {#1} }
\cs_new_protected:Npn \@@_backend_include:nn #1#2
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
#1 = #2 \c_space_tl
llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -892,7 +892,7 @@
{
\hbox:n
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
dvisvgm:img~
\dim_to_decimal:n { \l_@@_urx_dim } ~
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 0cb6767908..5bd4bb4808 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index 033ab150f0..9b994ac16e 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -73,7 +73,7 @@
%
% \begin{macro}{\@@_backend_select:n,\@@_backend_select_aux:n}
% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend:nnn, \@@_backend:xnn}
+% \begin{macro}{\@@_backend:nnn, \@@_backend:enn}
% No stack so set values directly. The need to deal with Distiller and
% Ghostscript separately means we use a common auxiliary: the two
% systems require different PostScript for transparency. This is
@@ -83,7 +83,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select:n #1
{
- \exp_args:Nx \@@_backend_select_aux:n
+ \exp_args:Ne \@@_backend_select_aux:n
{ \fp_eval:n { min(max(0,#1),1) } }
}
\cs_new_protected:Npn \@@_backend_select_aux:n #1
@@ -93,14 +93,14 @@
}
\cs_new_protected:Npn \@@_backend_fill:n #1
{
- \@@_backend:xnn
+ \@@_backend:enn
{ \fp_eval:n { min(max(0,#1),1) } }
{ fill }
{ ca }
}
\cs_new_protected:Npn \@@_backend_stroke:n #1
{
- \@@_backend:xnn
+ \@@_backend:enn
{ \fp_eval:n { min(max(0,#1),1) } }
{ stroke }
{ CA }
@@ -124,7 +124,7 @@
ifelse
}
}
-\cs_generate_variant:Nn \@@_backend:nnn { x }
+\cs_generate_variant:Nn \@@_backend:nnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -170,7 +170,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select:n #1
{
- \exp_args:Nx \@@_backend_select_aux:n
+ \exp_args:Ne \@@_backend_select_aux:n
{ \fp_eval:n { min(max(0,#1),1) } }
}
\cs_new_protected:Npn \@@_backend_select_aux:n #1
@@ -210,19 +210,19 @@
% \end{macro}
%
% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend_fillstroke:nn, \@@_backend_fillstroke:xx}
+% \begin{macro}{\@@_backend_fillstroke:nn, \@@_backend_fillstroke:ee}
% For separate fill and stroke, we need to work out if we need to do
% more work or if we can stick to a single setting.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_fill:n #1
{
- \@@_backend_fill_stroke:xx
+ \@@_backend_fill_stroke:ee
{ \fp_eval:n { min(max(0,#1),1) } }
\l_@@_backend_stroke_tl
}
\cs_new_protected:Npn \@@_backend_stroke:n #1
{
- \@@_backend_fill_stroke:xx
+ \@@_backend_fill_stroke:ee
\l_@@_backend_fill_tl
{ \fp_eval:n { min(max(0,#1),1) } }
}
@@ -249,7 +249,7 @@
\group_insert_after:N \@@_backend_reset:
}
}
-\cs_generate_variant:Nn \@@_backend_fill_stroke:nn { xx }
+\cs_generate_variant:Nn \@@_backend_fill_stroke:nn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -274,7 +274,7 @@
\cs_new_protected:Npn \@@_backend_stroke:n #1
{ \@@_backend:nn { {#1} } { stroke- } }
\cs_new_protected:Npn \@@_backend:nn #1#2
- { \__kernel_backend_scope:x { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
+ { \__kernel_backend_scope:e { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index a95aff4070..8d942551bb 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -91,12 +91,12 @@
%<*dvips>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend_pdfmark:n, \@@_backend_pdfmark:x}
+% \begin{macro}{\@@_backend_pdfmark:n, \@@_backend_pdfmark:e}
% Used often enough it should be a separate function.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_pdfmark:n #1
{ \__kernel_backend_postscript:n { mark #1 ~ pdfmark } }
-\cs_generate_variant:Nn \@@_backend_pdfmark:n { x }
+\cs_generate_variant:Nn \@@_backend_pdfmark:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -138,7 +138,7 @@
%
% \begin{macro}
% {
-% \@@_backend_object_write:nnn, \@@_backend_object_write:nnx,
+% \@@_backend_object_write:nnn, \@@_backend_object_write:nne,
% \@@_backend_object_write_aux:nnn
% }
% \begin{macro}
@@ -159,10 +159,10 @@
{ \@@_backend_object_ref:n {#1} }
{#2} {#3}
}
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
\cs_new_protected:Npn \@@_backend_object_write_aux:nnn #1#2#3
{
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{
/_objdef ~ #1
/type
@@ -179,17 +179,17 @@
}
\cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2
{
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{ #1 ~0~ [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL }
}
\cs_new_protected:Npn \@@_backend_object_write_dict:nn #1#2
{
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{ #1 << \exp_not:n {#2} >> /PUT }
}
\cs_new_protected:Npn \@@_backend_object_write_fstream:nn #1#2
{
- \exp_args:Nx
+ \exp_args:Ne
\@@_backend_object_write_fstream:nnn {#1} #2
}
\cs_new_protected:Npn \@@_backend_object_write_fstream:nnn #1#2#3
@@ -204,7 +204,7 @@
}
\cs_new_protected:Npn \@@_backend_object_write_stream:nn #1#2
{
- \exp_args:Nx
+ \exp_args:Ne
\@@_backend_object_write_stream:nnn {#1} #2
}
\cs_new_protected:Npn \@@_backend_object_write_stream:nnn #1#2#3
@@ -220,7 +220,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
% No anonymous objects, so things are done manually.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_object_now:nn #1#2
@@ -230,7 +230,7 @@
{ { pdf.obj \int_use:N \g_@@_backend_object_int } }
{#1} {#2}
}
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
% \end{macrocode}
% \end{macro}
%
@@ -304,7 +304,7 @@
}
\int_gincr:N \g_@@_backend_object_int
\int_gset_eq:NN \g_@@_backend_annotation_int \g_@@_backend_object_int
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{
/_objdef { pdf.obj \int_use:N \g_@@_backend_object_int }
pdf.rect
@@ -468,7 +468,7 @@
\hbox_set_end:
\@@_backend_link_minima:
\hbox_set:Nn \l_@@_backend_model_box { Gg }
- \exp_args:Nx \@@_backend_link_outerbox:n
+ \exp_args:Ne \@@_backend_link_outerbox:n
{
\int_if_odd:nTF { \value { page } }
{ \oddsidemargin }
@@ -486,7 +486,7 @@
}
\int_gincr:N \g_@@_backend_object_int
\int_gset_eq:NN \g_@@_backend_link_int \g_@@_backend_object_int
- \__kernel_backend_postscript:x
+ \__kernel_backend_postscript:e
{
mark
/_objdef { pdf.obj \int_use:N \g_@@_backend_link_int }
@@ -500,7 +500,7 @@
\cs_new_protected:Npn \@@_backend_link_minima:
{
\hbox_set:Nn \l_@@_backend_model_box { Gg }
- \__kernel_backend_postscript:x
+ \__kernel_backend_postscript:e
{
/pdf.linkdp.pad ~
\dim_to_decimal:n
@@ -528,7 +528,7 @@
}
\cs_new_protected:Npn \@@_backend_link_outerbox:n #1
{
- \__kernel_backend_postscript:x
+ \__kernel_backend_postscript:e
{
/pdf.outerbox
[
@@ -583,9 +583,9 @@
{
\tl_put_right:Nn \@makecol@hook
{
- \box_if_empty:NF \@cclv
+ \box_if_empty:NF \l_shipout_box
{
- \vbox_set:Nn \@cclv
+ \vbox_set:Nn \l_shipout_box
{
\__kernel_backend_postscript:n
{
@@ -593,7 +593,7 @@
{ pdf.bordertracking.continue }
if
}
- \vbox_unpack_drop:N \@cclv
+ \vbox_unpack_drop:N \l_shipout_box
\__kernel_backend_postscript:n
{ pdf.bordertracking.endpage }
}
@@ -620,7 +620,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_link_margin:n #1
{
- \__kernel_backend_postscript:x
+ \__kernel_backend_postscript:e
{
/pdf.linkmargin { \dim_to_decimal:n {#1} ~ pdf.pt.dvi } def
}
@@ -638,7 +638,7 @@
\cs_new_protected:Npn \@@_backend_destination:nn #1#2
{
\__kernel_backend_postscript:n { pdf.dest.anchor }
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{
/View
[
@@ -737,11 +737,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_version_major_gset:n #1
{
- \cs_gset:Npx \@@_backend_version_major: { \int_eval:n {#1} }
+ \cs_gset:Npe \@@_backend_version_major: { \int_eval:n {#1} }
}
\cs_new_protected:Npn \@@_backend_version_minor_gset:n #1
{
- \cs_gset:Npx \@@_backend_version_minor: { \int_eval:n {#1} }
+ \cs_gset:Npe \@@_backend_version_minor: { \int_eval:n {#1} }
}
% \end{macrocode}
% \end{macro}
@@ -805,7 +805,7 @@
% space in the \LuaTeX{} version is \emph{required} as it is consumed in
% finding the end of the keyword.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_annotation_last:
+\cs_new:Npe \@@_backend_annotation_last:
{
\exp_not:N \int_value:w
%<*luatex>
@@ -857,7 +857,7 @@
% \begin{macro}{\@@_backend_link_last:}
% Formatted for direct use.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_link_last:
+\cs_new:Npe \@@_backend_link_last:
{
\exp_not:N \int_value:w
%<*luatex>
@@ -1000,7 +1000,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nne}
% \begin{macro}[EXP]{\@@_backend_object_write:nn}
% \begin{macro}[EXP]{\@@_exp_not_i:nn, \@@_exp_not_ii:nn}
% Writing the data needs a little information about the structure of the
@@ -1037,7 +1037,7 @@
}
}
}
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
\cs_new:Npn \@@_exp_not_i:nn #1#2 { \exp_not:n {#1} }
\cs_new:Npn \@@_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
% \end{macrocode}
@@ -1045,7 +1045,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
% Much like writing, but direct creation.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_object_now:nn #1#2
@@ -1058,14 +1058,14 @@
%</pdftex>
\@@_backend_object_write:nn {#1} {#2}
}
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\@@_backend_object_last:}
% Much like annotation.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_object_last:
+\cs_new:Npe \@@_backend_object_last:
{
\exp_not:N \int_value:w
%<*luatex>
@@ -1082,7 +1082,7 @@
% \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
% The usual wrapper situation; the three spaces here are essential.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_pageobject_ref:n #1
+\cs_new:Npe \@@_backend_pageobject_ref:n #1
{
\exp_not:N \int_value:w
%<*luatex>
@@ -1141,7 +1141,7 @@
% The availability of the primitive is not universal, so we have to test
% at load time.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_version_major_gset:n #1
+\cs_new_protected:Npe \@@_backend_version_major_gset:n #1
{
%<*luatex>
\int_compare:nNnT \tex_luatexversion:D > { 106 }
@@ -1175,7 +1175,7 @@
% \begin{macro}[EXP]{\@@_backend_version_major:, \@@_backend_version_minor:}
% As above.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_version_major:
+\cs_new:Npe \@@_backend_version_major:
{
%<*luatex>
\int_compare:nNnTF \tex_luatexversion:D > { 106 }
@@ -1226,12 +1226,12 @@
%<*dvipdfmx|xetex>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend:n, \@@_backend:x}
+% \begin{macro}{\@@_backend:n, \@@_backend:e}
% A generic function for the backend PDF specials: used where we can.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend:n #1
+\cs_new_protected:Npe \@@_backend:n #1
{ \__kernel_backend_literal:n { pdf: #1 } }
-\cs_generate_variant:Nn \@@_backend:n { x }
+\cs_generate_variant:Nn \@@_backend:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -1274,7 +1274,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nne}
% \begin{macro}
% {
% \@@_backend_object_write_array:nn ,
@@ -1290,15 +1290,15 @@
\use:c { @@_backend_object_write_ #2 :nn }
{ \@@_backend_object_ref:n {#1} } {#3}
}
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
\cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2
{
- \@@_backend:x
+ \@@_backend:e
{ obj ~ #1 ~ [ ~ \exp_not:n {#2} ~ ] }
}
\cs_new_protected:Npn \@@_backend_object_write_dict:nn #1#2
{
- \@@_backend:x
+ \@@_backend:e
{ obj ~ #1 ~ << ~ \exp_not:n {#2} ~ >> }
}
\cs_new_protected:Npn \@@_backend_object_write_fstream:nn #1#2
@@ -1307,7 +1307,7 @@
{ \@@_backend_object_write_stream:nnnn { } {#1} #2 }
\cs_new_protected:Npn \@@_backend_object_write_stream:nnnn #1#2#3#4
{
- \@@_backend:x
+ \@@_backend:e
{
#1 stream ~ #2 ~
( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
@@ -1318,18 +1318,18 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
% No anonymous objects with \texttt{dvipdfmx} so we have to give an
% object name.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_object_now:nn #1#2
{
\int_gincr:N \g_@@_backend_object_int
- \exp_args:Nnx \use:c { @@_backend_object_write_ #1 :nn }
+ \exp_args:Nne \use:c { @@_backend_object_write_ #1 :nn }
{ @pdf.obj \int_use:N \g_@@_backend_object_int }
{#2}
}
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
% \end{macrocode}
% \end{macro}
%
@@ -1364,7 +1364,7 @@
{
\int_gincr:N \g_@@_backend_object_int
\int_gset_eq:NN \g_@@_backend_annotation_int \g_@@_backend_object_int
- \@@_backend:x
+ \@@_backend:e
{
ann ~ @pdf.obj \int_use:N \g_@@_backend_object_int \c_space_tl
width ~ \dim_eval:n {#1} ~
@@ -1400,10 +1400,10 @@
{ \@@_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
\cs_new_protected:Npn \@@_backend_link_begin_user:nnw #1#2
{ \@@_backend_link_begin:n {#1#2} }
-\cs_new_protected:Npx \@@_backend_link_begin:n #1
+\cs_new_protected:Npe \@@_backend_link_begin:n #1
{
\exp_not:N \int_gincr:N \exp_not:N \g_@@_backend_link_int
- \@@_backend:x
+ \@@_backend:e
{
bann ~
@pdf.lnk
@@ -1435,7 +1435,7 @@
% Pass to \texttt{dvipdfmx}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_link_margin:n #1
- { \__kernel_backend_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
+ { \__kernel_backend_literal:e { dvipdfmx:config~g~ \dim_eval:n {#1} } }
% \end{macrocode}
% \end{macro}
%
@@ -1449,7 +1449,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_destination:nn #1#2
{
- \@@_backend:x
+ \@@_backend:e
{
dest ~ ( \exp_not:n {#1} )
[
@@ -1518,7 +1518,7 @@
% Pass data to the backend: these are a one-shot.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_compresslevel:n #1
- { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
+ { \__kernel_backend_literal:e { dvipdfmx:config~z~ \int_eval:n {#1} } }
\cs_new_protected:Npn \@@_backend_compress_objects:n #1
{
\bool_if:nF {#1}
@@ -1534,13 +1534,13 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_version_major_gset:n #1
{
- \cs_gset:Npx \@@_backend_version_major: { \int_eval:n {#1} }
- \__kernel_backend_literal:x { pdf:majorversion~ \@@_backend_version_major: }
+ \cs_gset:Npe \@@_backend_version_major: { \int_eval:n {#1} }
+ \__kernel_backend_literal:e { pdf:majorversion~ \@@_backend_version_major: }
}
\cs_new_protected:Npn \@@_backend_version_minor_gset:n #1
{
- \cs_gset:Npx \@@_backend_version_minor: { \int_eval:n {#1} }
- \__kernel_backend_literal:x { pdf:minorversion~ \@@_backend_version_minor: }
+ \cs_gset:Npe \@@_backend_version_minor: { \int_eval:n {#1} }
+ \__kernel_backend_literal:e { pdf:minorversion~ \@@_backend_version_minor: }
}
% \end{macrocode}
% \end{macro}
@@ -1608,7 +1608,7 @@
%
% \begin{macro}{\@@_backend_link_last:}
% \begin{macrocode}
-\cs_new:Npx \@@_backend_link_last: { }
+\cs_new:Npe \@@_backend_link_last: { }
% \end{macrocode}
% \end{macro}
%
@@ -1642,8 +1642,8 @@
%
% \begin{macro}{\@@_backend_object_new:n}
% \begin{macro}[EXP]{\@@_backend_object_ref:n}
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nx}
-% \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:ne}
+% \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:ne}
% \begin{macro}{\@@_backend_object_last:}
% \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
% All no-ops here.
@@ -1651,9 +1651,9 @@
\cs_new_protected:Npn \@@_backend_object_new:nn #1 { }
\cs_new:Npn \@@_backend_object_ref:n #1 { }
\cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 { }
-\cs_new_protected:Npn \@@_backend_object_write:nnx #1#2#3 { }
+\cs_new_protected:Npn \@@_backend_object_write:nne #1#2#3 { }
\cs_new_protected:Npn \@@_backend_object_now:nn #1#2 { }
-\cs_new_protected:Npn \@@_backend_object_now:nx #1#2 { }
+\cs_new_protected:Npn \@@_backend_object_now:ne #1#2 { }
\cs_new:Npn \@@_backend_object_last: { }
\cs_new:Npn \@@_backend_pageobject_ref:n #1 { }
% \end{macrocode}