From f448cdb03795e1bb20f2f161b6ef98ee9d397d63 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 31 Aug 2022 20:20:02 +0000 Subject: l3backend (31aug22) git-svn-id: svn://tug.org/texlive/trunk@64252 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md | 8 +- Master/texmf-dist/doc/latex/l3backend/README.md | 2 +- .../doc/latex/l3backend/l3backend-code.pdf | Bin 932092 -> 929269 bytes .../source/latex/l3backend/l3backend-basics.dtx | 14 +- .../source/latex/l3backend/l3backend-box.dtx | 2 +- .../source/latex/l3backend/l3backend-color.dtx | 22 ++-- .../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 | 141 +++++++++------------ .../tex/latex/l3backend/l3backend-dvipdfmx.def | 40 +++--- .../tex/latex/l3backend/l3backend-dvips.def | 48 +++---- .../tex/latex/l3backend/l3backend-dvisvgm.def | 8 +- .../tex/latex/l3backend/l3backend-luatex.def | 59 ++++----- .../tex/latex/l3backend/l3backend-pdftex.def | 59 ++++----- .../tex/latex/l3backend/l3backend-xetex.def | 40 +++--- 17 files changed, 190 insertions(+), 261 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md index 8bf6a938660..e2e4f4a3b39 100644 --- a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md @@ -6,6 +6,11 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2022-08-30] + +### Added +- Support for new approach to writing PDF objects + ## [2022-08-23] ### Changed @@ -262,7 +267,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/2022-08-23...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2022-08-30...HEAD +[2022-08-30]: https://github.com/latex3/latex3/compare/2022-08-23...2022-08-30 [2022-08-23]: https://github.com/latex3/latex3/compare/2022-08-05...2022-08-23 [2022-08-05]: https://github.com/latex3/latex3/compare/2022-07-01...2022-08-05 [2022-07-01]: https://github.com/latex3/latex3/compare/2022-04-20...2022-07-01 diff --git a/Master/texmf-dist/doc/latex/l3backend/README.md b/Master/texmf-dist/doc/latex/l3backend/README.md index 724c54a8902..5961e2ff7a4 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 2022-08-23 +Release 2022-08-30 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 00836f6abb2..9862216c015 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 135bee63ebe..09672f0ac81 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 2022-08-23} +% \date{Released 2022-08-30} % % \maketitle % @@ -70,27 +70,27 @@ % \begin{macrocode} \ProvidesExplFile %<*dvipdfmx> - {l3backend-dvipdfmx.def}{2022-08-23}{} + {l3backend-dvipdfmx.def}{2022-08-30}{} {L3 backend support: dvipdfmx} % %<*dvips> - {l3backend-dvips.def}{2022-08-23}{} + {l3backend-dvips.def}{2022-08-30}{} {L3 backend support: dvips} % %<*dvisvgm> - {l3backend-dvisvgm.def}{2022-08-23}{} + {l3backend-dvisvgm.def}{2022-08-30}{} {L3 backend support: dvisvgm} % %<*luatex> - {l3backend-luatex.def}{2022-08-23}{} + {l3backend-luatex.def}{2022-08-30}{} {L3 backend support: PDF output (LuaTeX)} % %<*pdftex> - {l3backend-pdftex.def}{2022-08-23}{} + {l3backend-pdftex.def}{2022-08-30}{} {L3 backend support: PDF output (pdfTeX)} % %<*xetex> - {l3backend-xetex.def}{2022-08-23}{} + {l3backend-xetex.def}{2022-08-30}{} {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 6b5b08457c4..4a41423fb01 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 2022-08-23} +% \date{Released 2022-08-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx index dabf7284278..a4eef230984 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 2022-08-23} +% \date{Released 2022-08-30} % % \maketitle % @@ -852,8 +852,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g_@@_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g_@@_model_int } + \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 } @@ -867,8 +867,8 @@ { \pdf_object_if_exist:nF { @@_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { @@_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { @@_illuminant_CIELAB_ #1 } + \pdf_object_new:n { @@_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { @@_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -921,8 +921,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g_@@_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g_@@_model_int } + \pdf_object_new:n { color \int_use:N \g_@@_model_int } + \pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -951,8 +951,8 @@ { \pdf_object_if_exist:nF { @@_icc_ #1 } { - \pdf_object_new:nn { @@_icc_ #1 } { fstream } - \pdf_object_write:nx { @@_icc_ #1 } + \pdf_object_new:n { @@_icc_ #1 } + \pdf_object_write:nnx { @@_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -976,8 +976,8 @@ { \pdf_object_if_exist:nF { @@_icc_ #1 } { - \pdf_object_new:nn { @@_icc_ #1 } { fstream } - \pdf_object_write:nn { @@_icc_ #1 } + \pdf_object_new:n { @@_icc_ #1 } + \pdf_object_write:nnn { @@_icc_ #1 } { fstream } { { /N ~ #3 } {#1} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx index c3d91ed9aff..952a849ec6d 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 2022-08-23} +% \date{Released 2022-08-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx index 4a4b5136adb..53e9c767ffc 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 2022-08-23} +% \date{Released 2022-08-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx index f4caf7a7e57..aab4a1228c3 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 2022-08-23} +% \date{Released 2022-08-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx index a1decb1c384..e47475eece4 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 2022-08-23} +% \date{Released 2022-08-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx index d93ddc4e338..b31805b0fd2 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 2022-08-23} +% \date{Released 2022-08-30} % % \maketitle % @@ -105,33 +105,34 @@ % % \subsubsection{Objects} % -% \begin{variable}{\g_@@_backend_object_int, \g_@@_backend_object_prop} -% For tracking objects to allow finalisation. +% \begin{variable}{\g_@@_backend_object_int} +% For tracking objects. % \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:nn} +% \begin{macro}{\@@_backend_object_new:n} % \begin{macro}[EXP]{\@@_backend_object_ref:n} -% Tracking objects is similar to \texttt{dvipdfmx}. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:nn #1#2 +\cs_new_protected:Npn \@@_backend_object_new:n #1 { \int_gincr:N \g_@@_backend_object_int \int_const:cn - { c_@@_backend_object_ \tl_to_str:n {#1} _int } + { c_@@_object_ \tl_to_str:n {#1} _int } { \g_@@_backend_object_int } - \prop_gput:Nnn \g_@@_backend_object_prop {#1} {#2} } \cs_new:Npn \@@_backend_object_ref:n #1 - { { pdf.obj \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } } } + { { pdf.obj \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } } } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\@@_backend_object_write:nn, \@@_backend_object_write:nx} +% \begin{macro} +% { +% \@@_backend_object_write:nnn, \@@_backend_object_write:nnx, +% \@@_backend_object_write_aux:nnn +% } % \begin{macro} % { % \@@_backend_object_write_array:nn , @@ -141,16 +142,23 @@ % } % \begin{macro}{\@@_backend_object_write_stream:nnn} % This is where we choose the actual type: some work to get things -% right. +% right. To allow code sharing with the anonymous version, we use an +% auxiliary. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_write:nn #1#2 +\cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 + { + \@@_backend_object_write_aux:nnn + { \@@_backend_object_ref:n {#1} } + {#2} {#3} + } +\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx } +\cs_new_protected:Npn \@@_backend_object_write_aux:nnn #1#2#3 { \@@_backend_pdfmark:x { - /_objdef ~ \@@_backend_object_ref:n {#1} + /_objdef ~ #1 /type - \str_case_e:nn - { \prop_item:Nn \g_@@_backend_object_prop {#1} } + \str_case:nn {#2} { { array } { /array } { dict } { /dict } @@ -159,11 +167,8 @@ } /OBJ } - \use:c - { @@_backend_object_write_ \prop_item:Nn \g_@@_backend_object_prop {#1} :nn } - { \@@_backend_object_ref:n {#1} } {#2} + \use:c { @@_backend_object_write_ #2 :nn } {#1} {#3} } -\cs_generate_variant:Nn \@@_backend_object_write:nn { nx } \cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2 { \@@_backend_pdfmark:x @@ -213,22 +218,9 @@ \cs_new_protected:Npn \@@_backend_object_now:nn #1#2 { \int_gincr:N \g_@@_backend_object_int - \@@_backend_pdfmark:x - { - /_objdef ~ { pdf.obj \int_use:N \g_@@_backend_object_int } - /type - \str_case:nn - {#1} - { - { array } { /array } - { dict } { /dict } - { fstream } { /stream } - { stream } { /stream } - } - /OBJ - } - \exp_args:Nnx \use:c { @@_backend_object_write_ #1 :nn } - { { pdf.obj \int_use:N \g_@@_backend_object_int } } {#2} + \@@_backend_object_write_aux:nnn + { { pdf.obj \int_use:N \g_@@_backend_object_int } } + {#1} {#2} } \cs_generate_variant:Nn \@@_backend_object_now:nn { nx } % \end{macrocode} @@ -971,12 +963,12 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_backend_object_new:nn} +% \begin{macro}{\@@_backend_object_new:n} % \begin{macro}[EXP]{\@@_backend_object_ref:n} % Declaring objects means reserving at the PDF level plus starting % tracking. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:nn #1#2 +\cs_new_protected:Npn \@@_backend_object_new:n #1 { %<*luatex> \tex_pdfextension:D obj ~ @@ -986,27 +978,27 @@ % reserveobjnum ~ \int_const:cn - { c_@@_backend_object_ \tl_to_str:n {#1} _int } + { c_@@_object_ \tl_to_str:n {#1} _int } %<*luatex> { \tex_pdffeedback:D lastobj } % %<*pdftex> { \tex_pdflastobj:D } % - \prop_gput:Nnn \g_@@_backend_object_prop {#1} {#2} } \cs_new:Npn \@@_backend_object_ref:n #1 - { \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } + { \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\@@_backend_object_write:nn,\@@_backend_object_write:nx} +% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx} +% \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 % object. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_write:nn #1#2 +\cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 { %<*luatex> \tex_immediate:D \tex_pdfextension:D obj ~ @@ -1016,9 +1008,12 @@ % useobjnum ~ \int_use:c - { c_@@_backend_object_ \tl_to_str:n {#1} _int } - \str_case_e:nn - { \prop_item:Nn \g_@@_backend_object_prop {#1} } + { c_@@_object_ \tl_to_str:n {#1} _int } + \@@_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} ~ >> } } @@ -1034,12 +1029,13 @@ } } } -\cs_generate_variant:Nn \@@_backend_object_write:nn { nx } +\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx } \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} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx} % Much like writing, but direct creation. @@ -1052,22 +1048,7 @@ %<*pdftex> \tex_immediate:D \tex_pdfobj:D % - \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 } - } - } + \@@_backend_object_write:nn {#1} {#2} } \cs_generate_variant:Nn \@@_backend_object_now:nn { nx } % \end{macrocode} @@ -1267,27 +1248,25 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_backend_object_new:nn} +% \begin{macro}{\@@_backend_object_new:n} % \begin{macro}[EXP]{\@@_backend_object_ref: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:nn #1#2 +\cs_new_protected:Npn \@@_backend_object_new:n #1 { \int_gincr:N \g_@@_backend_object_int \int_const:cn - { c_@@_backend_object_ \tl_to_str:n {#1} _int } + { c_@@_object_ \tl_to_str:n {#1} _int } { \g_@@_backend_object_int } - \prop_gput:Nnn \g_@@_backend_object_prop {#1} {#2} } \cs_new:Npn \@@_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } } + { @pdf.obj \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\@@_backend_object_write:nn, \@@_backend_object_write:nx} -% \begin{macro}{\@@_backend_object_write:nnn} +% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx} % \begin{macro} % { % \@@_backend_object_write_array:nn , @@ -1298,17 +1277,12 @@ % \begin{macro}{\@@_backend_object_write_stream:nnnn} % This is where we choose the actual type. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_write:nn #1#2 - { - \exp_args:Nx \@@_backend_object_write:nnn - { \prop_item:Nn \g_@@_backend_object_prop {#1} } {#1} {#2} - } -\cs_generate_variant:Nn \@@_backend_object_write:nn { nx } \cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 { - \use:c { @@_backend_object_write_ #1 :nn } - { \@@_backend_object_ref:n {#2} } {#3} + \use:c { @@_backend_object_write_ #2 :nn } + { \@@_backend_object_ref:n {#1} } {#3} } +\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx } \cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2 { \@@_backend:x @@ -1335,7 +1309,6 @@ % \end{macro} % \end{macro} % \end{macro} -% \end{macro} % % \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx} % No anonymous objects with \texttt{dvipdfmx} so we have to give an @@ -1659,18 +1632,18 @@ % % \subsubsection{Objects} % -% \begin{macro}{\@@_backend_object_new:nn} +% \begin{macro}{\@@_backend_object_new:n} % \begin{macro}[EXP]{\@@_backend_object_ref:n} -% \begin{macro}{\@@_backend_object_write:nn, , \@@_backend_object_write:nx} +% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nx} % \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:nx} % \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#2 { } +\cs_new_protected:Npn \@@_backend_object_new:nn #1 { } \cs_new:Npn \@@_backend_object_ref:n #1 { } -\cs_new_protected:Npn \@@_backend_object_write:nn #1#2 { } -\cs_new_protected:Npn \@@_backend_object_write:nx #1#2 { } +\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_now:nn #1#2 { } \cs_new_protected:Npn \@@_backend_object_now:nx #1#2 { } \cs_new:Npn \@@_backend_object_last: { } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def index 7146ee10cdc..67f92072dcd 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}{2022-08-23}{} + {l3backend-dvipdfmx.def}{2022-08-30}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -147,8 +147,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: } } \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 } @@ -158,8 +158,8 @@ { \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 } + \pdf_object_new:n { __color_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -202,8 +202,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -224,8 +224,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nx { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnx { __color_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -242,8 +242,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nn { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnn { __color_icc_ #1 } { fstream } { { /N ~ #3 } {#1} @@ -625,27 +625,21 @@ { \__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:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \int_gincr:N \g__pdf_backend_object_int \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \g__pdf_backend_object_int } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 - { - \exp_args:Nx \__pdf_backend_object_write:nnn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } {#1} {#2} - } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } + { @pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { - \use:c { __pdf_backend_object_write_ #1 :nn } - { \__pdf_backend_object_ref:n {#2} } {#3} + \use:c { __pdf_backend_object_write_ #2 :nn } + { \__pdf_backend_object_ref:n {#1} } {#3} } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2 { \__pdf_backend:x diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def index b7efe7a693e..c20decfc84d 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}{2022-08-23}{} + {l3backend-dvips.def}{2022-08-30}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -636,25 +636,29 @@ \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 -\prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \int_gincr:N \g__pdf_backend_object_int \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \g__pdf_backend_object_int } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { { pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 + { { pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } } +\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 + { + \__pdf_backend_object_write_aux:nnn + { \__pdf_backend_object_ref:n {#1} } + {#2} {#3} + } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } +\cs_new_protected:Npn \__pdf_backend_object_write_aux:nnn #1#2#3 { \__pdf_backend_pdfmark:x { - /_objdef ~ \__pdf_backend_object_ref:n {#1} + /_objdef ~ #1 /type - \str_case_e:nn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } + \str_case:nn {#2} { { array } { /array } { dict } { /dict } @@ -663,11 +667,8 @@ } /OBJ } - \use:c - { __pdf_backend_object_write_ \prop_item:Nn \g__pdf_backend_object_prop {#1} :nn } - { \__pdf_backend_object_ref:n {#1} } {#2} + \use:c { __pdf_backend_object_write_ #2 :nn } {#1} {#3} } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2 { \__pdf_backend_pdfmark:x @@ -709,22 +710,9 @@ \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { \int_gincr:N \g__pdf_backend_object_int - \__pdf_backend_pdfmark:x - { - /_objdef ~ { pdf.obj \int_use:N \g__pdf_backend_object_int } - /type - \str_case:nn - {#1} - { - { array } { /array } - { dict } { /dict } - { fstream } { /stream } - { stream } { /stream } - } - /OBJ - } - \exp_args:Nnx \use:c { __pdf_backend_object_write_ #1 :nn } - { { pdf.obj \int_use:N \g__pdf_backend_object_int } } {#2} + \__pdf_backend_object_write_aux:nnn + { { pdf.obj \int_use:N \g__pdf_backend_object_int } } + {#1} {#2} } \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx } \cs_new:Npn \__pdf_backend_object_last: diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def index 3f20aef6ff2..a471691cef3 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}{2022-08-23}{} + {l3backend-dvisvgm.def}{2022-08-30}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -657,10 +657,10 @@ \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#2 { } +\cs_new_protected:Npn \__pdf_backend_object_new:nn #1 { } \cs_new:Npn \__pdf_backend_object_ref:n #1 { } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 { } -\cs_new_protected:Npn \__pdf_backend_object_write:nx #1#2 { } +\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { } +\cs_new_protected:Npn \__pdf_backend_object_write:nnx #1#2#3 { } \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { } \cs_new_protected:Npn \__pdf_backend_object_now:nx #1#2 { } \cs_new:Npn \__pdf_backend_object_last: { } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def index 9be080803a7..82de7e19712 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}{2022-08-23}{} + {l3backend-luatex.def}{2022-08-30}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -205,8 +205,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: } } \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 } @@ -216,8 +216,8 @@ { \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 } + \pdf_object_new:n { __color_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -260,8 +260,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -282,8 +282,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nx { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnx { __color_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -300,8 +300,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nn { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnn { __color_icc_ #1 } { fstream } { { /N ~ #3 } {#1} @@ -736,25 +736,27 @@ { / #1 ~ #2 } } \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \tex_pdfextension:D obj ~ reserveobjnum ~ \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \tex_pdffeedback:D lastobj } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 + { \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\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_backend_object_ \tl_to_str:n {#1} _int } - \str_case_e:nn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } + { c__pdf_object_ \tl_to_str:n {#1} _int } + \__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} ~ >> } } @@ -770,28 +772,13 @@ } } } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} } \cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} } \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { \tex_immediate:D \tex_pdfextension:D obj ~ - \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 } - } - } + \__pdf_backend_object_write:nn {#1} {#2} } \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx } \cs_new:Npx \__pdf_backend_object_last: diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def index 4d5b03c068b..ef45c26770f 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}{2022-08-23}{} + {l3backend-pdftex.def}{2022-08-30}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -205,8 +205,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: } } \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 } @@ -216,8 +216,8 @@ { \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 } + \pdf_object_new:n { __color_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -260,8 +260,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -282,8 +282,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nx { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnx { __color_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -300,8 +300,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nn { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnn { __color_icc_ #1 } { fstream } { { /N ~ #3 } {#1} @@ -736,25 +736,27 @@ { / #1 ~ #2 } } \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \tex_pdfobj:D reserveobjnum ~ \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \tex_pdflastobj:D } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 + { \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { \tex_immediate:D \tex_pdfobj:D useobjnum ~ \int_use:c - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } - \str_case_e:nn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } + { c__pdf_object_ \tl_to_str:n {#1} _int } + \__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} ~ >> } } @@ -770,28 +772,13 @@ } } } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} } \cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} } \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { \tex_immediate:D \tex_pdfobj:D - \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 } - } - } + \__pdf_backend_object_write:nn {#1} {#2} } \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx } \cs_new:Npx \__pdf_backend_object_last: diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def index 29e2cc7c183..d171fc435d9 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}{2022-08-23}{} + {l3backend-xetex.def}{2022-08-30}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -147,8 +147,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: } } \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 } @@ -158,8 +158,8 @@ { \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 } + \pdf_object_new:n { __color_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -202,8 +202,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -224,8 +224,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nx { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnx { __color_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -242,8 +242,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nn { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnn { __color_icc_ #1 } { fstream } { { /N ~ #3 } {#1} @@ -679,27 +679,21 @@ { \__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:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \int_gincr:N \g__pdf_backend_object_int \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \g__pdf_backend_object_int } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 - { - \exp_args:Nx \__pdf_backend_object_write:nnn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } {#1} {#2} - } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } + { @pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { - \use:c { __pdf_backend_object_write_ #1 :nn } - { \__pdf_backend_object_ref:n {#2} } {#3} + \use:c { __pdf_backend_object_write_ #2 :nn } + { \__pdf_backend_object_ref:n {#1} } {#3} } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2 { \__pdf_backend:x -- cgit v1.2.3