From 93ae2978eea5bd5c39e8e0ac208a658c4c0c2e05 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 30 Apr 2024 20:02:48 +0000 Subject: l3backend (30apr24) git-svn-id: svn://tug.org/texlive/trunk@71139 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md | 11 ++- Master/texmf-dist/doc/latex/l3backend/README.md | 2 +- .../doc/latex/l3backend/l3backend-code.pdf | Bin 908163 -> 907780 bytes .../source/latex/l3backend/l3backend-basics.dtx | 14 +-- .../source/latex/l3backend/l3backend-box.dtx | 2 +- .../source/latex/l3backend/l3backend-color.dtx | 2 +- .../source/latex/l3backend/l3backend-draw.dtx | 2 +- .../source/latex/l3backend/l3backend-graphics.dtx | 2 +- .../source/latex/l3backend/l3backend-header.dtx | 2 +- .../source/latex/l3backend/l3backend-opacity.dtx | 2 +- .../source/latex/l3backend/l3backend-pdf.dtx | 106 +++++++++------------ .../tex/latex/l3backend/l3backend-dvipdfmx.def | 16 +--- .../tex/latex/l3backend/l3backend-dvips.def | 16 +--- .../tex/latex/l3backend/l3backend-dvisvgm.def | 5 +- .../tex/latex/l3backend/l3backend-luatex.def | 49 +++++----- .../tex/latex/l3backend/l3backend-pdftex.def | 49 +++++----- .../tex/latex/l3backend/l3backend-xetex.def | 16 +--- 17 files changed, 131 insertions(+), 165 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md index 66a69a3bb34..ecd85938815 100644 --- a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md @@ -6,6 +6,14 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-04-11] + +### Added +- Support for 'raw' PDF object IDs + +### Changed +- Update PDF object management code + ## [2024-03-14] ### Removed @@ -339,7 +347,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/2024-03-14...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-04-11...HEAD +[2024-04-11]: https://github.com/latex3/latex3/compare/2024-03-14...2024-04-11 [2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14 [2024-02-20]: https://github.com/latex3/latex3/compare/2024-01-04...2024-02-20 [2024-01-04]: https://github.com/latex3/latex3/compare/2023-11-09...2024-01-04 diff --git a/Master/texmf-dist/doc/latex/l3backend/README.md b/Master/texmf-dist/doc/latex/l3backend/README.md index 7be33df8b83..058fa63cc2a 100644 --- a/Master/texmf-dist/doc/latex/l3backend/README.md +++ b/Master/texmf-dist/doc/latex/l3backend/README.md @@ -1,7 +1,7 @@ LaTeX3 Backend Drivers ====================== -Release 2024-03-14 +Release 2024-04-11 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/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf b/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf index 9affc7d856e..d298479c420 100644 Binary files a/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf and b/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf differ diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx index 4d3b68225ab..fbac5033179 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -70,27 +70,27 @@ % \begin{macrocode} \ProvidesExplFile %<*dvipdfmx> - {l3backend-dvipdfmx.def}{2024-03-14}{} + {l3backend-dvipdfmx.def}{2024-04-11}{} {L3 backend support: dvipdfmx} % %<*dvips> - {l3backend-dvips.def}{2024-03-14}{} + {l3backend-dvips.def}{2024-04-11}{} {L3 backend support: dvips} % %<*dvisvgm> - {l3backend-dvisvgm.def}{2024-03-14}{} + {l3backend-dvisvgm.def}{2024-04-11}{} {L3 backend support: dvisvgm} % %<*luatex> - {l3backend-luatex.def}{2024-03-14}{} + {l3backend-luatex.def}{2024-04-11}{} {L3 backend support: PDF output (LuaTeX)} % %<*pdftex> - {l3backend-pdftex.def}{2024-03-14}{} + {l3backend-pdftex.def}{2024-04-11}{} {L3 backend support: PDF output (pdfTeX)} % %<*xetex> - {l3backend-xetex.def}{2024-03-14}{} + {l3backend-xetex.def}{2024-04-11}{} {L3 backend support: XeTeX} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx index 3fc3243c422..93d83293ef8 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx index eaa89add8cf..307432d554f 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx index eef86886f58..c651ab92fed 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx index 9360bffd2e1..e20457368da 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx index 84f8ab53b7a..486f5648224 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx index a5828bfd905..0c29574c377 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx index 0a16a79f9ea..cf09c0eec22 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -113,25 +113,13 @@ % % \subsubsection{Objects} % -% \begin{variable}{\g_@@_backend_object_int} -% For tracking objects. +% \begin{macro}{\@@_backend_object_new:} +% \begin{macro}[EXP]{\@@_backend_object_ref:n, \@@_backend_object_id:n} % \begin{macrocode} -\int_new:N \g_@@_backend_object_int -% \end{macrocode} -% \end{variable} -% -% \begin{macro}{\@@_backend_object_new:n} -% \begin{macro}[EXP]{\@@_backend_object_ref:n} -% \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:n #1 - { - \int_gincr:N \g_@@_backend_object_int - \int_const:cn - { c_@@_object_ \tl_to_str:n {#1} _int } - { \g_@@_backend_object_int } - } -\cs_new:Npn \@@_backend_object_ref:n #1 - { { pdf.obj \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } } } +\cs_new_protected:Npn \@@_backend_object_new: + { \int_gincr:N \g_@@_backend_object_int } +\cs_new:Npn \@@_backend_object_ref:n #1 { { pdf.obj #1 } } +\cs_new_eq:NN \@@_backend_object_id:n \@@_backend_object_ref:n % \end{macrocode} % \end{macro} % \end{macro} @@ -958,12 +946,12 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_backend_object_new:n} -% \begin{macro}[EXP]{\@@_backend_object_ref:n} +% \begin{macro}{\@@_backend_object_new:} +% \begin{macro}[EXP]{\@@_backend_object_ref:n, \@@_backend_object_id:n} % Declaring objects means reserving at the PDF level plus starting % tracking. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:n #1 +\cs_new_protected:Npn \@@_backend_object_new: { %<*luatex> \tex_pdfextension:D obj ~ @@ -972,17 +960,16 @@ \tex_pdfobj:D % reserveobjnum ~ - \int_const:cn - { c_@@_object_ \tl_to_str:n {#1} _int } + \int_gset:Nn \g_@@_backend_object_int %<*luatex> - { \tex_pdffeedback:D lastobj } + { \tex_pdffeedback:D lastobj } % %<*pdftex> - { \tex_pdflastobj:D } + { \tex_pdflastobj:D } % } -\cs_new:Npn \@@_backend_object_ref:n #1 - { \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\cs_new:Npn \@@_backend_object_ref:n #1 { #1 ~ 0 ~ R } +\cs_new:Npn \@@_backend_object_id:n #1 {#1} % \end{macrocode} % \end{macro} % \end{macro} @@ -1001,28 +988,26 @@ %<*pdftex> \tex_immediate:D \tex_pdfobj:D % - useobjnum ~ - \int_use:c - { c_@@_object_ \tl_to_str:n {#1} _int } - \@@_backend_object_write:nn {#2} {#3} + useobjnum ~ #1 + \@@_backend_object_write:nn {#2} {#3} } \cs_new:Npn \@@_backend_object_write:nn #1#2 { - \str_case:nn {#1} - { - { array } { { [ ~ \exp_not:n {#2} ~ ] } } - { dict } { { << ~ \exp_not:n {#2} ~ >> } } - { fstream } - { - stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~ - file ~ { \@@_exp_not_ii:nn #2 } - } - { stream } - { - stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~ - { \@@_exp_not_ii:nn #2 } - } - } + \str_case:nn {#1} + { + { array } { { [ ~ \exp_not:n {#2} ~ ] } } + { dict } { { << ~ \exp_not:n {#2} ~ >> } } + { fstream } + { + stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~ + file ~ { \@@_exp_not_ii:nn #2 } + } + { stream } + { + stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~ + { \@@_exp_not_ii:nn #2 } + } + } } \cs_generate_variant:Nn \@@_backend_object_write:nnn { nne } \cs_new:Npn \@@_exp_not_i:nn #1#2 { \exp_not:n {#1} } @@ -1235,28 +1220,22 @@ % % \subsubsection{Objects} % -% \begin{variable}{\g_@@_backend_object_int, \g_@@_backend_object_prop} +% \begin{variable}{\g_@@_backend_object_prop} % For tracking objects to allow finalisation. % \begin{macrocode} -\int_new:N \g_@@_backend_object_int \prop_new:N \g_@@_backend_object_prop % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_backend_object_new:n} -% \begin{macro}[EXP]{\@@_backend_object_ref:n} +% \begin{macro}{\@@_backend_object_new:} +% \begin{macro}[EXP]{\@@_backend_object_ref:n, \@@_backend_object_id:n} % Objects are tracked at the macro level, but we don't have to do anything % at this stage. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:n #1 - { - \int_gincr:N \g_@@_backend_object_int - \int_const:cn - { c_@@_object_ \tl_to_str:n {#1} _int } - { \g_@@_backend_object_int } - } -\cs_new:Npn \@@_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } } +\cs_new_protected:Npn \@@_backend_object_new: + { \int_gincr:N \g_@@_backend_object_int } +\cs_new:Npn \@@_backend_object_ref:n #1 { @pdf.obj #1 } +\cs_new_eq:NN \@@_backend_object_id:n \@@_backend_object_ref:n % \end{macrocode} % \end{macro} % \end{macro} @@ -1627,16 +1606,17 @@ % % \subsubsection{Objects} % -% \begin{macro}{\@@_backend_object_new:n} -% \begin{macro}[EXP]{\@@_backend_object_ref:n} +% \begin{macro}{\@@_backend_object_new:} +% \begin{macro}[EXP]{\@@_backend_object_ref:n, \@@_backend_object_id:n} % \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. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:nn #1 { } +\cs_new_protected:Npn \@@_backend_object_new: { } \cs_new:Npn \@@_backend_object_ref:n #1 { } +\cs_new:Npn \@@_backend_object_id:n #1 { } \cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 { } \cs_new_protected:Npn \@@_backend_object_write:nne #1#2#3 { } \cs_new_protected:Npn \@@_backend_object_now:nn #1#2 { } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def index 667093f3174..a8a54ec2dae 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-03-14}{} + {l3backend-dvipdfmx.def}{2024-04-11}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -607,17 +607,11 @@ { \__pdf_backend:n { put ~ @catalog << /#1 ~ #2 >> } } \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { \__pdf_backend:n { docinfo << /#1 ~ #2 >> } } -\int_new:N \g__pdf_backend_object_int \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:n #1 - { - \int_gincr:N \g__pdf_backend_object_int - \int_const:cn - { c__pdf_object_ \tl_to_str:n {#1} _int } - { \g__pdf_backend_object_int } - } -\cs_new:Npn \__pdf_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } +\cs_new_protected:Npn \__pdf_backend_object_new: + { \int_gincr:N \g__pdf_backend_object_int } +\cs_new:Npn \__pdf_backend_object_ref:n #1 { @pdf.obj #1 } +\cs_new_eq:NN \__pdf_backend_object_id:n \__pdf_backend_object_ref:n \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { \use:c { __pdf_backend_object_write_ #2 :nn } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def index d5bd655a922..0c60ac3e936 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-03-14}{} + {l3backend-dvips.def}{2024-04-11}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -623,16 +623,10 @@ { \__pdf_backend_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } } \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { \__pdf_backend_pdfmark:n { /#1 ~ #2 /DOCINFO } } -\int_new:N \g__pdf_backend_object_int -\cs_new_protected:Npn \__pdf_backend_object_new:n #1 - { - \int_gincr:N \g__pdf_backend_object_int - \int_const:cn - { c__pdf_object_ \tl_to_str:n {#1} _int } - { \g__pdf_backend_object_int } - } -\cs_new:Npn \__pdf_backend_object_ref:n #1 - { { pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } } +\cs_new_protected:Npn \__pdf_backend_object_new: + { \int_gincr:N \g__pdf_backend_object_int } +\cs_new:Npn \__pdf_backend_object_ref:n #1 { { pdf.obj #1 } } +\cs_new_eq:NN \__pdf_backend_object_id:n \__pdf_backend_object_ref:n \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { \__pdf_backend_object_write_aux:nnn diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def index 2e3c3cacb44..e1483003cc7 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-03-14}{} + {l3backend-dvisvgm.def}{2024-04-11}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -640,8 +640,9 @@ \cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { } \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { } \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { } -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1 { } +\cs_new_protected:Npn \__pdf_backend_object_new: { } \cs_new:Npn \__pdf_backend_object_ref:n #1 { } +\cs_new:Npn \__pdf_backend_object_id:n #1 { } \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { } \cs_new_protected:Npn \__pdf_backend_object_write:nne #1#2#3 { } \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def index aaa8312d5d8..cdd871cceda 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-03-14}{} + {l3backend-luatex.def}{2024-04-11}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -726,41 +726,38 @@ { / #1 ~ #2 } } \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:n #1 +\cs_new_protected:Npn \__pdf_backend_object_new: { \tex_pdfextension:D obj ~ reserveobjnum ~ - \int_const:cn - { c__pdf_object_ \tl_to_str:n {#1} _int } - { \tex_pdffeedback:D lastobj } + \int_gset:Nn \g__pdf_backend_object_int + { \tex_pdffeedback:D lastobj } } -\cs_new:Npn \__pdf_backend_object_ref:n #1 - { \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\cs_new:Npn \__pdf_backend_object_ref:n #1 { #1 ~ 0 ~ R } +\cs_new:Npn \__pdf_backend_object_id:n #1 {#1} \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { \tex_immediate:D \tex_pdfextension:D obj ~ - useobjnum ~ - \int_use:c - { c__pdf_object_ \tl_to_str:n {#1} _int } - \__pdf_backend_object_write:nn {#2} {#3} + useobjnum ~ #1 + \__pdf_backend_object_write:nn {#2} {#3} } \cs_new:Npn \__pdf_backend_object_write:nn #1#2 { - \str_case:nn {#1} - { - { array } { { [ ~ \exp_not:n {#2} ~ ] } } - { dict } { { << ~ \exp_not:n {#2} ~ >> } } - { fstream } - { - stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ - file ~ { \__pdf_exp_not_ii:nn #2 } - } - { stream } - { - stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ - { \__pdf_exp_not_ii:nn #2 } - } - } + \str_case:nn {#1} + { + { array } { { [ ~ \exp_not:n {#2} ~ ] } } + { dict } { { << ~ \exp_not:n {#2} ~ >> } } + { fstream } + { + stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ + file ~ { \__pdf_exp_not_ii:nn #2 } + } + { stream } + { + stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ + { \__pdf_exp_not_ii:nn #2 } + } + } } \cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nne } \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def index 2ef1d26d116..3c51094bbc8 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-03-14}{} + {l3backend-pdftex.def}{2024-04-11}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -725,41 +725,38 @@ { / #1 ~ #2 } } \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:n #1 +\cs_new_protected:Npn \__pdf_backend_object_new: { \tex_pdfobj:D reserveobjnum ~ - \int_const:cn - { c__pdf_object_ \tl_to_str:n {#1} _int } - { \tex_pdflastobj:D } + \int_gset:Nn \g__pdf_backend_object_int + { \tex_pdflastobj:D } } -\cs_new:Npn \__pdf_backend_object_ref:n #1 - { \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\cs_new:Npn \__pdf_backend_object_ref:n #1 { #1 ~ 0 ~ R } +\cs_new:Npn \__pdf_backend_object_id:n #1 {#1} \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { \tex_immediate:D \tex_pdfobj:D - useobjnum ~ - \int_use:c - { c__pdf_object_ \tl_to_str:n {#1} _int } - \__pdf_backend_object_write:nn {#2} {#3} + useobjnum ~ #1 + \__pdf_backend_object_write:nn {#2} {#3} } \cs_new:Npn \__pdf_backend_object_write:nn #1#2 { - \str_case:nn {#1} - { - { array } { { [ ~ \exp_not:n {#2} ~ ] } } - { dict } { { << ~ \exp_not:n {#2} ~ >> } } - { fstream } - { - stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ - file ~ { \__pdf_exp_not_ii:nn #2 } - } - { stream } - { - stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ - { \__pdf_exp_not_ii:nn #2 } - } - } + \str_case:nn {#1} + { + { array } { { [ ~ \exp_not:n {#2} ~ ] } } + { dict } { { << ~ \exp_not:n {#2} ~ >> } } + { fstream } + { + stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ + file ~ { \__pdf_exp_not_ii:nn #2 } + } + { stream } + { + stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ + { \__pdf_exp_not_ii:nn #2 } + } + } } \cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nne } \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def index 798bd686f2a..e05725885ca 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-03-14}{} + {l3backend-xetex.def}{2024-04-11}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -661,17 +661,11 @@ { \__pdf_backend:n { put ~ @catalog << /#1 ~ #2 >> } } \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { \__pdf_backend:n { docinfo << /#1 ~ #2 >> } } -\int_new:N \g__pdf_backend_object_int \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:n #1 - { - \int_gincr:N \g__pdf_backend_object_int - \int_const:cn - { c__pdf_object_ \tl_to_str:n {#1} _int } - { \g__pdf_backend_object_int } - } -\cs_new:Npn \__pdf_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } +\cs_new_protected:Npn \__pdf_backend_object_new: + { \int_gincr:N \g__pdf_backend_object_int } +\cs_new:Npn \__pdf_backend_object_ref:n #1 { @pdf.obj #1 } +\cs_new_eq:NN \__pdf_backend_object_id:n \__pdf_backend_object_ref:n \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { \use:c { __pdf_backend_object_write_ #2 :nn } -- cgit v1.2.3