From 0f16883734671b9de034bb28b54771c4e509783f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 31 Jul 2021 20:56:25 +0000 Subject: pdfmanagement-testphase (31jul21) git-svn-id: svn://tug.org/texlive/trunk@60127 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/pdfmanagement-testphase/CHANGELOG.md | 17 ++ .../doc/latex/pdfmanagement-testphase/README.md | 2 +- .../pdfmanagement-testphase/hyperref-generic.pdf | Bin 949513 -> 948089 bytes .../l3backend-testphase.pdf | Bin 594809 -> 591169 bytes .../latex/pdfmanagement-testphase/l3pdfannot.pdf | Bin 577451 -> 577331 bytes .../latex/pdfmanagement-testphase/l3pdfdict.pdf | Bin 527225 -> 527111 bytes .../pdfmanagement-testphase/l3pdffield-action.pdf | Bin 548003 -> 547881 bytes .../l3pdffield-checkbox.pdf | Bin 531031 -> 530911 bytes .../pdfmanagement-testphase/l3pdffield-choice.pdf | Bin 534245 -> 534125 bytes .../l3pdffield-pushbutton.pdf | Bin 526426 -> 526311 bytes .../l3pdffield-radiobutton.pdf | Bin 576432 -> 576314 bytes .../l3pdffield-textfield.pdf | Bin 505665 -> 505534 bytes .../latex/pdfmanagement-testphase/l3pdffield.pdf | Bin 739384 -> 739256 bytes .../latex/pdfmanagement-testphase/l3pdffile.pdf | Bin 553454 -> 553330 bytes .../pdfmanagement-testphase/l3pdfmanagement.pdf | Bin 658859 -> 673135 bytes .../latex/pdfmanagement-testphase/l3pdfmeta.pdf | Bin 664002 -> 663896 bytes .../latex/pdfmanagement-testphase/l3pdftools.pdf | Bin 518408 -> 518296 bytes .../latex/pdfmanagement-testphase/l3pdfxform.pdf | Bin 418445 -> 418329 bytes .../latex/pdfmanagement-testphase/ltdocinit.pdf | Bin 537047 -> 536935 bytes .../pdfmanagement-firstaid.pdf | Bin 421608 -> 421483 bytes .../pdfmanagement-testphase.pdf | Bin 446478 -> 446355 bytes .../pdfmanagement-testphase/hyperref-generic.dtx | 139 +++++------ .../l3backend-testphase.dtx | 116 +++------- .../latex/pdfmanagement-testphase/l3pdfannot.dtx | 4 +- .../latex/pdfmanagement-testphase/l3pdfdict.dtx | 4 +- .../pdfmanagement-testphase/l3pdffield-action.dtx | 2 +- .../l3pdffield-checkbox.dtx | 2 +- .../pdfmanagement-testphase/l3pdffield-choice.dtx | 2 +- .../l3pdffield-pushbutton.dtx | 2 +- .../l3pdffield-radiobutton.dtx | 2 +- .../l3pdffield-textfield.dtx | 2 +- .../latex/pdfmanagement-testphase/l3pdffield.dtx | 4 +- .../latex/pdfmanagement-testphase/l3pdffile.dtx | 4 +- .../pdfmanagement-testphase/l3pdfmanagement.dtx | 254 ++++++++++++++++++--- .../latex/pdfmanagement-testphase/l3pdfmeta.dtx | 4 +- .../latex/pdfmanagement-testphase/l3pdftools.dtx | 4 +- .../latex/pdfmanagement-testphase/l3pdfxform.dtx | 4 +- .../latex/pdfmanagement-testphase/ltdocinit.dtx | 4 +- .../pdfmanagement-firstaid.dtx | 4 +- .../pdfmanagement-testphase.dtx | 6 +- .../latex/pdfmanagement-testphase/color-ltx.sty | 2 +- .../pdfmanagement-testphase/hgeneric-testphase.def | 132 +++++------ .../hyperxmp-patches-tmp-ltx.sty | 2 +- .../l3backend-testphase-dvipdfmx.def | 38 +-- .../l3backend-testphase-dvips.def | 31 +-- .../l3backend-testphase-dvisvgm.def | 24 +- .../l3backend-testphase-luatex.def | 37 +-- .../l3backend-testphase-pdftex.def | 37 +-- .../l3backend-testphase-xetex.def | 38 +-- .../l3backend-testphase.lua | 1 - .../l3pdffield-testphase.sty | 2 +- .../pdfmanagement-testphase/pdflscape-ltx.sty | 2 +- .../pdfmanagement-firstaid.sty | 2 +- .../pdfmanagement-testphase.ltx | 120 ++++++++-- .../pdfmanagement-testphase.sty | 2 +- .../pdfmanagement-testphase/transparent-ltx.sty | 2 +- .../xcolor-patches-tmp-ltx.sty | 20 +- 57 files changed, 588 insertions(+), 486 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md index d22bc201ff8..e9ff54953da 100644 --- a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md @@ -4,6 +4,23 @@ first release 0.95a, 2021-02-23 will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), this project uses date-based 'snapshot' version identifiers. + + +## [2021-07-31] +### Added + - \IfPDFManagementActiveTF as copy of `\pdfmanagement_if_active:TF + - \PDFManagementAdd as copy of `\pdfmanagement_add:xxx` + - Support for name trees /AP and /JavaScript in Catalog/Names + - Support to add user file names to /EmbeddedFiles (beside the existing + way with automatically generated names) + - if xcolor is loaded the colors it predefines are now predefined also for l3color + +### Changed + - Implementation of the /EmbeddedFiles name tree, it is now more in line + with the other name trees. + - \Form no longer creates xform objects -- this affected spacing and produced + empty pages. The xform objects are now only created if fields are used. + ## [2021-07-21] ### Added - key `testphase` to \DeclareDocumentMetadata to load testphase packages like diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md index e521f810db0..fd565a6ea6e 100644 --- a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md +++ b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md @@ -1,6 +1,6 @@ # LaTeX PDF management testphase bundle -Version: 0.95g, 2021-07-21 +Version: 0.95h, 2021-07-31 This package is used during a test phase to load the new PDF management code of LaTeX. diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/hyperref-generic.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/hyperref-generic.pdf index de4dd81f098..1ec46ba75c1 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/hyperref-generic.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/hyperref-generic.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3backend-testphase.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3backend-testphase.pdf index 452b140f99e..9addd760c8f 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3backend-testphase.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3backend-testphase.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfannot.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfannot.pdf index 88bc60c05d8..d2924f459af 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfannot.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfannot.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfdict.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfdict.pdf index 8df8e77e732..b548db0e6aa 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfdict.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfdict.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-action.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-action.pdf index e1074881bc8..8ca1a9bf06e 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-action.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-action.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-checkbox.pdf index 722ab053e62..6733f3ea399 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-checkbox.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-checkbox.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-choice.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-choice.pdf index bb9bd4816ef..93a763cc9c1 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-choice.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-choice.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-pushbutton.pdf index 599400bd4eb..5397bcb5e31 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-pushbutton.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-pushbutton.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-radiobutton.pdf index 4543748a379..045af32e84c 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-radiobutton.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-radiobutton.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-textfield.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-textfield.pdf index 168a0729934..1bacb229204 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-textfield.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-textfield.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf index b9d740e9f97..c2716312389 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffile.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffile.pdf index faa18ada04a..37cad7dd548 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffile.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffile.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmanagement.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmanagement.pdf index f0174712175..5e1cb6535c7 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmanagement.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmanagement.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmeta.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmeta.pdf index 030b8f17d85..d85623dae64 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmeta.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmeta.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdftools.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdftools.pdf index c322f0e976d..ee977c642c2 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdftools.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdftools.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfxform.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfxform.pdf index 7e6db80d8ab..59336ced8e3 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfxform.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfxform.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/ltdocinit.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/ltdocinit.pdf index ce3ecd37bb0..4d155d2c4c9 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/ltdocinit.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/ltdocinit.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-firstaid.pdf index 0aeab401dd0..5206d4027b7 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-firstaid.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-firstaid.pdf differ diff --git a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-testphase.pdf index 4928dea1fc9..64f1d65c196 100644 Binary files a/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-testphase.pdf and b/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-testphase.pdf differ diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx index e3d84d6ec63..4e0296c641c 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx @@ -86,7 +86,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -906,9 +906,6 @@ %^^A %% \l_@@_para_tmpa_tl %^^A %% \l_@@_text_tmpa_str %^^A %% \g_@@_text_tmpa_str -%^^A %% \l_@@_CheckmarkYes_tl -%^^A %% \l_@@_CheckmarkOff_tl -%^^A %% \l_@@_RadioYes_tl %^^A %% \g_@@_bordercolormodel_tl % %^^A %% \l_@@_dest_pdfview_tl @@ -921,7 +918,7 @@ %<@@=hyp> % \end{macrocode} % \begin{macrocode} -\ProvidesFile{hgeneric-testphase.def}[2021-07-21 v0.95g % +\ProvidesFile{hgeneric-testphase.def}[2021-07-31 v0.95h % generic Hyperref driver for the LaTeX PDF management testphase bundle] \RequirePackage{etoolbox} %why? @@ -2482,7 +2479,7 @@ % \end{hypkey} % \begin{hypkey}{colorurl,colorlink,colorrun,colormenu,colorfile} % \begin{hypkey}{urlcolor,linkcolor,runcolor,menucolor,filecolor} -% \begin{hypkey}{allcolor} +% \begin{hypkey}{allcolors} % \begin{macrocode} \seq_map_inline:Nn \c_@@_annot_types_seq { @@ -4215,14 +4212,9 @@ \ExplSyntaxOff \ExplSyntaxOn -\tl_new:N \l_@@_CheckmarkYes_tl -\tl_set:Nn \l_@@_CheckmarkYes_tl { @@_xform_CheckMarkYes } -\tl_new:N \l_@@_CheckmarkOff_tl -\tl_set:Nn \l_@@_CheckmarkOff_tl { @@_xform_CheckMarkOff } \def\@Form[#1] { - \@ifundefined{textcolor}{\let\textcolor\@gobble}{} \kvsetkeys{Form}{#1} \pdf@ifdraftmode{} { @@ -4240,8 +4232,7 @@ } \seq_sort:Nn \l_@@_tmpa_seq { - \int_compare:nNnTF { \pdf@strcmp{##1}{##2} } > { 0 } - %\str_compare:nNnTF {##1} > {##2} + \str_compare:nNnTF {##1} > {##2} { \sort_return_swapped: } { \sort_return_same: } } @@ -4271,64 +4262,6 @@ \pdfmanagement_remove:nn {Catalog / AcroForm }{NeedAppearances} } } - \MakeFieldObject - { - \group_begin: - \fontfamily{pzd} - \fontencoding{U} - \fontseries{m} - \fontshape{n} - \selectfont - \char123 - \group_end: - } - {@@_xform_Ding} - \MakeFieldObject - { - \group_begin: - \fontfamily{pzd} - \fontencoding{U} - \fontseries{m} - \fontshape{n} - \selectfont - \phantom{\char123} - \group_end: - } - {@@_xform_DingOff} - \MakeFieldObject - { - \group_begin: - \fontfamily{pzd} - \fontencoding{U} - \fontseries{m} - \fontshape{n} - \selectfont - \char51 - \group_end: - } - {@@_xform_CheckMarkYes} - \MakeFieldObject - { - \group_begin: - \fontfamily{pzd} - \fontencoding{U} - \fontseries{m} - \fontshape{n} - \selectfont - \phantom{\char51} %perhaps xetex needs some small glyph .. - \group_end: - } - {@@_xform_CheckMarkOff} - \MakeFieldObject - { - \fbox{\textcolor{yellow}{\textsf{Submit}}} %color? - } - {@@_xform_Submit} - \MakeFieldObject - { - \fbox{\textcolor{yellow}{\textsf{SubmitP}}} %color? - } - {@@_xform_SubmitP} } \ExplSyntaxOff \let\@endForm\ltx@empty @@ -4468,8 +4401,7 @@ }% \endgroup } -\tl_new:N \l_@@_RadioYes_tl -\tl_set:Nn \l_@@_RadioYes_tl { @@_xform_Ding } + \def\@@Radio#1{% \Fld@listcount=0~% %\show\Fld@default @@ -4484,7 +4416,21 @@ \leavevmode \HyAnn@AbsPageLabel \Hy@escapeform\PDFForm@Radio - \pdfannot_box:nnnn + \pdfxform_if_exist:nF { @@_xform_Ding } + { + \pdfxform_new:nnn { @@_xform_Ding } {} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \char123 + \group_end: + } + } + \pdfannot_box:nnnx {\Fld@width} {\Fld@height} {0pt} %is this correct? @@ -4494,7 +4440,7 @@ << /N << - /\@currValue\c_space_tl \pdfxform_ref:o {@@_xform_Ding} + /\@currValue\c_space_tl \pdfxform_ref:n {@@_xform_Ding} %/Off \c_space_tl \pdfxform_ref:n {@@_xform_DingOff} %hm >> >> @@ -4582,6 +4528,18 @@ \HyAnn@AbsPageLabel \Hy@escapeform\PDFForm@Submit \hbox_set:Nn \l_tmpa_box { \MakeButtonField {#2}} + \pdfxform_if_exist:nF + { @@_xform_Submit } + { + \pdfxform_new:nnn { @@_xform_Submit }{} + { + \fbox{\color_select:n{yellow}\textsf{Submit}} + } + \pdfxform_new:nnn { @@_xform_SubmitP }{} + { + \fbox{\color_select:n{yellow}\textsf{SubmitP}} + } + } \pdfannot_box:nnnn {\box_wd:N\l_tmpa_box} {\box_ht:N\l_tmpa_box} @@ -4654,6 +4612,33 @@ \mode_leave_vertical: \HyAnn@AbsPageLabel \Hy@escapeform\PDFForm@Check + \pdfxform_if_exist:nF { @@_xform_CheckMarkYes } + { + \pdfxform_new:nnn + {@@_xform_CheckMarkYes}{} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \char51 + \group_end: + } + \pdfxform_new:nnn + {@@_xform_CheckMarkOff}{} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \phantom{\char51} %perhaps xetex needs some small glyph .. + \group_end: + } + } \pdfannot_box:nnnn {\Fld@width} {\Fld@height} @@ -4874,8 +4859,8 @@ << /N << - /Yes~\pdfxform_ref:o{\l_@@_CheckmarkYes_tl} - /Off~\pdfxform_ref:o{\l_@@_CheckmarkOff_tl} + /Yes~\pdfxform_ref:n{@@_xform_CheckMarkYes} + /Off~\pdfxform_ref:n{@@_xform_CheckMarkOff} >> >> /MK<< diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx index 7b4aad8fe6b..0102b1c5742 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx @@ -45,7 +45,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % @@ -56,27 +56,27 @@ % \begin{macrocode} %\ProvidesExplFile %<*dvipdfmx> - {l3backend-testphase-dvipdfmx.def}{2021-07-21}{} + {l3backend-testphase-dvipdfmx.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx} % %<*dvips> - {l3backend-testphase-dvips.def}{2021-07-21}{} + {l3backend-testphase-dvips.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvips} % %<*dvisvgm> - {l3backend-testphase-dvisvgm.def}{2021-07-21}{} + {l3backend-testphase-dvisvgm.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm} % %<*luatex> - {l3backend-testphase-luatex.def}{2021-07-21}{} + {l3backend-testphase-luatex.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)} % %<*pdftex> - {l3backend-testphase-pdftex.def}{2021-07-21}{} + {l3backend-testphase-pdftex.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)} % %<*xdvipdfmx> - {l3backend-testphase-xetex.def}{2021-07-21}{} + {l3backend-testphase-xetex.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX} % % \end{macrocode} @@ -1086,116 +1086,70 @@ % \subsubsection { Special case: the /Names/EmbeddedFiles dictionary } % Entries to /Names are handled differently, in part (/Desc) it is automatic, for % other special commands like \cs{pdfnames} must be used. For EmbeddedFiles -% we need some code to push the tree if files have been added. dvips wants code -% for every file and then creates the Name tree automatically. +% dvips wants code for every file and then creates the Name tree automatically. +% Other name trees are ignored. +% TODO: Currently the code for EmbeddedFiles is still a bit +% different but this should be merged, all name trees should be handled with the +% same code. % \begin{macrocode} % pdflatex %<*pdftex> -\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_gpush:n #1 %array content +\cs_new_protected:Npn \@@_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content { - \pdf_object_unnamed_write:nn {dict} {/Names [#1] } - \tex_pdfnames:D {/EmbeddedFiles~\pdf_object_ref_last:} + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \tex_pdfnames:D {/#1~\pdf_object_ref_last:} } % %<*luatex> -\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_gpush:n #1 %array content +\cs_new_protected:Npn \@@_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content { - \pdf_object_unnamed_write:nn {dict} {/Names [#1] } - \tex_pdfextension:D~names~{/EmbeddedFiles~\pdf_object_ref_last: } + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \tex_pdfextension:D~names~ {/#1~\pdf_object_ref_last:} } % %<*dvipdfmx|xdvipdfmx> -\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_gpush:n #1 %array content +\cs_new_protected:Npn \@@_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content { - \pdf_object_unnamed_write:nn {dict} { /Names [#1] } - %n or x? - \@@_backend:x {put~@names~<>} + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \@@_backend:x {put~@names~<>} } % %dvips: noop %<*dvips> -\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_gpush:n #1 {} +\cs_new_protected:Npn \@@_backend_Names_gpush:nn #1 #2 {} % %dvisvgm: noop %<*dvisvgm> -\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_gpush:n #1 {} +\cs_new_protected:Npn \@@_backend_Names_gpush:nn #1 #2 {} % - -% \end{macrocode} -% Names in the EmbeddedFiles name tree must sorted alphabetically, -% so we need commands to create this names. And we need a sequence to store -% the names and the objects. We use the prefix l3ef, and we assume that at -% most 9999 files will be used. -% \begin{variable}{\g_@@_backend_EmbeddedFiles_int} -% \end{variable} -% \begin{macro}{\@@_backend_EmbeddedFiles_name:} -% \begin{macrocode} -%<*drivers> -\int_new:N \g_@@_backend_EmbeddedFiles_int -\cs_new:Npn \@@_backend_EmbeddedFiles_name: - { - ( - l3ef - \int_compare:nNnT {\g_@@_backend_EmbeddedFiles_int} < {10} - {0} - \int_compare:nNnT {\g_@@_backend_EmbeddedFiles_int} < {100} - {0} - \int_compare:nNnT {\g_@@_backend_EmbeddedFiles_int} < {1000} - {0} - \int_use:N \g_@@_backend_EmbeddedFiles_int - ) - } -% -% \end{macrocode} -% \end{macro} -% \begin{variable}{\g_@@_backend_EmbeddedFiles_seq,\g_@@_backend_EmbeddedFiles_named_prop} -% The sequence will hold the content of the array that is pushed out at then -% end (not with dvips), the prop holds the obj names-names relation. -% \end{variable} -% \begin{macrocode} -%<*drivers> -\seq_new:N \g_@@_backend_EmbeddedFiles_seq -\prop_new:N \g_@@_backend_EmbeddedFiles_named_prop -% % \end{macrocode} -% \begin{macro}{\@@_backend_NamesEmbeddedFiles_add:n} -% This command saves an object reference of a filespec dictionary in the -% EmbeddedFiles name tree. We define a prop to store the relation between -% object name and name in the name tree. +% EmbeddedFiles is a bit special. +% For once we need backend commands for dvips. +% But we want also an option to create the name on the fly. +% \begin{macro}{\@@_backend_NamesEmbeddedFiles_add:nn} +% dvips need special backend code to create the name tree. +% With the other engines it does nothing. % \begin{macrocode} %<*pdftex|luatex|dvipdfmx|xdvipdfmx> -\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_add:n #1 - %#1 object ref - { - \int_gincr:N \g_@@_backend_EmbeddedFiles_int - \prop_gput:Nnx \g_@@_backend_EmbeddedFiles_named_prop - { #1 } - { \@@_backend_EmbeddedFiles_name: } - \seq_gput_right:Nx \g_@@_backend_EmbeddedFiles_seq - { \@@_backend_EmbeddedFiles_name: \c_space_tl #1 } - } - +\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_add:nn #1 #2 {} % %<*dvips> -\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_add:n #1 +\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_add:nn #1 #2 { - \int_gincr:N \g_@@_backend_EmbeddedFiles_int - \prop_gput:Nnx \g_@@_backend_EmbeddedFiles_named_prop - { #1 } - { \@@_backend_EmbeddedFiles_name: } \@@_backend_pdfmark:x { - /Name~\@@_backend_EmbeddedFiles_name:~ - /FS~#1~ + /Name~#1~ + /FS~#2~ /EMBED } } % %<*dvisvgm> %no op. Or is there any sensible use for it? -\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_add:n #1 +\cs_new_protected:Npn \@@_backend_NamesEmbeddedFiles_add:nn #1 #2 {} + % % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx index 4f4778699a9..8bd41b49c8d 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx @@ -52,7 +52,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -424,7 +424,7 @@ % \begin{macrocode} %<@@=pdfannot> %<*header> -\ProvidesExplPackage{l3pdfannot}{2021-07-21}{0.95g} +\ProvidesExplPackage{l3pdfannot}{2021-07-31}{0.95h} {PDF-annotations} \RequirePackage{l3pdfdict} % diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx index ef283dd6640..e80d6097cbb 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx @@ -53,7 +53,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -212,7 +212,7 @@ % \begin{macrocode} %<@@=pdfdict> %<*header> -\ProvidesExplPackage{l3pdfdict}{2021-07-21}{0.95g} +\ProvidesExplPackage{l3pdfdict}{2021-07-31}{0.95h} {Tools for PDF dictionaries (LaTeX PDF management testphase bundle)} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-action.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-action.dtx index 146214c7f15..77bf53bd856 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-action.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-action.dtx @@ -53,7 +53,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-checkbox.dtx index 32f2f76ffe3..a1386fcc086 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-checkbox.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-checkbox.dtx @@ -68,7 +68,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-choice.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-choice.dtx index f247ef51425..de162d3ab7f 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-choice.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-choice.dtx @@ -53,7 +53,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-pushbutton.dtx index 3d6ee2c6c2f..02889ec5e3e 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-pushbutton.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-pushbutton.dtx @@ -59,7 +59,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-radiobutton.dtx index 3a451bceadc..b25b7ead14d 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-radiobutton.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-radiobutton.dtx @@ -87,7 +87,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-textfield.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-textfield.dtx index 81330a65201..1289d54de9e 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-textfield.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-textfield.dtx @@ -53,7 +53,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx index 36e4415eef0..5a1d17809ec 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx @@ -73,7 +73,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -970,7 +970,7 @@ %<*package> %<@@=pdffield> \NeedsTeXFormat{LaTeX2e} -\ProvidesExplPackage{l3pdffield-testphase}{2021-07-21}{0.95g}% +\ProvidesExplPackage{l3pdffield-testphase}{2021-07-31}{0.95h}% {form fields} % \end{macrocode} % \subsection{hyperref specific command} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx index 0fadfbe46f6..56e927b41df 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx @@ -53,7 +53,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -400,7 +400,7 @@ % % \begin{macrocode} %<*header> -\ProvidesExplPackage{l3pdffile}{2021-07-21}{0.95g} +\ProvidesExplPackage{l3pdffile}{2021-07-31}{0.95h} {embedding and referencing files in PDF---LaTeX PDF management testphase bundle} \RequirePackage{l3pdftools} %temporarly!! % diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx index 0390980da5b..c3de57b74c5 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -137,9 +137,14 @@ % {\pdfmanagement_if_active:} % This conditional tests if the resource management code is active. % \end{function} -% -% \begin{function}[added = 2020-04-06] -% {\pdfmanagement_add:nnn,\pdfmanagement_add:nnx,\pdfmanagement_add:nxx} +% \begin{function}[added=2021-07-23] +% {\IfPDFManagementActiveTF} +% This is a LaTeX2e version of the conditional +% \end{function} + +% \begin{function}[added = 2020-04-06,updated=2021-07-23] +% {\pdfmanagement_add:nnn,\pdfmanagement_add:nnx,\pdfmanagement_add:nxx,\pdfmanagement_add:xxx, +% \PDFManagementAdd} % \begin{syntax} % \cs{pdfmanagement_add:nnn} \Arg{resource path} \Arg{name} \Arg{value} % \end{syntax} @@ -152,7 +157,8 @@ % keys used in PDF dictionaries (see the l3pdfdict module) the name is escaped % with \cs{str_convert_pdfname:n} when stored. % \Arg{value} should be a valid PDF value for this Name in the -% target dictionary. +% target dictionary. |\PDFManagementAdd| is a copy of |\pdfmanagement_add:xxx| +% and so expands all its arguments. % % % The code works with all major engines but not necessarily @@ -166,6 +172,10 @@ % backends. Some engines have to use labels and the aux-file to setup % the dictionaries and so need at least two compilations to put everything % in place. +% \item dvips doesn't support everything. It is for example not possible +% to add manually or through side effects +% a name tree like /AP or /JavaScript, pdfmark doesn't provide a handler +% here---at least I didn't find anything suitable. % \end{itemize} % \end{function} % @@ -549,6 +559,61 @@ % attach the file to the file panel. % \end{tabularx} % +% \paragraph{Catalog entries for name trees} +% +% \emph{Not supported in the dvips backend, pdfmark doesn't have an interface here}. +% +% In various places the PDF format allows to reference objects by name instead +% of by object reference. The relationship between a name and the object reference +% are store in so-called \emph{name trees}, which are stored in the +% Catalog/Names dictionary. The |/Dests| and the |/EmbeddedFiles| name trees are +% handled implicitly if destinations or files are added. Names to the other +% name trees can be added with |\pdfmanagement_add:nnn|, e.g. to add an value to +% the AP names (for appearance streams) use +% +% \begin{verbatim} +% \pdfmanagement_add:nnx { Catalog / Names / AP } {myAPname} {\pdf_object_ref_last:} +% \end{verbatim} +% +% Remarks: +% \begin{itemize} +% \item The name |myAPname| is processed through |\pdf_string_from_unicode:nnN{utf8/string}| +% and parentheses are added automatically. Ensure that the use of the name +% handles it in the same way. +% \item It is currently not possible to test if a name has already been used +% by another package or previous code, +% so use names where you can be confident that they are unique. +% (It would be possible to split up the first part and test, but it would slow +% down the compilation and I'm not sure if it is worth the trouble) +% \item The value is not preprocessed, it is up-to-you to ensure that it does the +% right thing. +% \item Currently the structure of the name tree is flat, it doesn't use +% Kids. But this can be changed if the need arise. +% \end{itemize} +% +% The following name trees can be filled with this method. Currently only the +% first three are activated. For the first, |EmbeddedFiles| there are two methods +% to add a value:\\ +% |\pdfmanagement_add:nnn{Catalog/Names/EmbeddedFiles}{name}{reference}| +% and +% |\pdfmanagement_add:nnn{Catalog/Names}{EmbeddedFiles}{reference}|. +% This is intended, the second methods creates a name on the fly (with the prefix l3ef) +% +% \medskip +% \noindent +% \begin{tabularx}{\linewidth}{ll>{\raggedright\arraybackslash}X} +% Catalog/Names/EmbeddedFiles & A name tree mapping name strings to file +% specifications for embedded file streams. The value should be a reference to a filespec +% dictionary\\ +% Catalog/Names/AP & A name tree mapping name strings to annotation appearance streams\\ +% Catalog/Names/JavaScript & A name tree mapping name strings to documentlevel ECMAScript actions\\ +% (inactive) Catalog/Names/Pages & A name tree mapping name strings to visible pages for use in interactive forms\\ +% (inactive) Catalog/Names/Templates & A name tree mapping name strings to invisible pages for use in interactive forms\\ +% (inactive) Catalog/Names/IDS & A name tree mapping digital identifiers to Web.Capture content sets\\ +% (inactive) Catalog/Names/URLS & A name tree mapping name strings to documentlevel ECMAScript actions\\ +% (inactive) Catalog/Names/Renditions & A name tree mapping name strings (which shall have Unicode encoding) to rendition objects +% (it is not quite clear yet, what unicode encoding means here. Perhaps this string will need special handling)\\ +% \end{tabularx} % \end{documentation} % % \begin{implementation} @@ -557,7 +622,7 @@ %<@@=pdfmanagement> %<*header> % -\ProvidesExplPackage{l3pdfmanagement}{2021-07-21}{0.95g} +\ProvidesExplPackage{l3pdfmanagement}{2021-07-31}{0.95h} {Management of core PDF dictionaries (LaTeX PDF management testphase bundle)} % % \end{macrocode} @@ -576,6 +641,9 @@ \msg_new:nnn { pdfmanagement } { no-show } { It~is~not~possible~to~show~the~content~of~'#1'.} +\msg_new:nnn { pdfmanagement } { name-exist } + { The~name~'#1'~has~already~been~used~for~name~tree~'#2'.} + \msg_new:nnn { pdfmanagement } { show-dict } { The~PDF~resource~'#1'~ @@ -593,6 +661,16 @@ command~'#1'~ignored. } % \end{macrocode} +% +% \begin{variable}{\l_@@_tmpa_tl,\l_@@_tmpb_tl,\l_@@_tmpa_seq} +% Some temp variables +% \begin{macrocode} +\tl_new:N \l_@@_tmpa_tl +\tl_new:N \l_@@_tmpb_tl +\seq_new:N \l_@@_tmpa_seq +% \end{macrocode} +% \end{variable} + % \begin{variable}{\g_@@_active_bool} % This boolean will control the activation of the management code. % It is used in the hooks, and in some backend files. @@ -612,6 +690,7 @@ \prg_set_eq_conditional:NNn \pdfmanagement_if_active: \@@_if_active: { p , T , F , TF } +\cs_set_eq:NN \IfPDFManagementActiveTF\pdfmanagement_if_active:TF % \end{macrocode} % We use a hook, to collect value added before the backend is ready. % \begin{macrocode} @@ -639,7 +718,8 @@ } } -\cs_generate_variant:Nn \pdfmanagement_add:nnn {nnx,nxx} +\cs_generate_variant:Nn \pdfmanagement_add:nnn {nnx,nxx,xxx} +\cs_set_eq:NN \PDFManagementAdd \pdfmanagement_add:xxx % \end{macrocode} % \subsection{Hooks -- shipout and end of run code} % Code is executed in three places: At shipout of every page, @@ -1006,6 +1086,7 @@ % \end{variable} % \begin{macro}{ \@@_catalog_XX_gput:n } % Various commands to handle subentries and special cases. +% At first we set up a few lists of the various types. % \begin{macrocode} \pdfdict_new:n { g__pdf_Core/Catalog} @@ -1059,8 +1140,24 @@ AcroForm/CO } - - +% \end{macrocode} +% Names trees in Catalog/Names. We prepare the full list +% but activate only AP and JavaScript for now. +% /EmbeddedFiles has special code and so is not in the name list. +% \begin{macrocode} +\clist_const:Nn \c_@@_Catalog_nametree_clist + { + AP, + JavaScript, +% Pages, +% Templates, +% IDS, +% URLS, +% Renditions + } +% \end{macrocode} +% now we create the handler. The entries in the seq-list store in a seq +% \begin{macrocode} \clist_map_inline:Nn \c_@@_Catalog_seq_clist { \seq_new:c { g_@@_/Catalog/#1_seq } % new name later @@ -1070,6 +1167,10 @@ } } +% \end{macrocode} +% OCProperties/D is special: it handles a default. This is done by adding to +% the left of the seq +% \begin{macrocode} \cs_new_protected:cpn { @@_handler/Catalog/OCProperties/D_gput:n } #1 { \seq_gput_left:cn @@ -1077,6 +1178,58 @@ { #1 } } % \end{macrocode} +% The name tree keys store in a property and check for duplicates. This is done +% with an auxiliary. +% \begin{macrocode} +\cs_new_protected:Npn \@@_nametree_add_aux:nnn #1 #2 #3 + %#1 name tree, #2 sanitized name #3 value + { + \prop_get:coNTF + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { #2 } + \l_@@_tmpb_tl + { + \msg_error:nnnn{pdfmanagement}{name-exist}{#2}{#1} + } + { + \prop_gput:con + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { #2 } + { #3 } + } + } +% \end{macrocode} +% This is the standard handler for most names trees: +% \begin{macrocode} +\clist_map_inline:Nn \c_@@_Catalog_nametree_clist + { + \pdfdict_new:n { g__pdf_Core/Catalog/Names/#1} + \cs_new_protected:cpn { @@_handler/Catalog/Names/#1/?_gput:nn } ##1 ##2 + { + \pdf_string_from_unicode:nnN {utf8/string}{##1}\l_@@_tmpa_tl + \exp_args:Nno + \@@_nametree_add_aux:nnn {#1}{\l_@@_tmpa_tl}{##2} + } + } +% \end{macrocode} +% EmbeddedFiles is a bit special. For once there is special backend code +% needed by dvips. Beside this we also want the option to create the file name +% on the fly, so they are actually two access methods: +% |\pdfmanagement_add:nnn{Catalog/Names/EmbeddedFiles}{name}{reference}| +% and +% |\pdfmanagement_add:nnn{Catalog/Names}{EmbeddedFiles}{reference}| +% \begin{macrocode} +\pdfdict_new:n { g__pdf_Core/Catalog/Names/EmbeddedFiles} +\cs_new_protected:cpn { @@_handler/Catalog/Names/EmbeddedFiles/?_gput:nn } #1 #2 + { + \pdf_string_from_unicode:nnN {utf8/string}{#1}\l_@@_tmpa_tl + \exp_args:Nno + \@@_nametree_add_aux:nnn + {EmbeddedFiles}{\l_@@_tmpa_tl}{#2} + \exp_args:No + \__pdf_backend_NamesEmbeddedFiles_add:nn {\l_@@_tmpa_tl}{#2} + } +% \end{macrocode} % \end{macro} % % \paragraph {Building the catalog: Push order} % \begin{macro}{\@@_Catalog_gpush:} @@ -1099,7 +1252,11 @@ { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog} } \__pdf_backend_catalog_gput:nn % output names tree: - \use:c { @@_/Catalog/Names/EmbeddedFiles_gpush: } + \use:c{ @@_/Catalog/Names_gpush:n } {EmbeddedFiles} + \clist_map_inline:Nn \c_@@_Catalog_nametree_clist + { + \use:c{ @@_/Catalog/Names_gpush:n } {##1} + } } % \end{macrocode} % \end{macro} @@ -1283,12 +1440,12 @@ { 0 } { \__pdf_backend_object_new:nn { @@/Catalog/OCProperties } { dict } - \seq_gpop_left:cN { g_@@_/Catalog/OCProperties/Configs_seq} \l_tmpa_tl + \seq_gpop_left:cN { g_@@_/Catalog/OCProperties/Configs_seq} \l_@@_tmpa_tl \exp_args:Nnx \__pdf_backend_object_write:nn {@@/Catalog/OCProperties} { /OCGs~[ \seq_use:cn { g_@@_/Catalog/OCProperties/OCGs_seq } {~} ] - /D~\l_tmpa_tl~ + /D~\l_@@_tmpa_tl~ \seq_if_empty:cF { g_@@_/Catalog/OCProperties/Configs_seq } { /Configs~ @@ -1382,6 +1539,30 @@ % \begin{NOTE}{UF} % TODO access function for the name in the name tree % \end{NOTE} +% \begin{variable}{\g_@@_EmbeddedFiles_int} +% We want to create names for files on the fly. For this we use an int. +% \begin{macrocode} +\int_new:N \g_@@_EmbeddedFiles_int +% \end{macrocode} +% \end{variable} +% \begin{macro}{\@@_EmbeddedFiles_name:} +% We use the prefix l3ef, and pad numbers below 9999. +% \begin{macrocode} +\cs_new:Npn \@@_EmbeddedFiles_name: + { + ( + l3ef + \int_compare:nNnT {\g_@@_EmbeddedFiles_int} < {10} + {0} + \int_compare:nNnT {\g_@@_EmbeddedFiles_int} < {100} + {0} + \int_compare:nNnT {\g_@@_EmbeddedFiles_int} < {1000} + {0} + \int_use:N \g_@@_EmbeddedFiles_int + ) + } +% \end{macrocode} +% \end{macro} % \begin{macro}{ Handler} % EmbeddedFiles is an array and needs a special handler to add values. % \begin{macrocode} @@ -1389,25 +1570,44 @@ \cs_new_protected:cpn { @@_handler/Catalog/Names/EmbeddedFiles_gput:n } #1 { - \__pdf_backend_NamesEmbeddedFiles_add:n { #1 } + \int_gincr:N \g_@@_EmbeddedFiles_int + \exp_args:Nnx + \prop_gput:cnn + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/EmbeddedFiles }} + { \@@_EmbeddedFiles_name: } + { #1 } + \exp_args:Nx + \__pdf_backend_NamesEmbeddedFiles_add:nn {\@@_EmbeddedFiles_name:} { #1 } } % \end{macrocode} % \end{macro} -% The entry should only be added if there are actually embedded files. -% This can be tested by checking the names_seq -% \begin{macro}{\@@_/Catalog/Names/EmbeddedFiles_gpush:} +% This pushes out the other names trees (but not with dvips). +% TODO: currently it simply write in the root of the name tree. +% That is the fastest. +% If they get longer we perhaps need to build something with Kids and Limits. +% \begin{macro}{\@@_/Catalog/Names/?_gpush:} % \begin{macrocode} -% -\cs_new_protected:cpn { @@_/Catalog/Names/EmbeddedFiles_gpush: } - { - \seq_if_empty:NF \g__pdf_backend_EmbeddedFiles_seq - { - \exp_args:Nx \__pdf_backend_NamesEmbeddedFiles_gpush:n - { - \seq_use:Nn \g__pdf_backend_EmbeddedFiles_seq {~} - } - } - } +\cs_new_protected:cpn { @@_/Catalog/Names_gpush:n } #1 %#1 name of name tree + { + \pdfdict_if_empty:nF { g__pdf_Core/Catalog/Names/#1 } + { + \seq_clear:N \l_@@_tmpa_seq + \prop_map_inline:cn + {\__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { \seq_put_right:Nn \l_@@_tmpa_seq {##1~##2}} + \seq_sort:Nn \l_@@_tmpa_seq + { + \str_compare:nNnTF {##1} > {##2} + { \sort_return_swapped: } + { \sort_return_same: } + } + \exp_args:Nnx \__pdf_backend_Names_gpush:nn + {#1} + { + \seq_use:Nn \l_@@_tmpa_seq {~} + } + } + } % \end{macrocode} % \end{macro} % \begin{macro}{@@_handler/Catalog/?_show:} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx index f590a2b8973..3ca574f02ad 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx @@ -53,7 +53,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -343,7 +343,7 @@ % \begin{macrocode} %<@@=pdfmeta> %<*header> -\ProvidesExplPackage{l3pdfmeta}{2021-07-21}{0.95g} +\ProvidesExplPackage{l3pdfmeta}{2021-07-31}{0.95h} {PDF-Standards---LaTeX PDF management testphase bundle} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx index 2df7203e0f8..efed778e785 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx @@ -53,7 +53,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -215,7 +215,7 @@ % % \begin{macrocode} %<*header> -\ProvidesExplPackage{l3pdftools}{2021-07-21}{0.95g} +\ProvidesExplPackage{l3pdftools}{2021-07-31}{0.95h} {candidate commands for l3pdf---LaTeX PDF management testphase bundle} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx index eef4ae7ee00..0591756bf0f 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx @@ -52,7 +52,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -136,7 +136,7 @@ % \begin{macrocode} %<@@=pdf> %<*header> -\ProvidesExplPackage{l3pdfxform}{2021-07-21}{0.95g} +\ProvidesExplPackage{l3pdfxform}{2021-07-31}{0.95h} {command to create xforms (beta)---LaTeX PDF management testphase bundle} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx index 0679203098f..4e7eecc1abf 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -182,7 +182,7 @@ % \begin{macrocode} %<@@=pdfmanagement> %<*header> -\ProvidesExplPackage{ltdocinit}{2021-07-21}{0.95g} +\ProvidesExplPackage{ltdocinit}{2021-07-31}{0.95h} {Initialize document metadata} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx index 364304de2ca..1295c4b6bf3 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -67,7 +67,7 @@ % |firstaidoff={name1,name2,...}|. % \begin{macrocode} %<*package> -\ProvidesExplPackage{pdfmanagement-firstaid}{2021-07-21}{0.95g} +\ProvidesExplPackage{pdfmanagement-firstaid}{2021-07-31}{0.95h} {LaTeX PDF management testphase bundle / firstaid-patches} %<@@=pdfmanagement> diff --git a/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx index 7d0b20ee023..37dc11f65b1 100644 --- a/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx +++ b/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Version 0.95g, released 2021-07-21} +% \date{Version 0.95h, released 2021-07-31} % % \maketitle % \begin{documentation} @@ -384,7 +384,7 @@ % \begin{macrocode} %<@@=pdf> %<*package> -\ProvidesExplPackage{pdfmanagement-testphase}{2021-07-21}{0.95g} +\ProvidesExplPackage{pdfmanagement-testphase}{2021-07-31}{0.95h} {LaTeX PDF management testphase bundle} \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{2020-10-01}{}{ @@ -411,7 +411,7 @@ % to allow to set it in the document. % \begin{macrocode} %<*header> -\ProvidesExplFile{pdfmanagement-testphase.ltx}{2021-07-21}{0.95g} +\ProvidesExplFile{pdfmanagement-testphase.ltx}{2021-07-31}{0.95h} {PDF~management~code~(testphase)} % %<*package> diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty index b7765e97ed6..fca7c1c3ac5 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty @@ -22,7 +22,7 @@ %% This file has the LPPL maintenance status "maintained". %% \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{color-ltx}[2021-07-21 v0.95g +\ProvidesPackage{color-ltx}[2021-07-31 v0.95h Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2021/03/07 v1.2e) (DPC)] \edef\Gin@codes{% \catcode`\noexpand\^^A\the\catcode`\^^A\relax diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def index 4003c62cc7d..fd3ad3b4cb0 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: hyperref-generic.dtx -\ProvidesFile{hgeneric-testphase.def}[2021-07-21 v0.95g % +\ProvidesFile{hgeneric-testphase.def}[2021-07-31 v0.95h % generic Hyperref driver for the LaTeX PDF management testphase bundle] \RequirePackage{etoolbox} %why? @@ -2464,14 +2464,9 @@ \ExplSyntaxOff \ExplSyntaxOn -\tl_new:N \l__hyp_CheckmarkYes_tl -\tl_set:Nn \l__hyp_CheckmarkYes_tl { __hyp_xform_CheckMarkYes } -\tl_new:N \l__hyp_CheckmarkOff_tl -\tl_set:Nn \l__hyp_CheckmarkOff_tl { __hyp_xform_CheckMarkOff } \def\@Form[#1] { - \@ifundefined{textcolor}{\let\textcolor\@gobble}{} \kvsetkeys{Form}{#1} \pdf@ifdraftmode{} { @@ -2489,8 +2484,7 @@ } \seq_sort:Nn \l__hyp_tmpa_seq { - \int_compare:nNnTF { \pdf@strcmp{##1}{##2} } > { 0 } - %\str_compare:nNnTF {##1} > {##2} + \str_compare:nNnTF {##1} > {##2} { \sort_return_swapped: } { \sort_return_same: } } @@ -2520,64 +2514,6 @@ \pdfmanagement_remove:nn {Catalog / AcroForm }{NeedAppearances} } } - \MakeFieldObject - { - \group_begin: - \fontfamily{pzd} - \fontencoding{U} - \fontseries{m} - \fontshape{n} - \selectfont - \char123 - \group_end: - } - {__hyp_xform_Ding} - \MakeFieldObject - { - \group_begin: - \fontfamily{pzd} - \fontencoding{U} - \fontseries{m} - \fontshape{n} - \selectfont - \phantom{\char123} - \group_end: - } - {__hyp_xform_DingOff} - \MakeFieldObject - { - \group_begin: - \fontfamily{pzd} - \fontencoding{U} - \fontseries{m} - \fontshape{n} - \selectfont - \char51 - \group_end: - } - {__hyp_xform_CheckMarkYes} - \MakeFieldObject - { - \group_begin: - \fontfamily{pzd} - \fontencoding{U} - \fontseries{m} - \fontshape{n} - \selectfont - \phantom{\char51} %perhaps xetex needs some small glyph .. - \group_end: - } - {__hyp_xform_CheckMarkOff} - \MakeFieldObject - { - \fbox{\textcolor{yellow}{\textsf{Submit}}} %color? - } - {__hyp_xform_Submit} - \MakeFieldObject - { - \fbox{\textcolor{yellow}{\textsf{SubmitP}}} %color? - } - {__hyp_xform_SubmitP} } \ExplSyntaxOff \let\@endForm\ltx@empty @@ -2717,8 +2653,7 @@ }% \endgroup } -\tl_new:N \l__hyp_RadioYes_tl -\tl_set:Nn \l__hyp_RadioYes_tl { __hyp_xform_Ding } + \def\__hypRadio#1{% \Fld@listcount=0~% %\show\Fld@default @@ -2733,7 +2668,21 @@ \leavevmode \HyAnn@AbsPageLabel \Hy@escapeform\PDFForm@Radio - \pdfannot_box:nnnn + \pdfxform_if_exist:nF { __hyp_xform_Ding } + { + \pdfxform_new:nnn { __hyp_xform_Ding } {} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \char123 + \group_end: + } + } + \pdfannot_box:nnnx {\Fld@width} {\Fld@height} {0pt} %is this correct? @@ -2743,7 +2692,7 @@ << /N << - /\@currValue\c_space_tl \pdfxform_ref:o {__hyp_xform_Ding} + /\@currValue\c_space_tl \pdfxform_ref:n {__hyp_xform_Ding} %/Off \c_space_tl \pdfxform_ref:n {__hyp_xform_DingOff} %hm >> >> @@ -2830,6 +2779,18 @@ \HyAnn@AbsPageLabel \Hy@escapeform\PDFForm@Submit \hbox_set:Nn \l_tmpa_box { \MakeButtonField {#2}} + \pdfxform_if_exist:nF + { __hyp_xform_Submit } + { + \pdfxform_new:nnn { __hyp_xform_Submit }{} + { + \fbox{\color_select:n{yellow}\textsf{Submit}} + } + \pdfxform_new:nnn { __hyp_xform_SubmitP }{} + { + \fbox{\color_select:n{yellow}\textsf{SubmitP}} + } + } \pdfannot_box:nnnn {\box_wd:N\l_tmpa_box} {\box_ht:N\l_tmpa_box} @@ -2902,6 +2863,33 @@ \mode_leave_vertical: \HyAnn@AbsPageLabel \Hy@escapeform\PDFForm@Check + \pdfxform_if_exist:nF { __hyp_xform_CheckMarkYes } + { + \pdfxform_new:nnn + {__hyp_xform_CheckMarkYes}{} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \char51 + \group_end: + } + \pdfxform_new:nnn + {__hyp_xform_CheckMarkOff}{} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \phantom{\char51} %perhaps xetex needs some small glyph .. + \group_end: + } + } \pdfannot_box:nnnn {\Fld@width} {\Fld@height} @@ -3121,8 +3109,8 @@ << /N << - /Yes~\pdfxform_ref:o{\l__hyp_CheckmarkYes_tl} - /Off~\pdfxform_ref:o{\l__hyp_CheckmarkOff_tl} + /Yes~\pdfxform_ref:n{__hyp_xform_CheckMarkYes} + /Off~\pdfxform_ref:n{__hyp_xform_CheckMarkOff} >> >> /MK<< diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty index 96e9d086a67..f948928f94e 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty @@ -19,7 +19,7 @@ % % for those people who are interested. \NeedsTeXFormat{LaTeX2e}[2020/10/01] -\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2021-07-21}{0.95g} +\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2021-07-31}{0.95h} {Store hyperref metadata in XMP format / temporay patches to test pdfresource management ... UF} \cs_if_exist:NT \pdfmanagement_add:nnn diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def index 00c28edb532..89c47d1a1d4 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def @@ -20,7 +20,7 @@ %% %% File: l3backend-testphase.dtx \ProvidesExplFile - {l3backend-testphase-dvipdfmx.def}{2021-07-21}{} + {l3backend-testphase-dvipdfmx.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx} \RequirePackage{l3ref-tmp} \cs_generate_variant:Nn \ref_label:nn {en} @@ -224,41 +224,13 @@ } } } -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_gpush:n #1 %array content +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content { - \pdf_object_unnamed_write:nn {dict} { /Names [#1] } - %n or x? - \__pdf_backend:x {put~@names~<>} + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \__pdf_backend:x {put~@names~<>} } - -\int_new:N \g__pdf_backend_EmbeddedFiles_int -\cs_new:Npn \__pdf_backend_EmbeddedFiles_name: - { - ( - l3ef - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {10} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {100} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {1000} - {0} - \int_use:N \g__pdf_backend_EmbeddedFiles_int - ) - } -\seq_new:N \g__pdf_backend_EmbeddedFiles_seq -\prop_new:N \g__pdf_backend_EmbeddedFiles_named_prop -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:n #1 - %#1 object ref - { - \int_gincr:N \g__pdf_backend_EmbeddedFiles_int - \prop_gput:Nnx \g__pdf_backend_EmbeddedFiles_named_prop - { #1 } - { \__pdf_backend_EmbeddedFiles_name: } - \seq_gput_right:Nx \g__pdf_backend_EmbeddedFiles_seq - { \__pdf_backend_EmbeddedFiles_name: \c_space_tl #1 } - } - +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} % it needs a bit testing if it really works to set the box to 0 before the special ... % does it disturb viewing the xobject? % what happens with the resources (bdc)? (should work as they are specials too) diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def index c0950a361a9..66229a56112 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def @@ -20,7 +20,7 @@ %% %% File: l3backend-testphase.dtx \ProvidesExplFile - {l3backend-testphase-dvips.def}{2021-07-21}{} + {l3backend-testphase-dvips.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvips} \RequirePackage{l3ref-tmp} \cs_generate_variant:Nn \ref_label:nn {en} @@ -146,34 +146,13 @@ -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_gpush:n #1 {} - -\int_new:N \g__pdf_backend_EmbeddedFiles_int -\cs_new:Npn \__pdf_backend_EmbeddedFiles_name: - { - ( - l3ef - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {10} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {100} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {1000} - {0} - \int_use:N \g__pdf_backend_EmbeddedFiles_int - ) - } -\seq_new:N \g__pdf_backend_EmbeddedFiles_seq -\prop_new:N \g__pdf_backend_EmbeddedFiles_named_prop -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:n #1 +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 {} +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 { - \int_gincr:N \g__pdf_backend_EmbeddedFiles_int - \prop_gput:Nnx \g__pdf_backend_EmbeddedFiles_named_prop - { #1 } - { \__pdf_backend_EmbeddedFiles_name: } \__pdf_backend_pdfmark:x { - /Name~\__pdf_backend_EmbeddedFiles_name:~ - /FS~#1~ + /Name~#1~ + /FS~#2~ /EMBED } } diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def index 34ac07b1393..a5efc0b2cfe 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def @@ -20,7 +20,7 @@ %% %% File: l3backend-testphase.dtx \ProvidesExplFile - {l3backend-testphase-dvisvgm.def}{2021-07-21}{} + {l3backend-testphase-dvisvgm.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm} \RequirePackage{l3ref-tmp} \cs_generate_variant:Nn \ref_label:nn {en} @@ -112,26 +112,10 @@ -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_gpush:n #1 {} - -\int_new:N \g__pdf_backend_EmbeddedFiles_int -\cs_new:Npn \__pdf_backend_EmbeddedFiles_name: - { - ( - l3ef - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {10} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {100} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {1000} - {0} - \int_use:N \g__pdf_backend_EmbeddedFiles_int - ) - } -\seq_new:N \g__pdf_backend_EmbeddedFiles_seq -\prop_new:N \g__pdf_backend_EmbeddedFiles_named_prop -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:n #1 +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 {} +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} + \cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4 {} \cs_new_protected:Npn \__pdf_backend_xform_use:n #1 {} \cs_new:Npn \__pdf_backend_xform_ref:n {} diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def index fa60269d932..4dfc258997a 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def @@ -20,7 +20,7 @@ %% %% File: l3backend-testphase.dtx \ProvidesExplFile - {l3backend-testphase-luatex.def}{2021-07-21}{} + {l3backend-testphase-luatex.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)} \RequirePackage{l3ref-tmp} \cs_generate_variant:Nn \ref_label:nn {en} @@ -262,40 +262,13 @@ } \cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 {} -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_gpush:n #1 %array content +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content { - \pdf_object_unnamed_write:nn {dict} {/Names [#1] } - \tex_pdfextension:D~names~{/EmbeddedFiles~\pdf_object_ref_last: } + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \tex_pdfextension:D~names~ {/#1~\pdf_object_ref_last:} } - -\int_new:N \g__pdf_backend_EmbeddedFiles_int -\cs_new:Npn \__pdf_backend_EmbeddedFiles_name: - { - ( - l3ef - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {10} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {100} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {1000} - {0} - \int_use:N \g__pdf_backend_EmbeddedFiles_int - ) - } -\seq_new:N \g__pdf_backend_EmbeddedFiles_seq -\prop_new:N \g__pdf_backend_EmbeddedFiles_named_prop -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:n #1 - %#1 object ref - { - \int_gincr:N \g__pdf_backend_EmbeddedFiles_int - \prop_gput:Nnx \g__pdf_backend_EmbeddedFiles_named_prop - { #1 } - { \__pdf_backend_EmbeddedFiles_name: } - \seq_gput_right:Nx \g__pdf_backend_EmbeddedFiles_seq - { \__pdf_backend_EmbeddedFiles_name: \c_space_tl #1 } - } - +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} \cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4 { \hbox_set:Nn \l__pdf_backend_tmpa_box diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def index d8563623fe5..ecf670257fe 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def @@ -20,7 +20,7 @@ %% %% File: l3backend-testphase.dtx \ProvidesExplFile - {l3backend-testphase-pdftex.def}{2021-07-21}{} + {l3backend-testphase-pdftex.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)} \RequirePackage{l3ref-tmp} \cs_generate_variant:Nn \ref_label:nn {en} @@ -280,40 +280,13 @@ } } -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_gpush:n #1 %array content +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content { - \pdf_object_unnamed_write:nn {dict} {/Names [#1] } - \tex_pdfnames:D {/EmbeddedFiles~\pdf_object_ref_last:} + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \tex_pdfnames:D {/#1~\pdf_object_ref_last:} } - -\int_new:N \g__pdf_backend_EmbeddedFiles_int -\cs_new:Npn \__pdf_backend_EmbeddedFiles_name: - { - ( - l3ef - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {10} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {100} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {1000} - {0} - \int_use:N \g__pdf_backend_EmbeddedFiles_int - ) - } -\seq_new:N \g__pdf_backend_EmbeddedFiles_seq -\prop_new:N \g__pdf_backend_EmbeddedFiles_named_prop -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:n #1 - %#1 object ref - { - \int_gincr:N \g__pdf_backend_EmbeddedFiles_int - \prop_gput:Nnx \g__pdf_backend_EmbeddedFiles_named_prop - { #1 } - { \__pdf_backend_EmbeddedFiles_name: } - \seq_gput_right:Nx \g__pdf_backend_EmbeddedFiles_seq - { \__pdf_backend_EmbeddedFiles_name: \c_space_tl #1 } - } - +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} \cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4 { \hbox_set:Nn \l__pdf_backend_tmpa_box diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def index cdbb435a46e..42ee1e7fdf3 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def @@ -20,7 +20,7 @@ %% %% File: l3backend-testphase.dtx \ProvidesExplFile - {l3backend-testphase-xetex.def}{2021-07-21}{} + {l3backend-testphase-xetex.def}{2021-07-31}{} {LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX} \RequirePackage{l3ref-tmp} \cs_generate_variant:Nn \ref_label:nn {en} @@ -224,41 +224,13 @@ } } } -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_gpush:n #1 %array content +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content { - \pdf_object_unnamed_write:nn {dict} { /Names [#1] } - %n or x? - \__pdf_backend:x {put~@names~<>} + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \__pdf_backend:x {put~@names~<>} } - -\int_new:N \g__pdf_backend_EmbeddedFiles_int -\cs_new:Npn \__pdf_backend_EmbeddedFiles_name: - { - ( - l3ef - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {10} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {100} - {0} - \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {1000} - {0} - \int_use:N \g__pdf_backend_EmbeddedFiles_int - ) - } -\seq_new:N \g__pdf_backend_EmbeddedFiles_seq -\prop_new:N \g__pdf_backend_EmbeddedFiles_named_prop -\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:n #1 - %#1 object ref - { - \int_gincr:N \g__pdf_backend_EmbeddedFiles_int - \prop_gput:Nnx \g__pdf_backend_EmbeddedFiles_named_prop - { #1 } - { \__pdf_backend_EmbeddedFiles_name: } - \seq_gput_right:Nx \g__pdf_backend_EmbeddedFiles_seq - { \__pdf_backend_EmbeddedFiles_name: \c_space_tl #1 } - } - +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} % it needs a bit testing if it really works to set the box to 0 before the special ... % does it disturb viewing the xobject? % what happens with the resources (bdc)? (should work as they are specials too) diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua index 8d8f5e3c635..f7702b51c0c 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua @@ -21,7 +21,6 @@ -- File: l3backend-testphase.dtx - ltx= ltx or {} ltx.__pdf = ltx.__pdf or {} ltx.__pdf.Page = ltx.__pdf.Page or {} diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty index 6741b15587f..d65b52ee8be 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty @@ -27,7 +27,7 @@ %% File: l3pdffield.dtx \NeedsTeXFormat{LaTeX2e} -\ProvidesExplPackage{l3pdffield-testphase}{2021-07-21}{0.95g}% +\ProvidesExplPackage{l3pdffield-testphase}{2021-07-31}{0.95h}% {form fields} \csname HyField@NeedAppearancesfalse\endcsname % suppress NeedAppearances \str_new:N \l__pdffield_tmpa_str diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty index d123a701152..fdfe7b4279d 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty @@ -22,7 +22,7 @@ %% This work consists of the main source file pdflscape-ltx.sty %% \NeedsTeXFormat{LaTeX2e} -\ProvidesExplPackage{pdflscape-ltx}{2021-07-21}{0.95g} +\ProvidesExplPackage{pdflscape-ltx}{2021-07-31}{0.95h} {Display of landscape pages in PDF - adaption of pdflscape to the PDFmanagement bundle (testphase)} \DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}} diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty index b413c730ba1..040738df443 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: pdfmanagement-firstaid.dtx -\ProvidesExplPackage{pdfmanagement-firstaid}{2021-07-21}{0.95g} +\ProvidesExplPackage{pdfmanagement-firstaid}{2021-07-31}{0.95h} {LaTeX PDF management testphase bundle / firstaid-patches} \clist_map_inline:nn {pgf,transparent,hyperxmp,pdflscape,xcolor,color,beamer} diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx index 094041b27d7..ecfa1e60a1b 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx @@ -27,7 +27,7 @@ %% and all files in that bundle must be distributed together. %% %% File: pdfmanagement-testphase.dtx -\ProvidesExplFile{pdfmanagement-testphase.ltx}{2021-07-21}{0.95g} +\ProvidesExplFile{pdfmanagement-testphase.ltx}{2021-07-31}{0.95h} {PDF~management~code~(testphase)} %% File: l3pdfdict.dtx \cs_new:Npn \__pdfdict_get_type:n #1 @@ -270,6 +270,7 @@ \cs_set_eq:NN \pdfdict_use:n \__pdfdict_use:n %% File: l3pdfmanagement.dtx + \msg_new:nnn { pdfmanagement } { unknown-dict } { The~PDF~management~resource~'#1'~is~unknown. } @@ -282,6 +283,9 @@ \msg_new:nnn { pdfmanagement } { no-show } { It~is~not~possible~to~show~the~content~of~'#1'.} +\msg_new:nnn { pdfmanagement } { name-exist } + { The~name~'#1'~has~already~been~used~for~name~tree~'#2'.} + \msg_new:nnn { pdfmanagement } { show-dict } { The~PDF~resource~'#1'~ @@ -298,6 +302,10 @@ The~PDF~resources~management~is~not~active\\ command~'#1'~ignored. } +\tl_new:N \l__pdfmanagement_tmpa_tl +\tl_new:N \l__pdfmanagement_tmpb_tl +\seq_new:N \l__pdfmanagement_tmpa_seq + \bool_new:N \g__pdfmanagement_active_bool \prg_new_conditional:Npnn \__pdfmanagement_if_active: { p , T , F , TF } { @@ -308,6 +316,7 @@ \prg_set_eq_conditional:NNn \pdfmanagement_if_active: \__pdfmanagement_if_active: { p , T , F , TF } +\cs_set_eq:NN \IfPDFManagementActiveTF\pdfmanagement_if_active:TF \hook_new:n {pdfmanagement/add} \cs_new_protected:Npn \pdfmanagement_add:nnn #1 #2 #3 { @@ -332,7 +341,8 @@ } } -\cs_generate_variant:Nn \pdfmanagement_add:nnn {nnx,nxx} +\cs_generate_variant:Nn \pdfmanagement_add:nnn {nnx,nxx,xxx} +\cs_set_eq:NN \PDFManagementAdd \pdfmanagement_add:xxx \tl_new:N \g__kernel_pdfmanagement_thispage_shipout_code_tl \tl_new:N \g__kernel_pdfmanagement_lastpage_shipout_code_tl \tl_new:N \g__kernel_pdfmanagement_end_run_code_tl @@ -622,6 +632,11 @@ AcroForm/CO } +\clist_const:Nn \c__pdfmanagement_Catalog_nametree_clist + { + AP, + JavaScript, + } \clist_map_inline:Nn \c__pdfmanagement_Catalog_seq_clist { \seq_new:c { g__pdfmanagement_/Catalog/#1_seq } % new name later @@ -637,6 +652,43 @@ { g__pdfmanagement_/Catalog/OCProperties/Configs_seq } { #1 } } +\cs_new_protected:Npn \__pdfmanagement_nametree_add_aux:nnn #1 #2 #3 + %#1 name tree, #2 sanitized name #3 value + { + \prop_get:coNTF + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { #2 } + \l__pdfmanagement_tmpb_tl + { + \msg_error:nnnn{pdfmanagement}{name-exist}{#2}{#1} + } + { + \prop_gput:con + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { #2 } + { #3 } + } + } +\clist_map_inline:Nn \c__pdfmanagement_Catalog_nametree_clist + { + \pdfdict_new:n { g__pdf_Core/Catalog/Names/#1} + \cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/#1/?_gput:nn } ##1 ##2 + { + \pdf_string_from_unicode:nnN {utf8/string}{##1}\l__pdfmanagement_tmpa_tl + \exp_args:Nno + \__pdfmanagement_nametree_add_aux:nnn {#1}{\l__pdfmanagement_tmpa_tl}{##2} + } + } +\pdfdict_new:n { g__pdf_Core/Catalog/Names/EmbeddedFiles} +\cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/EmbeddedFiles/?_gput:nn } #1 #2 + { + \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdfmanagement_tmpa_tl + \exp_args:Nno + \__pdfmanagement_nametree_add_aux:nnn + {EmbeddedFiles}{\l__pdfmanagement_tmpa_tl}{#2} + \exp_args:No + \__pdf_backend_NamesEmbeddedFiles_add:nn {\l__pdfmanagement_tmpa_tl}{#2} + } \cs_new_protected:Npn \__pdfmanagement_Catalog_gpush: { \use:c { __pdfmanagement_/Catalog/AA_gpush: } @@ -655,7 +707,11 @@ { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog} } \__pdf_backend_catalog_gput:nn % output names tree: - \use:c { __pdfmanagement_/Catalog/Names/EmbeddedFiles_gpush: } + \use:c{ __pdfmanagement_/Catalog/Names_gpush:n } {EmbeddedFiles} + \clist_map_inline:Nn \c__pdfmanagement_Catalog_nametree_clist + { + \use:c{ __pdfmanagement_/Catalog/Names_gpush:n } {##1} + } } \cs_new_protected:cpn { __pdfmanagement_/Catalog/AA_gpush: } { @@ -789,12 +845,12 @@ { 0 } { \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/OCProperties } { dict } - \seq_gpop_left:cN { g__pdfmanagement_/Catalog/OCProperties/Configs_seq} \l_tmpa_tl + \seq_gpop_left:cN { g__pdfmanagement_/Catalog/OCProperties/Configs_seq} \l__pdfmanagement_tmpa_tl \exp_args:Nnx \__pdf_backend_object_write:nn {__pdfmanagement/Catalog/OCProperties} { /OCGs~[ \seq_use:cn { g__pdfmanagement_/Catalog/OCProperties/OCGs_seq } {~} ] - /D~\l_tmpa_tl~ + /D~\l__pdfmanagement_tmpa_tl~ \seq_if_empty:cF { g__pdfmanagement_/Catalog/OCProperties/Configs_seq } { /Configs~ @@ -861,22 +917,54 @@ } } } +\int_new:N \g__pdfmanagement_EmbeddedFiles_int +\cs_new:Npn \__pdfmanagement_EmbeddedFiles_name: + { + ( + l3ef + \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {10} + {0} + \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {100} + {0} + \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {1000} + {0} + \int_use:N \g__pdfmanagement_EmbeddedFiles_int + ) + } \pdfdict_new:n { g__pdf_Core/Catalog/Names } \cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/EmbeddedFiles_gput:n } #1 { - \__pdf_backend_NamesEmbeddedFiles_add:n { #1 } - } -\cs_new_protected:cpn { __pdfmanagement_/Catalog/Names/EmbeddedFiles_gpush: } - { - \seq_if_empty:NF \g__pdf_backend_EmbeddedFiles_seq - { - \exp_args:Nx \__pdf_backend_NamesEmbeddedFiles_gpush:n - { - \seq_use:Nn \g__pdf_backend_EmbeddedFiles_seq {~} - } - } + \int_gincr:N \g__pdfmanagement_EmbeddedFiles_int + \exp_args:Nnx + \prop_gput:cnn + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/EmbeddedFiles }} + { \__pdfmanagement_EmbeddedFiles_name: } + { #1 } + \exp_args:Nx + \__pdf_backend_NamesEmbeddedFiles_add:nn {\__pdfmanagement_EmbeddedFiles_name:} { #1 } } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/Names_gpush:n } #1 %#1 name of name tree + { + \pdfdict_if_empty:nF { g__pdf_Core/Catalog/Names/#1 } + { + \seq_clear:N \l__pdfmanagement_tmpa_seq + \prop_map_inline:cn + {\__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { \seq_put_right:Nn \l__pdfmanagement_tmpa_seq {##1~##2}} + \seq_sort:Nn \l__pdfmanagement_tmpa_seq + { + \str_compare:nNnTF {##1} > {##2} + { \sort_return_swapped: } + { \sort_return_same: } + } + \exp_args:Nnx \__pdf_backend_Names_gpush:nn + {#1} + { + \seq_use:Nn \l__pdfmanagement_tmpa_seq {~} + } + } + } \cs_new_protected:cpn {__pdfmanagement_handler/Catalog/?_show:} { \iow_term:x diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty index 5337c62f0c8..54cce745475 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: pdfmanagement-testphase.dtx -\ProvidesExplPackage{pdfmanagement-testphase}{2021-07-21}{0.95g} +\ProvidesExplPackage{pdfmanagement-testphase}{2021-07-31}{0.95h} {LaTeX PDF management testphase bundle} \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{2020-10-01}{}{ diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty index 5151ea4ff95..e7cf7c36e56 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty @@ -3,7 +3,7 @@ %% a replacement for transparent sty from Heiko Oberdiek %% \NeedsTeXFormat{LaTeX2e}[2020/10/01] -\ProvidesExplPackage{transparent-ltx}{2021-07-21}{0.95g} +\ProvidesExplPackage{transparent-ltx}{2021-07-31}{0.95h} {Transparency with color stacks (replacement for transparent.sty from Heiko Oberdiek)}% \RequirePackage{l3opacity} diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty index 0861462d6bb..12c87fdd33a 100644 --- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty +++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty @@ -1,6 +1,6 @@ %% LaTeX2e file `xcolor-patches.sty' %% -\ProvidesPackage{xcolor-patches-tmp-ltx}[2021-07-21 v0.95g patch xcolor for l3color] +\ProvidesPackage{xcolor-patches-tmp-ltx}[2021-07-31 v0.95h patch xcolor for l3color] \@ifundefined{color_set:nn}{\RequirePackage{l3color}}{} \ExplSyntaxOn @@ -116,3 +116,21 @@ {\noexpand\xcolor@{\@@cls}{\the\toks@}{\@@mod}{\@@clr}}}% \fi}% \expandafter\endgroup\@@tmp\xglobal@stop} + +%re-predefine the colors +\definecolorset{rgb/hsb/cmyk/gray}{}{}% + {brown,.75,.5,.25/.083333,.66667,.75/0,.25,.5,.25/.5475;% + lime,.75,1,0/.20833,1,1/.25,0,1,0/.815;% + orange,1,.5,0/.083333,1,1/0,.5,1,0/.595;% + pink,1,.75,.75/0,.25,1/0,.25,.25,0/.825;% + purple,.75,0,.25/.94444,1,.75/0,.75,.5,.25/.2525;% + teal,0,.5,.5/.5,1,.5/.5,0,0,.5/.35;% + violet,.5,0,.5/.83333,1,.5/0,.5,0,.5/.205}% +\definecolorset{cmyk/rgb/hsb/gray}{}{}% + {olive,0,0,1,.5/.5,.5,0/.16667,1,.5/.39} +\definecolorset{gray/rgb/hsb/cmyk}{}{}% + {darkgray,.25/.25,.25,.25/0,0,.25/0,0,0,.75;% + gray,.5/.5,.5,.5/0,0,.5/0,0,0,.5;% + lightgray,.75/.75,.75,.75/0,0,.75/0,0,0,.25} + +\endinput -- cgit v1.2.3