texlive[73181] Master/texmf-dist: pdfmanagement-testphase (21dec24)
commits+karl at tug.org
commits+karl at tug.org
Sat Dec 21 21:55:20 CET 2024
Revision: 73181
https://tug.org/svn/texlive?view=revision&revision=73181
Author: karl
Date: 2024-12-21 21:55:20 +0100 (Sat, 21 Dec 2024)
Log Message:
-----------
pdfmanagement-testphase (21dec24)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/hyperref-generic.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3backend-testphase.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfannot.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfdict.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-action.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-checkbox.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-choice.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-textfield.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffile.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmanagement.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmeta.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdftools.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfxform.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/ltdocinit.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-testphase.pdf
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-action.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-checkbox.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-choice.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-textfield.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md 2024-12-21 20:55:20 UTC (rev 73181)
@@ -5,7 +5,22 @@
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
+## [2024-12-20]
+Version: 2024-12-20 v0.96o
+
+### Changed
+ - hyp/link/GoTo/Contents and hyp/link/URI/Contents now fill also the dictionary entry.
+ This allows to replace it fully.
+ - hyp/link/GoTo/Contents socket has been added to \hyper at linkstart too.
+ - content and name of dummy PDF/A-4F attachment.
+ - added testphase=latest key
+
+### Added
+ - l3pdfmeta: standard verification tests for embedded test, A-4 will switch to A-4F is embedded files are detected
+ - l3pdffile: counts embedded files for verification tests.
+
## [2024-10-27]
+Version: 2024-10-27 v0.96n
### Changed
- \pdf_bdc:nn now creates by default inline dictionaries if the engine support this.
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md 2024-12-21 20:55:20 UTC (rev 73181)
@@ -1,6 +1,6 @@
# LaTeX PDF management testphase bundle
-Version: 0.96n, 2024-10-27
+Version: 0.96o, 2024-12-20
This package is used during a test phase to load the new PDF management code
of LaTeX.
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/hyperref-generic.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3backend-testphase.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfannot.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfdict.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-action.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-checkbox.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-choice.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield-textfield.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffile.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmanagement.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfmeta.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdftools.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdfxform.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/ltdocinit.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/pdfmanagement-testphase.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -82,7 +82,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -456,7 +456,7 @@
% \end{hypkey}
%
% \subsection{Public interfaces}
-%
+%
% \begin{variable}
% {\l_hyp_annot_colorlink_bool,
% \l_hyp_annot_colorurl_bool,
@@ -486,7 +486,7 @@
% \end{variable}
% \subsection{Changed behaviour}
% \begin{description}
-% \item[colorlinks] |colorlinks| or |colorlinks=true| will as before disable the |pdfborder|
+% \item[colorlinks] |colorlinks| or |colorlinks=true| will as before disable the |pdfborder|
% (|colorlinks=false| will leave the |pdfborder| untouched), but it is possible
% to use the key in the document at any time, or to reenable the border if wanted.
% Internally |colorlinks| \& friends will no longer define/undefine
@@ -617,14 +617,14 @@
% implicit grouping of the content.
%
% \DescribeHypkey{nested-links}%
-%
+%
% Links are sometimes nested. E.g. if a section heading contains a reference
-% it can lead to nested links in the table of contents or if |\nameref| is used.
-% That is not forbidden and normally work as expected: If the link area overlap
-% normally the inner link is \enquote{on top} and chosen at a click.
+% it can lead to nested links in the table of contents or if |\nameref| is used.
+% That is not forbidden and normally work as expected: If the link area overlap
+% normally the inner link is \enquote{on top} and chosen at a click.
% But it is not always actually wanted, so with the |nested-links| (a boolean key)
-% it is possible to disable such nested links.
-%
+% it is possible to disable such nested links.
+%
% \section{Draftmode}
% pdftex and other engines knows a
% draftmode which can be set with |\pdfdraftmode=1|
@@ -965,7 +965,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2024-10-27 v0.96n %
+\ProvidesFile{hgeneric-testphase.def}[2024-12-20 v0.96o %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -1529,13 +1529,13 @@
{
\tl_if_blank:nTF {#1}
{ \cs_set_eq:NN\BKM at color\@empty }
- {
+ {
\__hyp_color_set:ne {__hyp/tmpa}{#1}
\color_export:nVN
{__hyp/tmpa}
\g__hyp_bordercolormodel_str
\BKM at color
- }
+ }
}
}
\legacy_if:nTF { Hy at bookmarks }
@@ -1543,7 +1543,7 @@
\AddToHook{begindocument/before}[hyperref/bookmark]
{
\RequirePackage{bookmark}
- }
+ }
}
% \end{macrocode}
% empty hook chunk to ensure that the chunk exists.
@@ -1559,7 +1559,7 @@
%
% \section{Reference and label commands}
% This uses the in-built property module.
-%
+%
% \begin{macro}
% {
% \@@_property_record:nn,
@@ -1579,7 +1579,7 @@
% we generate a few variants. We use ee-variants as they already exist
% in the module and once this is there it can go here.
% \begin{macrocode}
-\cs_generate_variant:Nn \@@_property_record:nn {ee}
+\cs_generate_variant:Nn \@@_property_record:nn {ee}
% \end{macrocode}
% \end{macro}
% \section{Variables}
@@ -1708,12 +1708,14 @@
\tl_set:Nn \l_@@_text_enc_para_print_tl {utf8/string}
% \end{macrocode}
% \end{variable}
-%
-% It is also unclear how the /Contents entry would look at best.
+%
+% It is also unclear how the /Contents entry would look at best.
% So we use sockets. The first argument is the target (url or destination),
% For GoTo we also pass the text as argument.
-% The sockets should define \cs{l_@@_link_Contents_tl}
-% % \begin{macrocode}
+% The sockets should put something into the relevant annotation dictionaries.
+% \changes{v0.96o}{2024-10-27}{moved dictionary command into socket so that
+% it can be fully replaced.}
+% \begin{macrocode}
\tl_new:N\l_@@_link_Contents_tl
\socket_new:nn {hyp/link/GoTo/Contents}{2}
\socket_new:nn {hyp/link/URI/Contents}{1}
@@ -1722,7 +1724,9 @@
\@@_text_pdfstring:eoN
{ Go~to~destination~#1 }
{ \l_@@_text_enc_info_print_tl }
- \l_@@_link_Contents_tl
+ \l_@@_link_Contents_tl
+ \pdfannot_dict_put:nne {link/GoTo}{Contents}
+ {\l_@@_link_Contents_tl}
}
\socket_new_plug:nnn {hyp/link/URI/Contents}{default}
{
@@ -1729,7 +1733,9 @@
\@@_text_pdfstring:eoN
{ #1 }
{ \l_@@_text_enc_info_print_tl }
- \l_@@_link_Contents_tl
+ \l_@@_link_Contents_tl
+ \pdfannot_dict_put:nne {link/URI}{Contents}
+ {\l_@@_link_Contents_tl}
}
\socket_assign_plug:nn{hyp/link/GoTo/Contents}{default}
\socket_assign_plug:nn{hyp/link/URI/Contents}{default}
@@ -1951,7 +1957,7 @@
{
\@@_text_pdfstring:noN { #1 }{ \l_@@_text_enc_info_print_tl } #2
}
-\cs_generate_variant:Nn \@@_text_pdfstring_info:nN {eN,oN}
+\cs_generate_variant:Nn \@@_text_pdfstring_info:nN {eN,oN}
% \end{macrocode}
% \end{macro}
%
@@ -2035,19 +2041,19 @@
%
% This driver defines for consistency also
% |\hyper at linklaunch| for Launch and |\hyper at linknamed| for Named.
-%
+%
% \subsection{Link level}
% Links can be nested. Inner links need perhaps special handling, e.g.
-% to deactivate the link, or to change the border, or in the case of
+% to deactivate the link, or to change the border, or in the case of
% tagging to add some additional structure to handle the parent-child rules.
-% We therefore add a global counter which is increased at the begin of
-% link and decreased at the end.
+% We therefore add a global counter which is increased at the begin of
+% link and decreased at the end.
% \begin{macro}{g_@@_linknestlevel_int}
% \begin{macrocode}
\int_new:N \g_@@_linknestlevel_int
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macrocode}
\prg_new_conditional:Npnn \@@_if_outer_link: {TF}
{
@@ -2066,12 +2072,12 @@
%
% \begin{macrocode}
\keys_define:nn { hyp }
- {
+ {
nested-links .choice:,
- nested-links / true .code:n =
+ nested-links / true .code:n =
{ \cs_set_eq:NN \@@_check_link_nesting:TF \use_i:nn },
- nested-links / false .code:n =
- { \cs_set_eq:NN \@@_check_link_nesting:TF \@@_if_outer_link:TF },
+ nested-links / false .code:n =
+ { \cs_set_eq:NN \@@_check_link_nesting:TF \@@_if_outer_link:TF },
nested-links .default:n = {true}
}
% \end{macrocode}
@@ -2251,17 +2257,15 @@
\group_begin:
\tl_set:Nn \l_hyp_current_dest_name_tl {#2}
% \end{macrocode}
-% this socket defines \cs{l_@@_link_Contents_tl}
+% this socket adds something to the /Contents key.
% \begin{macrocode}
\socket_use:nnn{hyp/link/GoTo/Contents}{#2}{#3}
- \pdfannot_dict_put:nne {link/GoTo}{Contents}
- {\l_@@_link_Contents_tl}
\hook_use:n {hyp/link/#1}
\@@_link_goto_begin:nw {#2}#3\Hy at xspace@end
\@@_link_goto_end:
\group_end:
\Hy at VerboseLinkStop
- }
+ }
{
\group_begin: #3\group_end:
}
@@ -2279,12 +2283,13 @@
\Hy at VerboseLinkStart{#1}{#2}% only for debug
\group_begin:
\tl_set:Nn \l_hyp_current_dest_name_tl {#2}
+ \socket_use:nnn{hyp/link/GoTo/Contents}{#2}{}
\hook_use:n {hyp/link/#1}
\@@_link_goto_begin:nw {#2}
- }
+ }
{
- \group_begin:
- }
+ \group_begin:
+ }
}
}
@@ -2300,7 +2305,7 @@
}
{
\group_end:
- }
+ }
\int_gdecr:N\g_@@_linknestlevel_int
}
}
@@ -2331,15 +2336,14 @@
\pdfdict_put:nnn{l_hyp/annot/A/URI}{IsMap}{true}
}
% \end{macrocode}
-% This socket defines \cs{l_@@_link_Contents_tl}
+% This socket adds something to the /Contents key.
% \begin{macrocode}
- \socket_use:nn{hyp/link/URI/Contents}{#2}
- \pdfannot_dict_put:nne {link/URI}{Contents}{\l_@@_link_Contents_tl}
+ \socket_use:nn{hyp/link/URI/Contents}{#2}
\cs_set_eq:NN \# \c_hash_str
\cs_set_eq:NN \% \c_percent_str
\Hy at safe@activestrue
\mode_leave_vertical:
- \pdfannot_dict_put:nne {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>}
+ \pdfannot_dict_put:nne {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>}
\pdfannot_link:nen { URI }
{
}
@@ -2350,7 +2354,7 @@
\Hy at VerboseLinkStop %where is the start??
}
\group_end:
- }
+ }
{
\group_begin: #1 \group_end:
}
@@ -2425,7 +2429,7 @@
\Hy at VerboseLinkStop %where is the start??
}
\group_end:
- }
+ }
{
\group_begin: #1 \group_end:
}
@@ -2470,7 +2474,7 @@
\pdfdict_remove:nn {l_hyp/annot/A/Launch}{Win}
}
{
- \pdfdict_put:nne
+ \pdfdict_put:nne
{l_hyp/annot/A/Launch}
{Win}
{<</P \l_@@_para_tmpa_tl /F \l_@@_filename_tmpa_tl >>}
@@ -2549,7 +2553,7 @@
#2
}
\group_end:
- }
+ }
{ \group_begin: #2 \group_end: }
\int_gdecr:N\g_@@_linknestlevel_int
}
@@ -2684,7 +2688,7 @@
,colorrun =#1
,colormenu =#1
,colorfile =#1
- }
+ }
,colorlinks .default:n = {true}
}
% \end{macrocode}
@@ -3632,8 +3636,8 @@
}
,pdfprintclip / unknown .code:n =
{
- \msg_warning:nneee
- { hyp }
+ \msg_warning:nneee
+ { hyp }
{ unknown-choice+empty }
{ pdfprintclip }
{ MediaBox, CropBox, BleedBox, TrimBox, ArtBox }
@@ -3970,7 +3974,7 @@
pdf#1 .code:n =
{
\tl_set:Ne\l_@@_tmpa_tl {\text_expand:n{##1}}
- \@@_store_metadata:no {pdf#1}{\l_@@_tmpa_tl}
+ \@@_store_metadata:no {pdf#1}{\l_@@_tmpa_tl}
\tl_if_empty:NTF \l_@@_tmpa_tl
{
\str_case:nnF { #1 }
@@ -3991,7 +3995,7 @@
}
}
{
- \tl_set:Ne\l_@@_tmpb_tl {\clist_item:on{\l_@@_tmpa_tl}{1}}
+ \tl_set:Ne\l_@@_tmpb_tl {\clist_item:on{\l_@@_tmpa_tl}{1}}
\exp_args:NNV
\regex_extract_once:NnN \l_@@_optlang_regex \l_@@_tmpb_tl\l_@@_tmpa_seq
\seq_if_empty:NTF\l_@@_tmpa_seq
@@ -3998,7 +4002,7 @@
{
\@@_text_pdfstring_info:oN {\l_@@_tmpa_tl}\l_@@_tmpa_str
}
- {
+ {
\@@_text_pdfstring_info:eN {\seq_item:Nn \l_@@_tmpa_seq{3}}\l_@@_tmpa_str
}
\str_if_eq:VnF\l_@@_tmpa_str{<FEFF>}
@@ -4005,7 +4009,7 @@
{
\pdfmanagement_add:nne {Info}{#2}{\l_@@_tmpa_str}
}
- }
+ }
}
}
\keys_define:nn { hyp / info }
@@ -4024,10 +4028,10 @@
{
\pdfmanagement_add:nne {Info}{#2}{\l_@@_tmpa_str}
}
- }
+ }
}
,unknown .code:n =
- {
+ {
\@@_text_pdfstring_info:eN {##1}\l_@@_tmpa_str
\str_if_eq:VnF\l_@@_tmpa_str{<FEFF>}
{
@@ -4494,7 +4498,7 @@
\@@_property_record:ee {HyAnn@\the\HyAnn at Count}{abspage}
\property_ref_undefined_warn:ee {HyAnn@\the\HyAnn at Count}{abspage}
}%
-\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {T}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {T}
\def\Fld at pageobjref
{
\property_if_recorded:eeT {HyAnn@\the\HyAnn at Count}{abspage}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
%
@@ -56,27 +56,27 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2024-10-27}{}
+ {l3backend-testphase-dvipdfmx.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2024-10-27}{}
+ {l3backend-testphase-dvips.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2024-10-27}{}
+ {l3backend-testphase-dvisvgm.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2024-10-27}{}
+ {l3backend-testphase-luatex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2024-10-27}{}
+ {l3backend-testphase-pdftex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2024-10-27}{}
+ {l3backend-testphase-xetex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -432,7 +432,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2024-10-27}{0.96n}
+\ProvidesExplPackage{l3pdfannot}{2024-12-20}{0.96o}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -208,7 +208,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2024-10-27}{0.96n}
+\ProvidesExplPackage{l3pdfdict}{2024-12-20}{0.96o}
{Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-action.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-action.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-action.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-checkbox.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-checkbox.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-checkbox.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -422,7 +422,7 @@
{
\@@_field:n { @@/checkbox/#1 }
}
- \keys_set:nn {pdffield}{parent=@@/checkbox/#1}
+ \keys_set:nn {pdffield}{parent={@@/checkbox/#1}}
}
\cs_generate_variant:Nn \@@_checkbox_field:n {V}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-choice.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-choice.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-choice.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -520,7 +520,7 @@
% \begin{macrocode}
\@@_field:n { @@/choice/#1 }
}
- \keys_set:nn {pdffield}{parent=@@/choice/#1}
+ \keys_set:nn {pdffield}{parent={@@/choice/#1}}
}
\cs_generate_variant:Nn \@@_choice_field:n {V}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-pushbutton.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-pushbutton.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -55,7 +55,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -679,7 +679,7 @@
{
\@@_field:n { @@/pushbutton/#1 }
}
- \keys_set:nn {pdffield}{parent=@@/pushbutton/#1}
+ \keys_set:nn {pdffield}{parent={@@/pushbutton/#1}}
}
\cs_generate_variant:Nn \@@_pushbutton_field:n {V}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-radiobutton.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-radiobutton.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -83,7 +83,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -737,7 +737,7 @@
}
}
}
- \keys_set:nn {pdffield}{parent=@@/radio/#1}
+ \keys_set:nn {pdffield}{parent={@@/radio/#1}}
}
\cs_generate_variant:Nn \@@_radio_field:n {V}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-textfield.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-textfield.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield-textfield.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -513,7 +513,7 @@
{
\@@_field:n { @@/textfield/#1 }
}
- \keys_set:nn {pdffield}{parent=@@/textfield/#1}
+ \keys_set:nn {pdffield}{parent={@@/textfield/#1}}
}
\cs_generate_variant:Nn \@@_textfield_field:n {V}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -69,7 +69,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -972,7 +972,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2024-10-27}{0.96n}%
+\ProvidesExplPackage{l3pdffield-testphase}{2024-12-20}{0.96o}%
{form fields}
% \end{macrocode}
% \subsection{hyperref specific command}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -205,6 +205,12 @@
% has to be added explicitly as there is no sensible way
% to retrieve this automatically.
% \item The mimetype (in the |/Subtype|) should be properly escaped.
+% So for example
+% \begin{verbatim}
+% \pdfdict_put:nne{l_pdffile}{Subtype}{/application\string#2Fx-tex}
+% \end{verbatim}
+% But while it is possible to set the subtype like this, it is normally better
+% to rely on the file extension and to let the code autodetect the subtype.
% This module contains a property list with maps a number of file extensions
% to mimetypes and the commands try to detect and fill the mimetype automatically.
% \item The dictionary can contain additional keys (|/Filter|, |/DecodeParms|),
@@ -337,9 +343,10 @@
%
% \begin{verbatim}
% \pdf_object_new:n {module/filespec/A} % a new filespec object
-% \pdf_object_ref:n {module/filespec/A} % a reference
-% \pdf_object_unnamed_write:nn { stream }{ {...}{content} } %writing the stream
-% % filling and writing the filespec dictionary:
+% \pdf_object_ref:n {module/filespec/A} % reference it somewhere, e.g. in AF
+% % now write the stream
+% \pdf_object_unnamed_write:nn { stream }{ {...}{content} }
+% % and fill and write the filespec dictionary:
% \pdffile_filespec:nnn {module/filespec/A}{A.xml}{\pdf_object_ref_last:}
% \end{verbatim}
%
@@ -356,6 +363,24 @@
% are not supported.
% \end{variable}
%
+% \begin{variable} {\g_pdffile_embed_pdfa_int,\g_pdffile_embed_nonpdfa_int}
+% These two integers hold the number of embedded files in PDF/A format
+% and non-PDF/A format and can be used for a rough test for the requirements
+% in l3pdfmeta |no_embed_content| (both should be zero)
+% and |only_pdfa_embed_content| (the second should be zero).
+% The commands |\pdffile_embed_stream:...| and |\pdffile_embed_file:...|
+% increase the integers. As the code can currently not detect if an embedded
+% file follows a PDF/A standard it simply goes by the extension: files embedded
+% as |.pdf| increase the first integer.
+%
+% |\pdffile_filespec:nnn| does \emph{not} increase the integers,
+% if this command is used it lies in the responsability of the
+% author to adjust the integers.
+%
+% The integers are public so that user
+% can query and adjust the values, e.g. in tests for a standard compliancy.
+% \end{variable}
+%
% \begin{variable}{\l_pdffile_source_name_str}
% This variable is set at the begin of \cs{pdffile_embed_file:nnn}. It can be
% (and is) used in the file dictionaries, see table~\ref{tab:filedict} for examples.
@@ -398,7 +423,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2024-10-27}{0.96n}
+\ProvidesExplPackage{l3pdffile}{2024-12-20}{0.96o}
{embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
\RequirePackage{l3pdftools} %temporarily!!
%</header>
@@ -438,6 +463,8 @@
#1
}
% \end{macrocode}
+%
+% \subsection{Variables}
% \begin{variable}
% {
% \l_@@_tmpa_tl,
@@ -484,6 +511,28 @@
,.xml = application/xml
}
% \end{macrocode}
+%
+% \begin{variable} {\g_pdffile_embed_pdfa_int,\g_pdffile_embed_nonpdfa_int}
+% These two integers hold the number of embedded files in PDF/A format
+% and non-PDF/A format and can be used for a rough test for the requirements
+% in l3pdfmeta |no_embed_content| (both should be zero)
+% and |only_pdfa_embed_content| (the second should be zero).
+% The commands |\pdffile_embed_stream:...| and |\pdffile_embed_file:...|
+% increase the integers. As the code can currently not detect if an embedded
+% file follows a PDF/A standard it simply goes by the extension: files embedded
+% as |.pdf| increase the first integer.
+%
+% |\pdffile_filespec:nnn| does \emph{not} increase the integers,
+% if this command is used it lies in the responsability of the
+% author to adjust the integers.
+%
+% The integers are public so that user
+% can query and adjust the values, e.g. in tests for a standard compliancy.
+% \begin{macrocode}
+\int_new:N\g_pdffile_embed_pdfa_int
+\int_new:N\g_pdffile_embed_nonpdfa_int
+% \end{macrocode}
+% \end{variable}
% \begin{variable}
% {
% \l_pdffile_source_name_str
@@ -550,13 +599,15 @@
% \begin{macro}{\pdffile_embed_file:nnn, \pdffile_embed_stream:nnn, \pdffile_embed_stream:nnN}
% At first a command to set the mimetype. It either uses the current value
% in the file dictionary, or tries to guess it from the extension.
-% \begin{macro}{\@@_mimetype_set:nN,\@@_mimetype_set:VN}
+%
+% \begin{macro}{\@@_mimetype_set:nNN,\@@_mimetype_set:VNN}
% \begin{macro}{\@@_fstream_write:nN, \@@_fstream_write:VN}
% \begin{macro}{\@@_stream_write:nN, \@@_stream_write:VN}
% \begin{macrocode}
%#1 file name,
%#2 tl to return the (printed) value for the guessed mimetype
-\cs_new_protected:Npn \@@_mimetype_set:nN #1 #2
+%#3 tl to return the file extension (that is a string)
+\cs_new_protected:Npn \@@_mimetype_set:nNN #1 #2 #3
{
\file_parse_full_name:nNNN
{#1}
@@ -563,30 +614,39 @@
\l_@@_tmpa_str %unused
\l_@@_tmpb_str %unused
\l_@@_ext_str
- %check if Subtype has been set
- \pdfdict_get:nnN { l_pdffile}{Subtype}\l_@@_tmpa_tl
- %if not look up in the prop:
- \quark_if_no_value:NT \l_@@_tmpa_tl
+ %check if Subtype has been set
+ \pdfdict_get:nnN { l_pdffile}{Subtype}\l_@@_tmpa_tl
+ %if not look up in the prop:
+ \quark_if_no_value:NT \l_@@_tmpa_tl
+ {
+ \prop_get:NVNTF
+ \g_pdffile_mimetypes_prop
+ \l_@@_ext_str
+ \l_@@_tmpb_tl
{
- \prop_get:NVNTF
- \g_pdffile_mimetypes_prop
- \l_@@_ext_str
- \l_@@_tmpb_tl
- {
- \tl_set:Ne #2 {/Subtype~\pdf_name_from_unicode_e:V \l_@@_tmpb_tl}
- }
- {
- \msg_warning:nne { pdffile }{ mimetype-missing} {#1}
- \tl_clear:N #2
- }
+ \tl_set:Ne #2 {/Subtype~\pdf_name_from_unicode_e:V \l_@@_tmpb_tl}
}
- }
+ {
+ \msg_warning:nne { pdffile }{ mimetype-missing} {#1}
+ \tl_clear:N #2
+ }
+ }
+ \tl_set_eq:NN #3 \l_@@_ext_str
+ }
-\cs_generate_variant:Nn \@@_mimetype_set:nN {VN}
+\cs_generate_variant:Nn \@@_mimetype_set:nNN {VNN}
+% #1 tl containing a file extension
+\cs_new_protected:Npn \@@_count_embed:N #1
+ {
+ \str_if_eq:VnTF #1 {.pdf}
+ {\int_gincr:N \g_pdffile_embed_pdfa_int }
+ {\int_gincr:N \g_pdffile_embed_nonpdfa_int }
+ }
+
%#1 file name,
%#2 tl, should be empty or contain /Subtype /mimetype
-% e.g. result from \@@_mimetype_set:NN
+% e.g. result from \@@_mimetype_set:nNN
\cs_new_protected:Npn \@@_fstream_write:nN #1 #2
{
\pdf_object_unnamed_write:ne { fstream }
@@ -611,7 +671,7 @@
%#1 file content
%#2 tl, should be empty or contain /Subtype /mimtype
-% e.g. result from \@@_mimetype_set:NN
+% e.g. result from \@@_mimetype_set:nNN
\cs_new_protected:Npn \@@_stream_write:nN #1 #2
{
\pdf_object_unnamed_write:ne { stream }
@@ -647,7 +707,7 @@
\group_begin:
\pdf_string_from_unicode:nnN {utf8/string}{#2}\l_@@_tmpa_str
\pdfdict_put:nne {l_pdffile/Filespec}{F} { \l_@@_tmpa_str }
- \@@_filename_convert_to_print:nN { #2 } \l_@@_tmpa_str
+ \@@_filename_convert_to_print:nN { #2 } \l_@@_tmpa_str
\pdfdict_put:nne {l_pdffile/Filespec}{UF}{ \l_@@_tmpa_str }
\pdf_object_write:nne { #1 } { dict }
{
@@ -682,7 +742,7 @@
/EF <</F~#2 /UF~#2>>
}
}
- \tl_gset:Ne\g_@@_tmpa_tl{\pdf_object_ref_last:}
+ \tl_gset:Ne\g_@@_tmpa_tl{\pdf_object_ref_last:}
\group_end:
\tl_set_eq:NN#3\g_@@_tmpa_tl
}
@@ -708,9 +768,11 @@
{
\file_get_full_name:nNTF {#1} \l_pdffile_source_name_str
{
- \@@_mimetype_set:VN
+ \@@_mimetype_set:VNN
\l_pdffile_source_name_str
\l_@@_automimetype_tl
+ \l_@@_tmpa_tl
+ \@@_count_embed:N \l_@@_tmpa_tl
\@@_fstream_write:VN
\l_pdffile_source_name_str
\l_@@_automimetype_tl
@@ -772,8 +834,9 @@
{ #3 }
{{stream}{}{\tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}}}}
\tl_if_blank:nTF {#2}
- { \@@_mimetype_set:nN {stream.txt}\l_@@_automimetype_tl}
- { \@@_mimetype_set:nN { #2 } \l_@@_automimetype_tl }
+ { \@@_mimetype_set:nNN {stream.txt}\l_@@_automimetype_tl \l_@@_tmpa_tl}
+ { \@@_mimetype_set:nNN { #2 } \l_@@_automimetype_tl \l_@@_tmpa_tl }
+ \@@_count_embed:N \l_@@_tmpa_tl
\@@_stream_write:nN
{ #1 }
\l_@@_automimetype_tl
@@ -791,8 +854,9 @@
\cs_new_protected:Npn \pdffile_embed_stream:nnN #1 #2 #3
{
\tl_if_blank:nTF {#2}
- { \@@_mimetype_set:nN {stream.txt}\l_@@_automimetype_tl}
- { \@@_mimetype_set:nN { #2 } \l_@@_automimetype_tl }
+ { \@@_mimetype_set:nNN {stream.txt}\l_@@_automimetype_tl \l_@@_tmpa_tl}
+ { \@@_mimetype_set:nNN { #2 } \l_@@_automimetype_tl \l_@@_tmpa_tl }
+ \@@_count_embed:N\l_@@_tmpa_tl
\@@_stream_write:nN
{ #1 }
\l_@@_automimetype_tl
@@ -806,10 +870,10 @@
\prop_gput:Nee
\g_pdffile_embed_prop
{ #3 }
- {{stream}{}{\tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}}}}
+ {{stream}{}{\tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}}}}
}
-
+
% \end{macrocode}
% \end{macro}
% \end{macro}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -57,7 +57,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -347,7 +347,10 @@
% \cs{pdfmanagement_add:nnn} \{ThisPage\} \Arg{name} \Arg{value}
% \end{syntax}
% Adds |/|\meta{name} \meta{value} at \emph{shipout} to the page dictionary of the
-% current page. Current page means here the \emph{shipout} page.
+% current page. Current page means here the \emph{shipout} page. \emph{shipout} means
+% at the end of the \texttt{shipout/background} hook. Code that wants to set a value
+% in a shipout hook should use the \texttt{shipout/background} hook too. Other hooks
+% are either too early or too late.%
% It is always stored globally.
% If \Arg{name} has already a value set in the \texttt{Page}
% dictionary it will be overwritten for this page.
@@ -632,7 +635,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2024-10-27}{0.96n}
+\ProvidesExplPackage{l3pdfmanagement}{2024-12-20}{0.96o}
{Management of core PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -182,15 +182,20 @@
% \item[|no_embed_content|] no |/EF| key in filespec, no |/Type/EmbeddedFiles|.
% \emph{This will be checked in future by \pkg{l3pdffiles}
% for the files it embeds.}
-% The restrictment is set for only PDF/A-1b.
-% PDF/A-2b and PDF/A3-b lifted this restriction: PDF/A-2b allows
+% The restriction is set only for PDF/A-1 versions.
+% PDF/A-2 and PDF/A-3 lifted this restriction: PDF/A-2 allows
% to embed other PDF documents conforming to either PDF/A-1 or PDF/A-2,
-% and PDF/A-3 allows any embedded files. I don't see a way to test the
-% PDF/A-2b requirement so currently it will simply allow everything. Perhaps
+% and PDF/A-3 and PDF/A-4F allows any embedded files.
+%
+% \item[|only_pdfa_embed_content|]
+% This is set for PDF/A-2a, PDF/A-2b, PDF/A-2u and PDF/A-4.
+% I don't see a way to test the
+% PDF/A-2 requirement so currently it will simply allow everything. Perhaps
% a test for at least the PDF-format will be added in future.
+%
% \item[|Catalog_no_OCProperties|] don't add |/OCProperties| to the catalog
% {\em l3pdfmeta removes this entry at the end of the document}
-% \item[|Catalog_OCProperties_no_AS|]
+% \item[|Catalog_OCProperties_no_AS|]
% do not use |/AS| optional content configuration dictionary.
% \item[|Catalog_EmbeddedFiles|] ensure that an |EmbeddedFiles| name tree is
% in the catalog. This is required for PDF/A-4f.
@@ -205,10 +210,10 @@
% \item[|tagged|] that is set in A-2a and A-3a and means that the pdf must be
% tagged. This is currently neither tested not enforced somewhere.
% \item[|no_CharSet|] CharSet is deprecated is pdf 2.0 and should not
-% be used in A-4. l3pdfmeta will therefore suppress it for the
+% be used in A-4. l3pdfmeta will therefore suppress it for the
% engines pdftex and luatex (the other engines have no suitable option)
% \item[|omit_CID|] This avoids with PDF/A-2 and newer a failure
-% because of with missing CID identifications
+% because of with missing CID identifications
% (e.g. from rule ISO 19005-2:2011, Clause: 6.2.11.4.2)
% It has only with luatex an effect.
% \item[|Trailer_no_Info|] The \texttt{Info} dictionary
@@ -219,7 +224,7 @@
% it should only contain the \texttt{/ModDate} entry. In
% texlive 2023 the engines pdftex and luatex have primitives
% to suppress the dictionary
-% and l3pdfmeta will make use of it.
+% and l3pdfmeta will make use of it.
% \end{description}
%
% \subsubsection{Tests with values and special handlers}
@@ -357,8 +362,8 @@
% This sets various metadata to values needed by the \LaTeX{}
% regression tests.
% It also sets the seed for random functions.
-% If a current l3backend is used and \cs{c_sys_timestamp_str} is available,
-% the command does not set dates, but
+% If a current l3backend is used and \cs{c_sys_timestamp_str} is available,
+% the command does not set dates, but
% assumes that the environment variable \verb+SOURCE_DATE_EPOCH+ is used.
% \end{function}
%
@@ -468,11 +473,11 @@
%
% \subsubsection{Declarations}
% PDF knows beside standards also a more generic method to declare conformance
-% to some specification by adding a declaration,
+% to some specification by adding a declaration,
% see \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}).
% Such declarations can be added as a simple url which identify the specification or
% with additional details regarding date and credentials. An example would be
-%
+%
% \begin{verbatim}
% \DocumentMetadata{}
% \documentclass{article}
@@ -489,10 +494,10 @@
% \ExplSyntaxOff
% \begin{document}
% text
-% \end{document}
-%
+% \end{document}
+%
% \end{verbatim}
-%
+%
% \subsubsection{Dates}
% \begin{itemize}
% \item
@@ -560,7 +565,7 @@
% The keys |pdfcopyright| and |pdflicenseurl| work similar as in \pkg{hyperxmp}.
% But differently to \pkg{hyperxmp} the code doesn't set the |xmpRights:Marked|
% property, as I have some doubts that one deduce its value simply
-% by checking if the other keys have been used; if needed it can be added by
+% by checking if the other keys have been used; if needed it can be added by
% using one of these settings (true means with copyright, false means public domain).
% \begin{verbatim}
% \AddToDocumentProperties[document]{copyright}{true}
@@ -604,13 +609,13 @@
% \begin{syntax}
% \cs{pdfmeta_xmp_add_declaration:n}\Arg{uri}
% \end{syntax}
-% This add a PDF declaration with the required |conformsTo| property to the XMP metadata.
-% \meta{uri} should not be empty and is a URI specifying
+% This add a PDF declaration with the required |conformsTo| property to the XMP metadata.
+% \meta{uri} should not be empty and is a URI specifying
% the standard or profile referred to by the PDF
% Declaration. If the uri contains a hash, use \cs{c_hash_str} to escape it
% and use the \texttt{e} variant to expand it.
% \end{function}
-%
+%
% \begin{function}{\pdfmeta_xmp_add_declaration:nnnnn,
% \pdfmeta_xmp_add_declaration:ennnn,
% \pdfmeta_xmp_add_declaration:eeenn}
@@ -617,20 +622,20 @@
% \begin{syntax}
% \cs{pdfmeta_xmp_add_declaration:nnnnn}\Arg{uri}\Arg{By}\Arg{Date}\Arg{Credentials}\Arg{Report}
% \end{syntax}
-% This add a PDF declaration to the XMP metadata similar
-% to \cs{pdfmeta_xmp_add_declaration:n}.
-% With \meta{By}, \meta{Date}, \meta{Credentials}, \meta{Report} the optional
-% fields |claimBy| (text), |claimDate| (iso date), |claimCredentials| (text) and
+% This add a PDF declaration to the XMP metadata similar
+% to \cs{pdfmeta_xmp_add_declaration:n}.
+% With \meta{By}, \meta{Date}, \meta{Credentials}, \meta{Report} the optional
+% fields |claimBy| (text), |claimDate| (iso date), |claimCredentials| (text) and
% |claimReport| (uri) of the |claimData| property can be given.
% If \cs{pdfmeta_xmp_add_declaration:nnnnn} is used twice with the same \meta{uri}
-% argument the |claimData| are concatenated. There is no check if the |claimData| are identical.
+% argument the |claimData| are concatenated. There is no check if the |claimData| are identical.
% \end{function}
-%
+%
% The following two commands can be used to extend the schema declarations in
% the XMP metadata. This is for example needed to implement a standard like ZUGferd/Factur X
% for invoices. A schema declaration should be added only once but as this task
% is probably not needed frequently only light guards are there to avoid duplicated entries.
-%
+%
% \begin{function}{\pdfmeta_xmp_schema_new:nnn}
% \begin{syntax}
% \cs{pdfmeta_xmp_schema_new:nnn}\Arg{text}\Arg{prefix}\Arg{uri}
@@ -638,9 +643,9 @@
% \meta{text} is some string describing the schema, e.g. |PDF/A~Identification~Schema|,
% \meta{prefix} is the unique prefix used by the schema. This prefix
% must be declared first with |\pdfmeta_xmp_xmlns_new:nn|. If a schema with this prefix
-% has already been declared, it will currently be ignored with a warning.
+% has already been declared, it will currently be ignored with a warning.
% The \meta{uri} is expanded, so a
-% hash can for example be given as |\c_hash_str|.
+% hash can for example be given as |\c_hash_str|.
% \end{function}
% \begin{function}{\pdfmeta_xmp_property_new:nnnnn}
@@ -649,14 +654,14 @@
% \end{syntax}
% If the new property already exists in the schema
% (as identified by the combination of \meta{schema prefix}
-% and \meta{name} the property is silently ignore.
+% and \meta{name} the property is silently ignore.
% \meta{schema prefix} is the prefix declared with the previous command.
% schema, e.g. |PDF/A~Identification~Schema|,
% \meta{name} is a short string that identifies the property, e.g. |xmpMM| or |year|. It must be
-% unique in the properties of a schema. \meta{type} is e.g. |URI| or |Integer| or |Text|,
-% \meta{category} is e.g. |internal| or |external|, \meta{description} is a free description string.
+% unique in the properties of a schema. \meta{type} is e.g. |URI| or |Integer| or |Text|,
+% \meta{category} is e.g. |internal| or |external|, \meta{description} is a free description string.
% \end{function}
-%
+%
% \end{documentation}
%
% \begin{implementation}
@@ -666,7 +671,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2024-10-27}{0.96n}
+\ProvidesExplPackage{l3pdfmeta}{2024-12-20}{0.96o}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -680,6 +685,15 @@
\msg_new:nnn {pdf }{wrong-pdfversion}
{PDF~version~#1~is~too~#2~for~standard~'#3'.}
% \end{macrocode}
+% Messages for embedded files
+% \begin{macrocode}
+\msg_new:nnn {pdf }{validation-failure}
+ {
+ PDF~standard~validation~failure.\\
+ #1
+ }
+% \end{macrocode}
+%
% \begin{variable}{\l_@@_tmpa_tl,\l_@@_tmpb_tl,\l_@@_tmpa_str,
% \g_@@tmpa_str,\l_@@_tmpa_seq,\l_@@_tmpb_seq}
% \begin{macrocode}
@@ -855,7 +869,7 @@
\pdfmeta_standard_verify:nF { no_CharSet }
{ \__pdf_backend_omit_charset:n {1} }
\pdfmeta_standard_verify:nF { omit_CID }
- { \__pdf_backend_omit_cidset:n {1} }
+ { \__pdf_backend_omit_cidset:n {1} }
\pdfmeta_standard_verify:nnF { min_pdf_version }
{ \pdf_version: }
{ \msg_warning:nneee {pdf}{wrong-pdfversion}
@@ -894,6 +908,7 @@
% \g_@@_standard_pdf/A-3B_prop ,
% \g_@@_standard_pdf/A-3U_prop ,
% \g_@@_standard_pdf/A-4_prop ,
+% \g_@@_standard_pdf/A-4F_prop ,
% }
% \begin{macrocode}
\prop_new:c { g_@@_standard_pdf/A-1B_prop }
@@ -925,7 +940,7 @@
,Catalog_no_OCProperties =
% Rule 6.9-4 The AS key shall not appear in any optional content configuration dictionary.
% actually only starting with A-2 but doesn't harm here either
- ,Catalog_OCProperties_no_AS=
+ ,Catalog_OCProperties_no_AS=
%===============
% Rule 6.6.1-1: PDAction, S == "GoTo" || S == "GoToR" || S == "Thread"
% || S == "URI" || S == "Named" || S == "SubmitForm"
@@ -971,16 +986,20 @@
% embedding files is allowed (with restrictions)
\prop_gremove:cn
{ g_@@_standard_pdf/A-2B_prop }
- { embed_content}
+ { no_embed_content }
\prop_gput:cnn
+ { g_@@_standard_pdf/A-2B_prop }
+ { only_pdfa_embed_content }
+ {}
+\prop_gput:cnn
{ g_@@_standard_pdf/A-2B_prop }{max_pdf_version}{1.7}
\prop_gput:cnn
{ g_@@_standard_pdf/A-2B_prop }{omit_CID}{}
-% OCG layers are allowed (with restrictions)
+% OCG layers are allowed (with restrictions)
\prop_gremove:cn
{ g_@@_standard_pdf/A-2B_prop }
{ Catalog_no_OCProperties }
-
+
%A-2u ==============
\prop_new:c { g_@@_standard_pdf/A-2U_prop }
\prop_gset_eq:cc
@@ -1017,10 +1036,10 @@
{ g_@@_standard_pdf/A-3B_prop }{year}{2012}
\prop_gput:cnn
{ g_@@_standard_pdf/A-3B_prop }{level}{3}
-% embedding files is allowed (with restrictions)
+% embedding files is allowed
\prop_gremove:cn
{ g_@@_standard_pdf/A-3B_prop }
- { embed_content}
+ { only_pdfa_embed_content }
%A-3u ==============
\prop_new:c { g_@@_standard_pdf/A-3U_prop }
\prop_gset_eq:cc
@@ -1062,12 +1081,14 @@
{ g_@@_standard_pdf/A-4_prop }{no_CharSet}{}
\prop_gput:cnn
{ g_@@_standard_pdf/A-4_prop }{Trailer_no_Info}{}
+\prop_gput:cnn
+ { g_@@_standard_pdf/A-4_prop }{only_pdfa_embed_content}{}
\prop_gremove:cn
{ g_@@_standard_pdf/A-4_prop }{conformance}
\prop_gremove:cn
{ g_@@_standard_pdf/A-4_prop }{max_pdf_version}
\prop_gremove:cn
- { g_@@_standard_pdf/A-4_prop }{Catalog_OCProperties_no_AS}
+ { g_@@_standard_pdf/A-4_prop }{Catalog_OCProperties_no_AS}
%A-4f ==============
\prop_new:c { g_@@_standard_pdf/A-4F_prop }
\prop_gset_eq:cc
@@ -1075,15 +1096,18 @@
{ g_@@_standard_pdf/A-4_prop }
\prop_gput:cnn
{ g_@@_standard_pdf/A-4F_prop }{conformance}{F}
-% containsEmbeddedFiles == true ISO 19005-4:2020, Clause: 6.9, Test number: 5
+% containsEmbeddedFiles == true ISO 19005-4:2020, Clause: 6.9, Test number: 5
\prop_gput:cnn
- { g_@@_standard_pdf/A-4F_prop }{Catalog_EmbeddedFiles}{}
+ { g_@@_standard_pdf/A-4F_prop }{Catalog_EmbeddedFiles}{}
+% can contain any file
+\prop_gremove:cn
+ { g_@@_standard_pdf/A-4F_prop }{only_pdfa_embed_content}
% \end{macrocode}
% \end{variable}
%
% \subsubsection{Embedded Files}
-% Standard 4-AF is needed if we add AF files for
-% tagging but it also requires an EmbeddedFiles name tree,
+% Standard 4-AF is needed if we add AF files for
+% tagging but it also requires an EmbeddedFiles name tree,
% so we test at the end if the name tree is empty and add a small readme if
% yes
% \begin{macrocode}
@@ -1092,23 +1116,78 @@
\pdfmeta_standard_verify:nF{Catalog_EmbeddedFiles}
{
\tl_gput_right:Nn\g__kernel_pdfmanagement_end_run_code_tl
- {
+ {
\bool_if:NT \g__pdfmanagement_active_bool
{
\pdfdict_if_empty:nT { g__pdf_Core/Catalog/Names/EmbeddedFiles }
{
- \group_begin:
+ \group_begin:
\pdfdict_put:nne {l_pdffile/Filespec} {Desc}{(note~about~PDF/A-4F)}
\pdfdict_put:nnn { l_pdffile/Filespec }{AFRelationship} { /Unspecified }
- \pdffile_embed_stream:nnN {PDF~standard~A-4F~requires~a~file}{readme.txt}\l_@@_tmpa_tl
- \exp_args:Nne \__pdf_backend_Names_gpush:nn{EmbeddedFiles}{(readme)~\l_@@_tmpa_tl}
+ \pdffile_embed_stream:nnN
+ {The~document~was~declared~to~be~of~type~PDF/A-4f~but~hasn't~any~attachments.~
+ LaTeX~therefore~added~this~dummy~file.}
+ {pdf-A4f.txt}
+ \l_@@_tmpa_tl
+ \exp_args:Nne \__pdf_backend_Names_gpush:nn{EmbeddedFiles}{(pdf-A4f)~\l_@@_tmpa_tl}
\group_end:
}
- }
+ }
}
- }
-}
+ }
+}
% \end{macrocode}
+% Before writing the xml we check if there are embedded files we know of. For A-4 we adjust
+% the standard to A-4F is needed.
+% \begin{macrocode}
+\AddToHook{pdfmeta/xmp}
+ {
+ \pdfmeta_standard_verify:nF{no_embed_content}
+ {
+ \bool_lazy_or:nnT
+ { ! \int_if_zero_p:n { \g_pdffile_embed_pdfa_int } }
+ { ! \int_if_zero_p:n { \g_pdffile_embed_nonpdfa_int } }
+ {
+ \prop_get:NnNT\g_@@_standard_prop { name }\l_@@_tmpa_tl
+ {
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~files~detected.\iow_newline:
+ This~is~not~allowed~in~standard~\l_@@_tmpa_tl
+ }
+ }
+ }
+ }
+ \pdfmeta_standard_verify:nF {only_pdfa_embed_content}
+ {
+ \int_if_zero:nF { \g_pdffile_embed_nonpdfa_int }
+ {
+ \prop_get:NnNT\g_@@_standard_prop { name }\l_@@_tmpa_tl
+ {
+ \str_if_eq:VnTF {\l_@@_tmpa_tl} { pdf/A-4 }
+ {
+ \prop_gset_eq:cc
+ { g_@@_standard_prop }
+ { g_@@_standard_pdf/A-4F_prop }
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~non-PDF~files~detected.\iow_newline:
+ Switching~standard~from~PDF/A-4~to~PDF/A-4F
+ }
+ }
+ {
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~non-PDF~files~detected.\iow_newline:
+ This~is~not~allowed~in~standard~\l_@@_tmpa_tl
+ }
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+%
% \subsubsection{Colorprofiles and Outputintents}
% The following provides a minimum of interface to add a color profile
% and an outputintent need for PDF/A for now. There will be need to extend it later,
@@ -1283,16 +1362,16 @@
\prop_map_inline:Nn \g_@@_outputintents_prop
{
\prop_if_exist:cTF {c_@@_colorprofile_#2}
- {
+ {
\@@_embed_colorprofile:n
{#2}
\@@_write_outputintent:nn
{#2}
{#1}
- }
+ }
{
\msg_warning:nnn{pdfmeta}{colorprofile-undefined}{#2}
- }
+ }
}
}
% \end{macrocode}
@@ -1318,7 +1397,7 @@
{ \pdfmeta_standard_item:n { outputintent_A } }
\l_@@_tmpb_tl
\prop_if_exist:cTF {c_@@_colorprofile_\l_@@_tmpb_tl}
- {
+ {
\exp_args:NV \@@_embed_colorprofile:n \l_@@_tmpb_tl
\prop_map_inline:Nn \g_@@_outputintents_prop
{
@@ -1330,7 +1409,7 @@
}
{
\msg_warning:nne{pdfmeta}{colorprofile-undefined}{\l_@@_tmpb_tl}
- }
+ }
}
}
% \end{macrocode}
@@ -1386,15 +1465,15 @@
{
\pdf_version_compare:NnF < {2.0}
{
- \msg_warning:nneee
+ \msg_warning:nneee
{pdf}{wrong-pdfversion}
- {\pdf_version:}{high}{UA-1}
- }
- }
+ {\pdf_version:}{high}{UA-1}
+ }
+ }
},
% \end{macrocode}
% currently it is not possible to merge requirements - these need some thoughts as
-% every standard has some common keys like the name or the yes.
+% every standard has some common keys like the name or the yes.
% We therefore add some requirements manually.
% \begin{macrocode}
_pdfstandard / UA-2 .code:n =
@@ -1408,22 +1487,22 @@
\@@_xmp_wtpdf_reuse_declaration:
\pdf_version_compare:NnT < {2.0}
{
- \msg_warning:nneee
+ \msg_warning:nneee
{pdf}{wrong-pdfversion}
- {\pdf_version:}{low}{UA-2}
- }
- }
- },
+ {\pdf_version:}{low}{UA-2}
+ }
+ }
+ },
xmp .choice:,
xmp / true .code:n = { \bool_gset_true:N \g_@@_xmp_bool },
xmp / false .code:n = { \bool_gset_false:N \g_@@_xmp_bool},
xmp .default:n = true,
% \end{macrocode}
-% These keys allow to disable or force the wtpdf declarations.
+% These keys allow to disable or force the wtpdf declarations.
% Currently the content can not be changed and once they have been disabled there
% are gone. This will perhaps change.
% \begin{macrocode}
- xmp / wtpdf .code:n =
+ xmp / wtpdf .code:n =
{
\keys_set:nn {@@/xmp}{#1}
},
@@ -1436,13 +1515,13 @@
{
\cs_set_eq:NN \@@_xmp_wtpdf_reuse_declaration: \prg_do_nothing:
},
- accessibility .choice:,
- accessibility / true .code:n = \@@_xmp_wtpdf_accessibility_declaration:,
- accessibility /false .code:n =
+ accessibility .choice:,
+ accessibility / true .code:n = \@@_xmp_wtpdf_accessibility_declaration:,
+ accessibility /false .code:n =
{
\cs_set_eq:NN \@@_xmp_wtpdf_accessibility_declaration: \prg_do_nothing:
- },
- }
+ },
+ }
% \end{macrocode}
% XMP debugging option
% \begin{macrocode}
@@ -1900,7 +1979,7 @@
{
\@@_xmp_add_packet_line_attr:nneV
{rdf}{li}{xml:lang="\l_@@_tmpa_tl" }\l_@@_tmpb_tl
- }
+ }
}
\@@_xmp_add_packet_close:nn{rdf}{#3}
\@@_xmp_add_packet_close:nn {#1}{#2}
@@ -2088,13 +2167,13 @@
\cs_if_exist_use:c {@@_xmp_schema_#2_additions:}
\@@_xmp_add_packet_close:nn{rdf}{li}
}
- }
+ }
}
% \end{macrocode}
% \end{macro}
-%
%
%
+%
% \begin{macro}{\@@_xmp_property_new:nnnnn}
% This adds a property to a schema.
% \begin{macrocode}
@@ -2161,7 +2240,7 @@
% Renditionclass declared by hyperxmp.
% Properties InstanceID and OriginalDocumentID declared by pdfx (pdfx.xmp)
% With the exception of OriginalDocumentID all are already allowed and
-% predefined.
+% predefined.
% \begin{macrocode}
\@@_xmp_schema_new:nnn
{XMP~Media~Management~Schema}
@@ -2194,10 +2273,10 @@
{rev}
{Integer}
{internal}
- {Revision~year~of~standard}
+ {Revision~year~of~standard}
% \end{macrocode}
% \end{macro}
-% \item[pdfuaid] here we need (?) to declare the property
+% \item[pdfuaid] here we need (?) to declare the property
% \enquote{part} and \enquote{rev}.
% \begin{macro}[no-user-doc]{pdfuaid~(schema)}
% \begin{macrocode}
@@ -2216,7 +2295,7 @@
{rev}
{Integer}
{internal}
- {Revision~of~ISO~14289~standard}
+ {Revision~of~ISO~14289~standard}
% \end{macrocode}
% \end{macro}
% \item[pdfx] According to [1] not an allowed schema, but it seems
@@ -2391,22 +2470,22 @@
% \end{macrocode}
% \end{macro}
% \item[jav]: currently ignored
-%
-% \item[declarations] The PDF Declarations mechanism allows creation and
-% editing software to declare, via a PDF Declaration, a PDF file to be in
-% conformance with a 3rd party specification or profile
+%
+% \item[declarations] The PDF Declarations mechanism allows creation and
+% editing software to declare, via a PDF Declaration, a PDF file to be in
+% conformance with a 3rd party specification or profile
% that may not be related to PDF technology. Their specification is for example
% described in \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}.
-%
+%
% If declarations are added to the XMP-metadata they need (for pdf/A compliance) a
% schema declaration. We do not add it by default but define here a command to enable
% it. (This can be done in the document preamble as xmp is built only at the end.)
-%
-%
+%
+%
% \begin{macrocode}
\cs_new_protected:Npn \@@_xmp_schema_enable_pdfd:
{
- \@@_xmp_xmlns_new:nn {pdfd}{http://pdfa.org/declarations/}
+ \@@_xmp_xmlns_new:nn {pdfd}{http://pdfa.org/declarations/}
\@@_xmp_schema_new:nnn
{PDF~Declarations~Schema}
{pdfd}
@@ -2416,7 +2495,7 @@
{declarations}
{Bag~declaration}
{external}
- {An~unordered~array~of~PDF~Declaration~entries,~where~each~PDF~Declaration~representing~a~statement~of~conformance~with~ an~identified~external~standard~or~profile,~along~with~optional~information~identifying~the~nature~of~the~claim.}
+ {An~unordered~array~of~PDF~Declaration~entries,~where~each~PDF~Declaration~representing~a~statement~of~conformance~with~ an~identified~external~standard~or~profile,~along~with~optional~information~identifying~the~nature~of~the~claim.}
% \end{macrocode}
% the values are complicated so we use the additions: method to add them.
% \begin{macrocode}
@@ -2459,14 +2538,14 @@
{An~unordered~array~of~claim~data,~where~each~claim~identifies~the~nature~of~the~claim.}
\@@_xmp_add_packet_close:nn{rdf}{Seq}
\@@_xmp_add_packet_close:nn{pdfaType}{field}
- \@@_xmp_add_packet_close:nn{rdf}{li}
+ \@@_xmp_add_packet_close:nn{rdf}{li}
\@@_xmp_add_packet_close:nn{rdf}{Seq}
\@@_xmp_add_packet_close:nn{pdfaSchema}{valueType}
- }
+ }
% \end{macrocode}
% the schema should be added only once so disable it after use:
% \begin{macrocode}
- \cs_gset_eq:NN \@@_xmp_schema_enable_pdfd: \prg_do_nothing:
+ \cs_gset_eq:NN \@@_xmp_schema_enable_pdfd: \prg_do_nothing:
}
% \end{macrocode}
%
@@ -2564,19 +2643,19 @@
{
\@@_xmp_add_packet_line:nne {pdfaid}{part}{\pdfmeta_standard_item:n{level}}
\@@_xmp_add_packet_line:nne
- {pdfaid}{conformance}{\pdfmeta_standard_item:n{conformance}}
- \int_compare:nNnTF {0\pdfmeta_standard_item:n{level}}<{4}
+ {pdfaid}{conformance}{\pdfmeta_standard_item:n{conformance}}
+ \int_compare:nNnTF {0\pdfmeta_standard_item:n{level}}<{4}
{\@@_xmp_add_packet_line:nne {pdfaid}{year} {\pdfmeta_standard_item:n{year}}}
{\@@_xmp_add_packet_line:nne {pdfaid}{rev} {\pdfmeta_standard_item:n{year}}}
\@@_xmp_add_packet_line:nne
{pdfxid}{GTS_PDFXVersion}{\GetDocumentProperties{document/pdfstandard-X}}
- \pdfmanagement_get_documentproperties:nNT {document/pdfstandard-UA}\l_@@_tmpa_tl
- {
+ \pdfmanagement_get_documentproperties:nNT {document/pdfstandard-UA}\l_@@_tmpa_tl
+ {
\@@_xmp_add_packet_line:nne
- {pdfuaid}{part}{\exp_last_unbraced:No\use_i:nn \l_@@_tmpa_tl}
+ {pdfuaid}{part}{\exp_last_unbraced:No\use_i:nn \l_@@_tmpa_tl}
\@@_xmp_add_packet_line:nne
- {pdfuaid}{rev}{\exp_last_unbraced:No\use_ii:nn \l_@@_tmpa_tl}
- }
+ {pdfuaid}{rev}{\exp_last_unbraced:No\use_ii:nn \l_@@_tmpa_tl}
+ }
}
% \end{macrocode}
% \end{macro}
@@ -2583,7 +2662,7 @@
%
% \subsection{Declarations}
% See \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}
-%
+%
% \begin{variable}{\g_@@_xmp_pdfd_data_prop}
% This holds the data for declarations.
% \begin{macrocode}
@@ -2598,11 +2677,11 @@
\prop_if_empty:NF\g_@@_xmp_pdfd_data_prop
{
\@@_xmp_add_packet_open:nn{pdfd}{declarations}
- \@@_xmp_add_packet_open:nn{rdf}{Bag}
+ \@@_xmp_add_packet_open:nn{rdf}{Bag}
\prop_map_inline:Nn \g_@@_xmp_pdfd_data_prop
{
\@@_xmp_build_pdfd_claim:nn{##1}{##2}
- }
+ }
\@@_xmp_add_packet_close:nn{rdf}{Bag}
\@@_xmp_add_packet_close:nn{pdfd}{declarations}
}
@@ -2616,20 +2695,20 @@
\cs_new_protected:Npn \@@_xmp_build_pdfd_claim:nn #1#2
{
\@@_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"}
- \@@_xmp_add_packet_line:nnn{pdfd}{conformsTo}{#1}
+ \@@_xmp_add_packet_line:nnn{pdfd}{conformsTo}{#1}
\tl_if_empty:nF {#2}
{
- \@@_xmp_add_packet_open:nn{pdfd}{claimData}
- \@@_xmp_add_packet_open:nn{rdf}{Bag}
+ \@@_xmp_add_packet_open:nn{pdfd}{claimData}
+ \@@_xmp_add_packet_open:nn{rdf}{Bag}
#2
- \@@_xmp_add_packet_close:nn{rdf}{Bag}
- \@@_xmp_add_packet_close:nn{pdfd}{claimData}
+ \@@_xmp_add_packet_close:nn{rdf}{Bag}
+ \@@_xmp_add_packet_close:nn{pdfd}{claimData}
}
- \@@_xmp_add_packet_close:nn{rdf}{li}
- }
+ \@@_xmp_add_packet_close:nn{rdf}{li}
+ }
% \end{macrocode}
% \end{macro}
-%
+%
% \subsection{Photoshop}
% \begin{macro}{\@@_xmp_build_photoshop:}
% \begin{macrocode}
@@ -2808,11 +2887,11 @@
{Marked}
{
\str_case:en {\GetDocumentProperties{document/copyright}}
- {
+ {
{true}{True}
{false}{False}
}
- }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -2982,12 +3061,13 @@
% We don't try to get the byte count. So we can put everything
% in the |shipout/lastpage| hook
% \begin{macrocode}
+\hook_new:n { pdfmeta/xmp }
\AddToHook{shipout/lastpage}
{
\bool_if:NT\g_@@_xmp_bool
{
- \str_if_exist:NTF\c_sys_timestamp_str
- {
+ \str_if_exist:NTF\c_sys_timestamp_str
+ {
\tl_set_eq:NN \l_@@_xmp_currentdate_tl \c_sys_timestamp_str
}
{
@@ -2994,6 +3074,7 @@
\file_get_timestamp:nN{\jobname.log}\l_@@_xmp_currentdate_tl
}
\@@_xmp_date_split:VN\l_@@_xmp_currentdate_tl\l_@@_xmp_currentdate_seq
+ \hook_use:n { pdfmeta/xmp }
\@@_xmp_build_packet:
\exp_args:No
\__pdf_backend_metadata_stream:n {\g_@@_xmp_packet_tl}
@@ -3036,13 +3117,13 @@
\cs_set_eq:NN \pdfmeta_xmp_schema_new:nnn \@@_xmp_schema_new:nnn
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\pdfmeta_xmp_property_new:nnnnn}
% \begin{macrocode}
\cs_set_eq:NN \pdfmeta_xmp_property_new:nnnnn \@@_xmp_property_new:nnnnn
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\pdfmeta_xmp_add_declaration:n,\pdfmeta_xmp_add_declaration:e}
% \begin{macrocode}
\cs_new_protected:Npn \pdfmeta_xmp_add_declaration:n #1 %conformsTo uri
@@ -3062,12 +3143,12 @@
\tl_set:Nn \l_@@_tmpa_tl
{
\@@_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"}
- \@@_xmp_add_packet_line:nnn{pdfd}{claimBy}{#2}
- \@@_xmp_add_packet_line:nnn{pdfd}{claimDate}{#3}
- \@@_xmp_add_packet_line:nnn{pdfd}{claimCredentials}{#4}
- \@@_xmp_add_packet_line:nnn{pdfd}{claimReport}{#5}
- \@@_xmp_add_packet_close:nn{rdf}{li}
- }
+ \@@_xmp_add_packet_line:nnn{pdfd}{claimBy}{#2}
+ \@@_xmp_add_packet_line:nnn{pdfd}{claimDate}{#3}
+ \@@_xmp_add_packet_line:nnn{pdfd}{claimCredentials}{#4}
+ \@@_xmp_add_packet_line:nnn{pdfd}{claimReport}{#5}
+ \@@_xmp_add_packet_close:nn{rdf}{li}
+ }
\prop_get:NnNT \g_@@_xmp_pdfd_data_prop {#1}\l_@@_tmpb_tl
{
\tl_concat:NNN \l_@@_tmpa_tl \l_@@_tmpa_tl \l_@@_tmpb_tl
@@ -3075,12 +3156,12 @@
\prop_gput:Nno\g_@@_xmp_pdfd_data_prop{#1}
{
\l_@@_tmpa_tl
- }
+ }
}
\cs_generate_variant:Nn\pdfmeta_xmp_add_declaration:nnnnn {e,eee}
% \end{macrocode}
% \end{macro}
-%
+%
% \subsection{Default declarations}
% The two declarations will be required quite often with ua-2, so we
% provide some interface.
@@ -3099,7 +3180,7 @@
{http://pdfa.org/declarations/wtpdf\c_hash_str reuse1.0}
{LaTeX~Project}
{\@@_xmp_iso_today:}{}{}
- }
+ }
\cs_new_protected:Npn \@@_xmp_wtpdf_accessibility_declaration:
{
\pdfmeta_xmp_add_declaration:ennnn
@@ -3106,10 +3187,10 @@
{http://pdfa.org/declarations/wtpdf\c_hash_str accessibility1.0}
{LaTeX~Project}
{\@@_xmp_iso_today:}{}{}
- }
+ }
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -238,7 +238,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2024-10-27}{0.96n}
+\ProvidesExplPackage{l3pdftools}{2024-12-20}{0.96o}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -132,7 +132,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2024-10-27}{0.96n}
+\ProvidesExplPackage{l3pdfxform}{2024-12-20}{0.96o}
{command to create xforms (beta)---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -55,7 +55,7 @@
% \section{\pkg{ltdocinit} documentation}
% This small module defined \cs{DocumentMetadata} but the definition
% has been moved to latex-lab. The documentation can be found in
-% \texttt{documentmetadata-support-doc-.pdf}
+% \texttt{documentmetadata-support-doc.pdf}
%
% \cs{DocumentMetadata} is also used to
% activate the new PDF management code and it loads
@@ -81,72 +81,20 @@
% This is an older alias for \cs{DocumentMetadata}
% \end{function}
%
-% Additionally to the keys described in \texttt{documentmetadata-support-doc-.pdf}
+% Additionally to the keys described in \texttt{documentmetadata-support-doc.pdf}
% the following keys/values are implemented
%
% \begin{description}
%
-% \item[\texttt{pdfstandard}] Choice key to set the pdf standard.
-%
-% Starting with version 0.95s it is also possible to use the values
-% |X-4|, |X-4p|, |X-5g|, |X-5n|, |X-5pg|, |X-6|, |X-6n|, |X-6p|, |UA-1|, for
-% a PDF/X and PDF/UA standard. These keys set \emph{only} the relevant
-% XMP-metadata. In version 0.95z support for |UA-2| has been added but
-% note that |UA-2| hasn't been released yet. It should be used only together
-% with pdf version 2.0.
-%
-% Beside this |A-1b|, |A-2a|, |A-2b|, |A-2u|, |A-3a|, |A-3b|, |A-3u| and |A-4|
-% are accepted as values for A-standards. The casing is irrelevant, |a-1b| works too.
-% Note that using these
-% key doesn't mean that the document actually follows the standard. \LaTeX{}
-% can neither ensure nor check all requirements of a standard, and not everything
-% it can do theoretically has already been implemented.
-% For A-standard a color profile is included and the
-% \texttt{/OutputIntent} is set and javascript action in hyperref are suppressed.
-% The |u| variants do not force unicode,
-% but they will pass the information to hyperref. The |a| variants
-% do \emph{not} enforce (or even test) a tagged pdf yet.
-% More information can be found in the documentation
-% of \pkg{l3pdfmeta}.
-%
-% |pdfstandard| can be used more than once to set overlapping standards, e.g:\\
-% |pdfstandard=A-2b,pdfstandard=X-4,pdfstandard=UA-1|
-%
-% \item[\texttt{xmp}] A boolean, if set to false no XMP metadata are added to the PDF.
-% The default is true. Details are described in the documentation of \pkg{l3pdfmeta}.
-%
% \item[\texttt{testphase}] This key is used to load testphase code. The values it accepts
% and their effect will change over time, when testphase packages are added or
-% removed or when the code is moved into the kernel. New value here are
+% removed or when the code is moved into the kernel. A new value here is
% \begin{description}
-% \item[\texttt{new-or-1}] This patches a few commands related
-% to the output routing. They are needed for the tagging
-% of paragraphs, for the tagging of header and footer and
-% to allow the PDF management to insert code which avoids that
-% links happening at page breaks spills into the header and footer.
-% This code is also loaded be the following values.
-% \item[\texttt{new-or}] This loads more changes to the output routine required for the
-% tagging. It is not compatible with every class! The code is also loaded by the
-% \texttt{phase-II} value.
+% \item[latest] This loads all existing modules.
% \end{description}
+%
% The |testphase| key can only be used in the first \cs{DocumentMetadata}.
%
-% \item[\texttt{debug}] This key activates some debug options. It takes a list of key-values
-% as value. Currently the following keys are known:
-% \begin{description}
-% \item[\texttt{para}] with the default and only value |show|. It will activate the |paratagging-show|
-% option of \pkg{tagpdf},
-% \item[\texttt{log}] with the values as described in the documentation \pkg{tagpdf},
-% \item[\texttt{uncompress}] which does the same as |uncompress| as main key
-% \item[\texttt{pdfmanagement}] a boolean which allows to deactivate the pdfmanagement.
-% This should only be done for debugging!
-% \item[\texttt{firstaidoff}] This accepts a comma lists of keywords and disables the patches
-% related to them. More information can be found in the documentation of
-% \pkg{pdfmanagement-firstaid}.
-% \item[\texttt{xmp-export}] This will export the XMP-metadata to a file \verb+\jobname.xmpi+.
-% with \texttt{debug=\{xmp-export=filename\}} the file name can be changed.
-% More information can be found in the documentation of \pkg{l3pdfmeta}.
-% \end{description}
% \end{description}
%
% \subsection{Container for document properties}
@@ -221,7 +169,7 @@
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2024-10-27}{0.96n}
+\ProvidesExplPackage{ltdocinit}{2024-12-20}{0.96o}
{Initialize document metadata}
%</header>
% \end{macrocode}
@@ -246,6 +194,27 @@
{ \tl_new:N \g_@@_testphase_tl }
% \end{macrocode}
% \end{variable}
+% \subsection{New, temporary testphase keys}
+% TODO: remove after 2025-06-01 release
+%
+% \begin{macrocode}
+\msg_new:nnn { meta } { testphase-latest-loading-temp }
+ {
+ Loading~testphase~modules\\
+ #1
+ }
+\keys_define:nn { document / metadata }
+ {
+ ,testphase / latest .code:n =
+ {
+ \keys_set:nn
+ {document / metadata}
+ {testphase={phase-III,title,table,math,firstaid}}
+ \msg_note:nnn { meta } { testphase-latest-loading-temp }
+ { phase-III,~title,~table,~math,~firstaid }
+ }
+ }
+% \end{macrocode}
% \subsection{\cs{DeclareDocumentMetadata}}
% \cs{DocumentMetadata} is defined by the kernel.
% We only define the older alias \cs{DeclareDocumentMetadata}
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -63,7 +63,7 @@
% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2024-10-27}{0.96n}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2024-12-20}{0.96o}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96n, released 2024-10-27}
+% \date{Version 0.96o, released 2024-12-20}
%
% \maketitle
% \begin{documentation}
@@ -394,7 +394,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2024-10-27}{0.96n}
+\ProvidesExplPackage{pdfmanagement-testphase}{2024-12-20}{0.96o}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl at t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -422,7 +422,7 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-10-27}{0.96n}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-12-20}{0.96o}
{PDF~management~code~(testphase)}
% \end{macrocode}
% We define a boolean for the new delayed shipout. This is temporary. At some
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty 2024-12-21 20:55:20 UTC (rev 73181)
@@ -24,7 +24,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2024-10-27 v0.96n
+\ProvidesPackage{color-ltx}[2024-12-20 v0.96o
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)]
\edef\Gin at codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty 2024-12-21 20:55:20 UTC (rev 73181)
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2024-10-27}{0.96n}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2024-12-20}{0.96o}
{temporary patches for the colorspace package to test pdfresource management ... UF}
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def 2024-12-21 20:55:20 UTC (rev 73181)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: hyperref-generic.dtx
-\ProvidesFile{hgeneric-testphase.def}[2024-10-27 v0.96n %
+\ProvidesFile{hgeneric-testphase.def}[2024-12-20 v0.96o %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -526,6 +526,8 @@
{ Go~to~destination~#1 }
{ \l__hyp_text_enc_info_print_tl }
\l__hyp_link_Contents_tl
+ \pdfannot_dict_put:nne {link/GoTo}{Contents}
+ {\l__hyp_link_Contents_tl}
}
\socket_new_plug:nnn {hyp/link/URI/Contents}{default}
{
@@ -533,6 +535,8 @@
{ #1 }
{ \l__hyp_text_enc_info_print_tl }
\l__hyp_link_Contents_tl
+ \pdfannot_dict_put:nne {link/URI}{Contents}
+ {\l__hyp_link_Contents_tl}
}
\socket_assign_plug:nn{hyp/link/GoTo/Contents}{default}
\socket_assign_plug:nn{hyp/link/URI/Contents}{default}
@@ -726,8 +730,6 @@
\group_begin:
\tl_set:Nn \l_hyp_current_dest_name_tl {#2}
\socket_use:nnn{hyp/link/GoTo/Contents}{#2}{#3}
- \pdfannot_dict_put:nne {link/GoTo}{Contents}
- {\l__hyp_link_Contents_tl}
\hook_use:n {hyp/link/#1}
\__hyp_link_goto_begin:nw {#2}#3\Hy at xspace@end
\__hyp_link_goto_end:
@@ -751,6 +753,7 @@
\Hy at VerboseLinkStart{#1}{#2}% only for debug
\group_begin:
\tl_set:Nn \l_hyp_current_dest_name_tl {#2}
+ \socket_use:nnn{hyp/link/GoTo/Contents}{#2}{}
\hook_use:n {hyp/link/#1}
\__hyp_link_goto_begin:nw {#2}
}
@@ -798,7 +801,6 @@
\pdfdict_put:nnn{l_hyp/annot/A/URI}{IsMap}{true}
}
\socket_use:nn{hyp/link/URI/Contents}{#2}
- \pdfannot_dict_put:nne {link/URI}{Contents}{\l__hyp_link_Contents_tl}
\cs_set_eq:NN \# \c_hash_str
\cs_set_eq:NN \% \c_percent_str
\Hy at safe@activestrue
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def 2024-12-21 20:55:20 UTC (rev 73181)
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvipdfmx.def}{2024-10-27}{}
+ {l3backend-testphase-dvipdfmx.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
\cs_generate_variant:Nn \__kernel_backend_literal:n { e }
\cs_generate_variant:Nn \__pdf_backend:n { e }
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def 2024-12-21 20:55:20 UTC (rev 73181)
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvips.def}{2024-10-27}{}
+ {l3backend-testphase-dvips.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
\cs_generate_variant:Nn \__kernel_backend_postscript:n { e }
\cs_generate_variant:Nn \__pdf_backend_pdfmark:n { e }
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def 2024-12-21 20:55:20 UTC (rev 73181)
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvisvgm.def}{2024-10-27}{}
+ {l3backend-testphase-dvisvgm.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
\bool_if:NT \l__pdfmanagement_delayed_shipout_bool
{
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def 2024-12-21 20:55:20 UTC (rev 73181)
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-luatex.def}{2024-10-27}{}
+ {l3backend-testphase-luatex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
\cs_generate_variant:Nn \__kernel_backend_literal_page:n { e }
\bool_if:NT \l__pdfmanagement_delayed_shipout_bool
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def 2024-12-21 20:55:20 UTC (rev 73181)
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-pdftex.def}{2024-10-27}{}
+ {l3backend-testphase-pdftex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
\cs_generate_variant:Nn \__kernel_backend_literal_page:n { e }
\bool_if:NT \l__pdfmanagement_delayed_shipout_bool
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def 2024-12-21 20:55:20 UTC (rev 73181)
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-xetex.def}{2024-10-27}{}
+ {l3backend-testphase-xetex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
\cs_generate_variant:Nn \__kernel_backend_literal:n { e }
\cs_generate_variant:Nn \__pdf_backend:n { e }
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty 2024-12-21 20:55:20 UTC (rev 73181)
@@ -27,7 +27,7 @@
%% File: l3pdffield.dtx
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2024-10-27}{0.96n}%
+\ProvidesExplPackage{l3pdffield-testphase}{2024-12-20}{0.96o}%
{form fields}
\csname HyField at NeedAppearancesfalse\endcsname % suppress NeedAppearances
\str_new:N \l__pdffield_tmpa_str
@@ -1016,7 +1016,7 @@
{
\__pdffield_field:n { __pdffield/checkbox/#1 }
}
- \keys_set:nn {pdffield}{parent=__pdffield/checkbox/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/checkbox/#1}}
}
\cs_generate_variant:Nn \__pdffield_checkbox_field:n {V}
\cs_new_protected:Npn \__pdffield_checkbox:n #1
@@ -1215,7 +1215,7 @@
}
}
}
- \keys_set:nn {pdffield}{parent=__pdffield/radio/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/radio/#1}}
}
\cs_generate_variant:Nn \__pdffield_radio_field:n {V}
\cs_new_protected:Npn \__pdffield_radio:n #1
@@ -1359,7 +1359,7 @@
{
\__pdffield_field:n { __pdffield/textfield/#1 }
}
- \keys_set:nn {pdffield}{parent=__pdffield/textfield/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/textfield/#1}}
}
\cs_generate_variant:Nn \__pdffield_textfield_field:n {V}
\cs_new_protected:Npn \__pdffield_textfield:n #1
@@ -1699,7 +1699,7 @@
{
\__pdffield_field:n { __pdffield/pushbutton/#1 }
}
- \keys_set:nn {pdffield}{parent=__pdffield/pushbutton/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/pushbutton/#1}}
}
\cs_generate_variant:Nn \__pdffield_pushbutton_field:n {V}
\cs_new_protected:Npn \__pdffield_pushbutton:n #1
@@ -1809,7 +1809,7 @@
}
\__pdffield_field:n { __pdffield/choice/#1 }
}
- \keys_set:nn {pdffield}{parent=__pdffield/choice/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/choice/#1}}
}
\cs_generate_variant:Nn \__pdffield_choice_field:n {V}
\cs_new_protected:Npn \__pdffield_choice:n #1
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty 2024-12-21 20:55:20 UTC (rev 73181)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-firstaid.dtx
-\ProvidesExplPackage{pdfmanagement-firstaid}{2024-10-27}{0.96n}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2024-12-20}{0.96o}
{LaTeX PDF management testphase bundle / firstaid-patches}
\clist_map_inline:nn
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx 2024-12-21 20:55:20 UTC (rev 73181)
@@ -27,7 +27,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-testphase.dtx
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-10-27}{0.96n}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-12-20}{0.96o}
{PDF~management~code~(testphase)}
\bool_new:N\l__pdfmanagement_delayed_shipout_bool
\msg_new:nnn {pdfmanagement}{delayed-shipout}
@@ -1038,6 +1038,22 @@
{ \clist_new:N \g__pdfmanagement_firstaidoff_clist }
\tl_if_exist:NF \g__pdfmanagement_testphase_tl
{ \tl_new:N \g__pdfmanagement_testphase_tl }
+\msg_new:nnn { meta } { testphase-latest-loading-temp }
+ {
+ Loading~testphase~modules\\
+ #1
+ }
+\keys_define:nn { document / metadata }
+ {
+ ,testphase / latest .code:n =
+ {
+ \keys_set:nn
+ {document / metadata}
+ {testphase={phase-III,title,table,math,firstaid}}
+ \msg_note:nnn { meta } { testphase-latest-loading-temp }
+ { phase-III,~title,~table,~math,~firstaid }
+ }
+ }
\NewCommandCopy\DeclareDocumentMetadata\DocumentMetadata
\prop_new:N \g__pdfmanagement_documentproperties_prop %
\NewDocumentCommand\AddToDocumentProperties{O{\@currname}mm}
@@ -1324,6 +1340,11 @@
\msg_new:nnn {pdf }{unknown-standard}{The~standard~'#1'~is~unknown~and~has~been~ignored}
\msg_new:nnn {pdf }{wrong-pdfversion}
{PDF~version~#1~is~too~#2~for~standard~'#3'.}
+\msg_new:nnn {pdf }{validation-failure}
+ {
+ PDF~standard~validation~failure.\\
+ #1
+ }
\tl_new:N \l__pdfmeta_tmpa_tl
\tl_new:N \l__pdfmeta_tmpb_tl
\str_new:N \l__pdfmeta_tmpa_str
@@ -1518,8 +1539,12 @@
{ g__pdfmeta_standard_pdf/A-2B_prop }{level}{2}
\prop_gremove:cn
{ g__pdfmeta_standard_pdf/A-2B_prop }
- { embed_content}
+ { no_embed_content }
\prop_gput:cnn
+ { g__pdfmeta_standard_pdf/A-2B_prop }
+ { only_pdfa_embed_content }
+ {}
+\prop_gput:cnn
{ g__pdfmeta_standard_pdf/A-2B_prop }{max_pdf_version}{1.7}
\prop_gput:cnn
{ g__pdfmeta_standard_pdf/A-2B_prop }{omit_CID}{}
@@ -1562,7 +1587,7 @@
{ g__pdfmeta_standard_pdf/A-3B_prop }{level}{3}
\prop_gremove:cn
{ g__pdfmeta_standard_pdf/A-3B_prop }
- { embed_content}
+ { only_pdfa_embed_content }
\prop_new:c { g__pdfmeta_standard_pdf/A-3U_prop }
\prop_gset_eq:cc
{ g__pdfmeta_standard_pdf/A-3U_prop }
@@ -1601,6 +1626,8 @@
{ g__pdfmeta_standard_pdf/A-4_prop }{no_CharSet}{}
\prop_gput:cnn
{ g__pdfmeta_standard_pdf/A-4_prop }{Trailer_no_Info}{}
+\prop_gput:cnn
+ { g__pdfmeta_standard_pdf/A-4_prop }{only_pdfa_embed_content}{}
\prop_gremove:cn
{ g__pdfmeta_standard_pdf/A-4_prop }{conformance}
\prop_gremove:cn
@@ -1615,6 +1642,8 @@
{ g__pdfmeta_standard_pdf/A-4F_prop }{conformance}{F}
\prop_gput:cnn
{ g__pdfmeta_standard_pdf/A-4F_prop }{Catalog_EmbeddedFiles}{}
+\prop_gremove:cn
+ { g__pdfmeta_standard_pdf/A-4F_prop }{only_pdfa_embed_content}
\AddToHook{begindocument/end}
{
\pdfmeta_standard_verify:nF{Catalog_EmbeddedFiles}
@@ -1628,8 +1657,12 @@
\group_begin:
\pdfdict_put:nne {l_pdffile/Filespec} {Desc}{(note~about~PDF/A-4F)}
\pdfdict_put:nnn { l_pdffile/Filespec }{AFRelationship} { /Unspecified }
- \pdffile_embed_stream:nnN {PDF~standard~A-4F~requires~a~file}{readme.txt}\l__pdfmeta_tmpa_tl
- \exp_args:Nne \__pdf_backend_Names_gpush:nn{EmbeddedFiles}{(readme)~\l__pdfmeta_tmpa_tl}
+ \pdffile_embed_stream:nnN
+ {The~document~was~declared~to~be~of~type~PDF/A-4f~but~hasn't~any~attachments.~
+ LaTeX~therefore~added~this~dummy~file.}
+ {pdf-A4f.txt}
+ \l__pdfmeta_tmpa_tl
+ \exp_args:Nne \__pdf_backend_Names_gpush:nn{EmbeddedFiles}{(pdf-A4f)~\l__pdfmeta_tmpa_tl}
\group_end:
}
}
@@ -1636,6 +1669,52 @@
}
}
}
+\AddToHook{pdfmeta/xmp}
+ {
+ \pdfmeta_standard_verify:nF{no_embed_content}
+ {
+ \bool_lazy_or:nnT
+ { ! \int_if_zero_p:n { \g_pdffile_embed_pdfa_int } }
+ { ! \int_if_zero_p:n { \g_pdffile_embed_nonpdfa_int } }
+ {
+ \prop_get:NnNT\g__pdfmeta_standard_prop { name }\l__pdfmeta_tmpa_tl
+ {
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~files~detected.\iow_newline:
+ This~is~not~allowed~in~standard~\l__pdfmeta_tmpa_tl
+ }
+ }
+ }
+ }
+ \pdfmeta_standard_verify:nF {only_pdfa_embed_content}
+ {
+ \int_if_zero:nF { \g_pdffile_embed_nonpdfa_int }
+ {
+ \prop_get:NnNT\g__pdfmeta_standard_prop { name }\l__pdfmeta_tmpa_tl
+ {
+ \str_if_eq:VnTF {\l__pdfmeta_tmpa_tl} { pdf/A-4 }
+ {
+ \prop_gset_eq:cc
+ { g__pdfmeta_standard_prop }
+ { g__pdfmeta_standard_pdf/A-4F_prop }
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~non-PDF~files~detected.\iow_newline:
+ Switching~standard~from~PDF/A-4~to~PDF/A-4F
+ }
+ }
+ {
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~non-PDF~files~detected.\iow_newline:
+ This~is~not~allowed~in~standard~\l__pdfmeta_tmpa_tl
+ }
+ }
+ }
+ }
+ }
+ }
\prop_new:N \g__pdfmeta_outputintents_prop
\keys_define:nn { document / metadata }
{
@@ -2828,6 +2907,7 @@
\g__pdfmeta_xmp_user_packet_tl
\int_set:Nn \l__pdfmeta_xmp_indent_int {3}
}
+\hook_new:n { pdfmeta/xmp }
\AddToHook{shipout/lastpage}
{
\bool_if:NT\g__pdfmeta_xmp_bool
@@ -2840,6 +2920,7 @@
\file_get_timestamp:nN{\jobname.log}\l__pdfmeta_xmp_currentdate_tl
}
\__pdfmeta_xmp_date_split:VN\l__pdfmeta_xmp_currentdate_tl\l__pdfmeta_xmp_currentdate_seq
+ \hook_use:n { pdfmeta/xmp }
\__pdfmeta_xmp_build_packet:
\exp_args:No
\__pdf_backend_metadata_stream:n {\g__pdfmeta_xmp_packet_tl}
@@ -3123,6 +3204,8 @@
,.sty = text/plain
,.xml = application/xml
}
+\int_new:N\g_pdffile_embed_pdfa_int
+\int_new:N\g_pdffile_embed_nonpdfa_int
\str_new:N \l_pdffile_source_name_str
\pdfdict_new:n { l_pdffile }
\pdfdict_put:nnn { l_pdffile }{Type}{/EmbeddedFile}
@@ -3159,7 +3242,7 @@
\prop_map_function:NN {\g_pdffile_embed_prop} \msg_show_item:nn
}
}
-\cs_new_protected:Npn \__pdffile_mimetype_set:nN #1 #2
+\cs_new_protected:Npn \__pdffile_mimetype_set:nNN #1 #2 #3
{
\file_parse_full_name:nNNN
{#1}
@@ -3166,27 +3249,35 @@
\l__pdffile_tmpa_str %unused
\l__pdffile_tmpb_str %unused
\l__pdffile_ext_str
- %check if Subtype has been set
- \pdfdict_get:nnN { l_pdffile}{Subtype}\l__pdffile_tmpa_tl
- %if not look up in the prop:
- \quark_if_no_value:NT \l__pdffile_tmpa_tl
+ %check if Subtype has been set
+ \pdfdict_get:nnN { l_pdffile}{Subtype}\l__pdffile_tmpa_tl
+ %if not look up in the prop:
+ \quark_if_no_value:NT \l__pdffile_tmpa_tl
+ {
+ \prop_get:NVNTF
+ \g_pdffile_mimetypes_prop
+ \l__pdffile_ext_str
+ \l__pdffile_tmpb_tl
{
- \prop_get:NVNTF
- \g_pdffile_mimetypes_prop
- \l__pdffile_ext_str
- \l__pdffile_tmpb_tl
- {
- \tl_set:Ne #2 {/Subtype~\pdf_name_from_unicode_e:V \l__pdffile_tmpb_tl}
- }
- {
- \msg_warning:nne { pdffile }{ mimetype-missing} {#1}
- \tl_clear:N #2
- }
+ \tl_set:Ne #2 {/Subtype~\pdf_name_from_unicode_e:V \l__pdffile_tmpb_tl}
}
- }
+ {
+ \msg_warning:nne { pdffile }{ mimetype-missing} {#1}
+ \tl_clear:N #2
+ }
+ }
+ \tl_set_eq:NN #3 \l__pdffile_ext_str
+ }
-\cs_generate_variant:Nn \__pdffile_mimetype_set:nN {VN}
+\cs_generate_variant:Nn \__pdffile_mimetype_set:nNN {VNN}
+\cs_new_protected:Npn \__pdffile_count_embed:N #1
+ {
+ \str_if_eq:VnTF #1 {.pdf}
+ {\int_gincr:N \g_pdffile_embed_pdfa_int }
+ {\int_gincr:N \g_pdffile_embed_nonpdfa_int }
+ }
+
\cs_new_protected:Npn \__pdffile_fstream_write:nN #1 #2
{
\pdf_object_unnamed_write:ne { fstream }
@@ -3298,9 +3389,11 @@
{
\file_get_full_name:nNTF {#1} \l_pdffile_source_name_str
{
- \__pdffile_mimetype_set:VN
+ \__pdffile_mimetype_set:VNN
\l_pdffile_source_name_str
\l__pdffile_automimetype_tl
+ \l__pdffile_tmpa_tl
+ \__pdffile_count_embed:N \l__pdffile_tmpa_tl
\__pdffile_fstream_write:VN
\l_pdffile_source_name_str
\l__pdffile_automimetype_tl
@@ -3358,8 +3451,9 @@
{ #3 }
{{stream}{}{\tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}}}}
\tl_if_blank:nTF {#2}
- { \__pdffile_mimetype_set:nN {stream.txt}\l__pdffile_automimetype_tl}
- { \__pdffile_mimetype_set:nN { #2 } \l__pdffile_automimetype_tl }
+ { \__pdffile_mimetype_set:nNN {stream.txt}\l__pdffile_automimetype_tl \l__pdffile_tmpa_tl}
+ { \__pdffile_mimetype_set:nNN { #2 } \l__pdffile_automimetype_tl \l__pdffile_tmpa_tl }
+ \__pdffile_count_embed:N \l__pdffile_tmpa_tl
\__pdffile_stream_write:nN
{ #1 }
\l__pdffile_automimetype_tl
@@ -3377,8 +3471,9 @@
\cs_new_protected:Npn \pdffile_embed_stream:nnN #1 #2 #3
{
\tl_if_blank:nTF {#2}
- { \__pdffile_mimetype_set:nN {stream.txt}\l__pdffile_automimetype_tl}
- { \__pdffile_mimetype_set:nN { #2 } \l__pdffile_automimetype_tl }
+ { \__pdffile_mimetype_set:nNN {stream.txt}\l__pdffile_automimetype_tl \l__pdffile_tmpa_tl}
+ { \__pdffile_mimetype_set:nNN { #2 } \l__pdffile_automimetype_tl \l__pdffile_tmpa_tl }
+ \__pdffile_count_embed:N\l__pdffile_tmpa_tl
\__pdffile_stream_write:nN
{ #1 }
\l__pdffile_automimetype_tl
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty 2024-12-21 20:55:20 UTC (rev 73181)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-testphase.dtx
-\ProvidesExplPackage{pdfmanagement-testphase}{2024-10-27}{0.96n}
+\ProvidesExplPackage{pdfmanagement-testphase}{2024-12-20}{0.96o}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl at t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty 2024-12-21 20:55:03 UTC (rev 73180)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty 2024-12-21 20:55:20 UTC (rev 73181)
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches-tmp-ltx.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2024-10-27 v0.96n patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2024-12-20 v0.96o patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
More information about the tex-live-commits
mailing list.