texlive[58199] Master/texmf-dist: pdfmanagement-testphase (7mar21)

commits+karl at tug.org commits+karl at tug.org
Sun Mar 7 23:05:13 CET 2021


Revision: 58199
          http://tug.org/svn/texlive?view=revision&revision=58199
Author:   karl
Date:     2021-03-07 23:05:12 +0100 (Sun, 07 Mar 2021)
Log Message:
-----------
pdfmanagement-testphase (7mar21)

Modified Paths:
--------------
    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/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/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/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.ins
    trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
    trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
    trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
    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/pdflscape-ltx.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/transparent-ltx.sty
    trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf
    trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx
    trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty

Added: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md	2021-03-07 22:05:12 UTC (rev 58199)
@@ -0,0 +1,31 @@
+# Changelog
+All notable changes to the `pdfmanagement-testphase` bundle since the 
+first release 0.95a, 2021-02-23 will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+this project uses date-based 'snapshot' version identifiers.
+
+## [Unreleased]
+
+## [2021-03-07]
+
+### Added
+- \pdfannot_widget_box:nnnn 
+- \pdfannot_dict_use:n
+-  module l3pdffield for form fields. Currently it only supports checkboxes.
+
+### Changed
+-
+
+### Removed
+- \pdfannot_box:nnnnn: Concept to mix manual specs and dictionaries is wrong.
+  This can lead to duplicate entries in the dictionaries.
+  
+### Fixed
+- Wrong default setting of \g_@@_active_bool (issue #13)
+- l3pdffile: Wrong casing: FileSpec -> Filespec   
+- beamer linkbordercolor error (workaround in firstaid)
+
+## [2021-02-23]
+
+First release


Property changes on: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/CHANGELOG.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/README.md	2021-03-07 22:05:12 UTC (rev 58199)
@@ -1,6 +1,6 @@
 # LaTeX PDF management testphase bundle
 
-Version: 0.95a, 2021-02-22
+Version: 0.95b, 2021-03-07
 
 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)

Added: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf	2021-03-07 22:05:12 UTC (rev 58199)

Property changes on: trunk/Master/texmf-dist/doc/latex/pdfmanagement-testphase/l3pdffield.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/hyperref-generic.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -86,7 +86,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -813,7 +813,7 @@
 %    \end{macrocode}
 %    \begin{macrocode}
 \ProvidesFile{hgeneric-testphase.def}
-  [2021/02/22 v0.95a %
+  [2021/02/22 v0.95b %
   generic Hyperref driver for the LaTeX PDF management testphase bundle]
 
 \RequirePackage{etoolbox} %why?
@@ -1822,12 +1822,13 @@
          \cs_set_eq:NN \% \c_percent_str
          \Hy at safe@activestrue
          \mode_leave_vertical:
+         \pdfannot_dict_put:nnx {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>}
          \pdfannot_link:nxn { URI }
            {
-             /A
-               <<
-                 \pdfdict_use:n {l_hyp/annot/A/URI}
-               >>
+     %        /A
+%               <<
+%                 \pdfdict_use:n {l_hyp/annot/A/URI}
+%               >>
            }
            {
              #1
@@ -1877,12 +1878,13 @@
             \pdfdict_put:nno{l_hyp/annot/A/Next}{Next}{\Hy at href@nextactionraw}
           }
         \mode_leave_vertical:
+        \pdfannot_dict_put:nnx {link/GoToR}{A}{<<\pdfdict_use:n {l_hyp/annot/A/GoToR}>>}
         \pdfannot_link:nxn %expansion??
           { GoToR }
           {
-            /A<<
-              \pdfdict_use:n {l_hyp/annot/A/GoToR}
-            >>
+  %          /A<<
+%              \pdfdict_use:n {l_hyp/annot/A/GoToR}
+%            >>
           }
           {
             #1\Hy at xspace@end
@@ -1935,13 +1937,14 @@
               \pdfdict_put:nno{l_hyp/annot/A/Next}{Next}{\Hy at href@nextactionraw}
             }
           \mode_leave_vertical:
+          \pdfannot_dict_put:nnx {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>}
           \pdfannot_link:nxn
             { Launch }
             {
-              /A
-              <<
-                \pdfdict_use:n {l_hyp/annot/A/Launch}
-              >>
+  %            /A
+%              <<
+%                \pdfdict_use:n {l_hyp/annot/A/Launch}
+%              >>
             }
             {
               #2\Hy at xspace@end
@@ -1986,12 +1989,13 @@
                  \str_remove_once:Nn \Hy at href@nextactionraw {/Next}
                  \pdfdict_put:nno{l_hyp/annot/A/Next}{Next}{\Hy at href@nextactionraw}
                }
+             \pdfannot_dict_put:nnx {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>}
              \pdfannot_link:nxn { Named }
               {
-                /A
-                  <<
-                    \pdfdict_use:n { l_hyp/annot/A/Named }
-                  >>
+%                /A
+%                  <<
+%                    \pdfdict_use:n { l_hyp/annot/A/Named }
+%                  >>
               }
               {
                 #2

Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3backend-testphase.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -45,7 +45,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 %
@@ -56,27 +56,27 @@
 %    \begin{macrocode}
 %<drivers>\ProvidesExplFile
 %<*dvipdfmx>
-  {l3backend-testphase-dvipdfmx.def}{2021-02-22}{}
+  {l3backend-testphase-dvipdfmx.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
 %</dvipdfmx>
 %<*dvips>
-  {l3backend-testphase-dvips.def}{2021-02-22}{}
+  {l3backend-testphase-dvips.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
 %</dvips>
 %<*dvisvgm>
-  {l3backend-testphase-dvisvgm.def}{2021-02-22}{}
+  {l3backend-testphase-dvisvgm.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
 %</dvisvgm>
 %<*luatex>
-  {l3backend-testphase-luatex.def}{2021-02-22}{}
+  {l3backend-testphase-luatex.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
 %</luatex>
 %<*pdftex>
-  {l3backend-testphase-pdftex.def}{2021-02-22}{}
+  {l3backend-testphase-pdftex.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
 %</pdftex>
 %<*xdvipdfmx>
-  {l3backend-testphase-xetex.def}{2021-02-22}{}
+  {l3backend-testphase-xetex.def}{2021-03-07}{}
   {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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfannot.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -52,7 +52,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-21}
+% \date{Version 0.95b, released 2021-02-21}
 %
 % \maketitle
 % \begin{documentation}
@@ -70,26 +70,15 @@
 % \subsection{General annotation commands}
 %
 % \begin{function}[added = 2019-09-05, updated = 2020-04-14]
-%   { \pdfannot_box:nnnn }
+%   { \pdfannot_box:nnnn,\pdfannot_box:nnnx }
 %   \begin{syntax}
 %     \cs{pdfannot_box:nnnn} \Arg{width} \Arg{height} \Arg{depth} \Arg{annot spec}
 %   \end{syntax}
 %   This creates an \texttt{/Type/Annot} object with the given dimensions.
-%   It doesn't use hooks or dictionaries.
+%   It doesn't use hooks or dictionaries. The annotation doesn't occupy space but
+%   as it is a whatsit it can affect spacing.
 % \end{function}
-% \begin{function}[added = 2020-03-30]
-%   { \pdfannot_box:nnnnn }
-%   \begin{syntax}
-%     \cs{pdfannot_box:nnnnn} \Arg{type} \Arg{width} \Arg{height} \Arg{depth} \Arg{annot spec}
-%   \end{syntax}
-%   This creates an \texttt{/Type/Annot} object with the given dimensions.
-%   \meta{type} should be currently one of |link/URI|, |link/GoToR|,
-%  |link/Launch|, |link/GoTo| or |link/Named| or
-%  |widget|, it will then insert the attribute dictionary of this type
-%   additionally to the manually given \meta{annot spec}.
-%   The attribute dictionaries can be filled with commands described below.
-%   Hooks are not used.
-% \end{function}
+%
 % \begin{function}[added = 2019-09-05]
 %   { \pdfannot_box_ref_last: }
 %   \begin{syntax}
@@ -97,6 +86,32 @@
 %   \end{syntax}
 %   This retrieves the object reference of the last box annotation created.
 % \end{function}
+% \subsection{Dictionary for the annotation spec}
+%
+% \meta{annot spec} in the above command can be given in two ways. One way is
+% to enter the needed dictionary keys and values directly:
+% \begin{verbatim}
+%  \pdfannot_box:nnnn{1cm}{1cm}{0cm}{/Subtype/Link /Border[0~0~1]}
+% \end{verbatim}
+%
+% A second method is to make use of the dictionary commands provided by \pkg{l3pdfdict}:
+%
+% \begin{verbatim}
+% \pdfdict_new:n  {l_my_annot}
+% \pdfdict_put:nnn{l_my_annot}{Subtype}{/Link}
+% \pdfdict_put:nnn{l_my_annot}{Border}{[0~0~1]}
+% \pdfannot_box:nnnx{1cm}{1cm}{0cm}{\pdfdict_use:n{l_my_annot}}
+% \end{verbatim}
+%
+% The second method is clearly slower and more to type. But it has the advantage
+% that using such a dictionary makes it easy to add, remove and change entries.
+% It also avoids the potential problem that a key is added twice with different
+% values. This allows to create user interfaces to change settings and
+% also makes it easy to extend the interfaces in case some new setting
+% should be included. For these reasons both the PDF management itself,
+% but also the specific annotation commands in the following sections
+% all make use of such dictionaries.
+%
 % \subsection{Link annotations}
 % Link annotations are special cases of annotations. In the PDF they are identified
 % by an |/Subtype/Link| entry in the dictionary.
@@ -152,9 +167,14 @@
 %   \begin{syntax}
 %     \cs{pdfannot_link:nnn} \Arg{type} \Arg{user action spec} \Arg{link text}
 %   \end{syntax}
-%  This creates a link around the \meta{link text} with the specified
+%  This creates a link around the \meta{link text}.
+%  \texttt{/Subtype/Link} is added automatically through the dictionary.
 %  \meta{user action spec}\footnote{The wording follows the pdftex documentation}.
-%  \texttt{/Subtype/Link} is added automatically.
+%  is provided as a fast method to add dictionary contents,
+%  but it should be noted that no provision is taken to avoid clashes with
+%  values added through the dictionary. If needed clashing entries should be
+%  removed from the dictionary first. Normally the argument is not needed, all
+%  entries can be added through the dictionary too.
 %  \meta{type} should be one of \texttt{URI}, \texttt{GoToR},
 %  \texttt{Launch}, \texttt{GoTo} or \texttt{Named}. The |GoTo| variant does
 %  \emph{not} complain if the destination name is not known like
@@ -161,7 +181,8 @@
 %  \cs{pdfannot_link_goto_begin:nw}.
 %  The attributes stored in the local dictionary
 %  \texttt{link/}\meta{type} are inserted as
-%  \emph{attr spec} and the code in the begin and end hook
+%  \emph{attr spec} before \meta{user action spec}.
+%  The code in the begin and end hook
 %  \texttt{pdfannot/link/\meta{type}/before}
 %  and \texttt{pdfannot/link/\meta{type}/after}
 %  is executed  before and after the link (outside the link command)
@@ -193,10 +214,14 @@
 %     \cs{pdfannot_link_begin:nnw} \Arg{type} \Arg{user action spec} \meta{content}
 %     \cs{pdfannot_link_end:n} \Arg{type}
 %   \end{syntax}
-%  This creates a link around the \meta{content} with the specified
-%  \meta{user action spec} (e.g. an /A dictionary with an URI) or
-%  \meta{destination} (a name as defined with the
-%  first argument of \cs{pdf_destination:nn}).
+%  This creates a link like the previous command.
+%  \texttt{/Subtype/Link} is added automatically through the dictionary.
+%  \meta{user action spec}\footnote{The wording follows the pdftex documentation}.
+%  is provided as a fast method to add dictionary contents,
+%  but it should be noted that no provision is taken to avoid clashes with
+%  values added through the dictionary. If needed clashing entries should be
+%  removed from the dictionary first. Normally the argument is not needed, all
+%  entries can be added through the dictionary too.
 %  \texttt{/Subtype/Link} is added automatically.
 %  In contrast to \cs{pdfannot_link:nnn} this function
 %  does not absorb the argument when finding the \meta{content}, and so can
@@ -278,6 +303,17 @@
 %   \texttt{link/GoTo}, \texttt{link/Named}.
 % \end{function}
 %
+% \begin{function}[EXP,added = 2021-03-03]
+%   { \pdfannot_dict_use:n  }
+%   \begin{syntax}
+%     \cs{pdfannot_dict_use:n} \Arg{dictionary name}
+%   \end{syntax}
+%   This outputs the property list of the dictionary as a list of
+%   |/key value| pairs.
+%   This can be used e.g. when writing a dictionary object with
+%   \cs{pdf_object_write:nx}
+% \end{function}
+%
 % \begin{variable}[added = 2020-12-28]{\l_pdfannot_F_bitset}
 %  This is a bitset variable, with the named index names suitable for the
 %  /F flag in an annotation.
@@ -291,6 +327,27 @@
 %  |Print|, |NoZoom|, |NoRotate|, |NoView|, |ReadOnly|, |Locked|,  |ToggleNoView|,
 %  |LockedContents| which correspond to the names used in the PDF references.
 % \end{variable}
+% \subsection{Widget annotations}
+% Widget annotations are quite important for form fields, as they are used
+% to build the actually instance of such fields.
+%
+% As they can contain meaningful content hooks are probably needed to allow tagging
+% and other manipulations, so like with link special commands are provided.
+% Widget are normally in a box and line and page breaks are not relevant, so
+% the command is offered as box command.
+%
+% \begin{function}[added = 2021-03-02]
+%   { \pdfannot_widget_box:nnn }
+%   \begin{syntax}
+%     \cs{pdfannot_widget_box:nnn}  \Arg{width} \Arg{height} \Arg{depth}
+%   \end{syntax}
+%   This creates an \texttt{/Type/Annot} object with the given dimensions.
+%   The annotation doesn't occupy space.
+%   It will insert the attribute dictionary of the widget type (which
+%   is prefilled with  \texttt{/Subtype/Widget}).
+%   The hooks \texttt{pdfannot/widget/before} and \texttt{pdfannot/widget/after}
+%   are executed before and after the widget.
+% \end{function}
 % \end{documentation}
 %
 % \begin{implementation}
@@ -300,7 +357,7 @@
 %    \begin{macrocode}
 %<@@=pdfannot>
 %<*header>
-\ProvidesExplPackage {l3pdfannot} {2021-02-22} {0.95a}
+\ProvidesExplPackage {l3pdfannot} {2021-03-07} {0.95b}
   {PDF-annotations}
 \RequirePackage{l3pdfdict}
 %</header>
@@ -349,7 +406,7 @@
 %  type or not type? Syntax for type?
 %  should there be a version without type?
 % \end{NOTE}
-
+% \begin{macro}{\pdfannot_box:nnnn,\pdfannot_box:nnnx,\pdfannot_box_ref_last:}
 %    \begin{macrocode}
 \cs_new_protected:Npn \pdfannot_box:nnnn #1 #2 #3 #4
   {
@@ -356,35 +413,39 @@
     \__pdf_backend_annotation:nnnn {#1}{#2}{#3}{#4}
     \bool_gset_false:N\g_@@_use_lastlink_bool
   }
-
+\cs_generate_variant:Nn \pdfannot_box:nnnn {nnnx}
 \cs_new:Npn \pdfannot_box_ref_last:
   {
     \__pdf_backend_annotation_last:
   }
 
-\cs_new_protected:Npn \pdfannot_box:nnnnn #1 #2 #3 #4 #5
+%    \end{macrocode}
+% \end{macro}
+% \subsection{Annotations, subtype Widget}\label{pdf:annot:widget}
+% Widgets are typically boxes, so we provide a box command.
+% A local dictionary \texttt{l_@@/Widget} is used.
+% It contains like the other dictionaries
+% the subtype setting (the /Type is added by the backend).
+%    \begin{macrocode}
+ \pdfdict_new:n   { l_@@/widget }
+ \pdfdict_put:nnn { l_@@/widget }{ Subtype }{ /Widget }
+ \hook_new_pair:nn
+   {pdfannot/widget/before}
+   {pdfannot/widget/after}
+ \hook_new_pair:nn
+   {pdfannot/widget/begin}
+   {pdfannot/widget/end}
+\cs_new_protected:Npn \pdfannot_widget_box:nnn #1 #2 #3
   {
-    \exp_args:Nx
-    \__pdf_backend_annotation:nnnn {#2}{#3}{#4}
+    \hook_use:n { pdfannot/widget/before }
+    \pdfannot_box:nnnx {#1}{#2}{#3}
       {
-        \pdfdict_if_exist:nT { l_@@/#1 }
-          {
-            \pdfdict_use:n { l_@@/#1}
-          }
-        #5
+        \pdfdict_use:n { l_@@/widget}
       }
+    \hook_use:n { pdfannot/widget/after }
     \bool_gset_false:N\g_@@_use_lastlink_bool
   }
 %    \end{macrocode}
-% \subsection{Annotations, subtype Widget}\label{pdf:annot:widget}
-% Currently no code is provided here.
-% The local dictionary \texttt{l_@@/Widget} is a skeleton
-% dictionary for this subtype. It currently contains as only entry
-% the subtype setting (the /Type is added by the backend).
-%    \begin{macrocode}
- \pdfdict_new:n { l_@@/widget }
- \pdfdict_put:nnn { l_@@/widget }{ Subtype }{ /Widget }
-%    \end{macrocode}
 %
 % \subsection{Annotations, subtype Link}\label{sec:links}
 % The code assumes that there will be different link types
@@ -427,6 +488,7 @@
 \seq_map_inline:Nn \c_pdfannot_link_types_seq
   {
     \pdfdict_new:n { l_@@/link/#1 }
+    \pdfdict_put:nnn { l_@@/link/#1 }{ Subtype }{ /Link }
     \hook_new_pair:nn
       {pdfannot/link/#1/before}
       {pdfannot/link/#1/after}
@@ -454,7 +516,6 @@
           }
       }
       {
-        /Subtype/Link
         #2 %exp_not?
       }
     \bool_gset_true:N \g_@@_use_lastlink_bool
@@ -504,7 +565,8 @@
 %     \begin{macrocode}
 \cs_new_protected:Npn \pdfannot_link_goto_begin:nw #1 %#1 destination
   {
-    \hook_use:n { pdfannot/link/GoTo/before}
+    \pdfdict_remove:nn { l_@@/link/GoTo} {Subtype}
+    \hook_use:n { pdfannot/link/GoTo/before} %the backend add it too
     \mode_leave_vertical:
     \exp_args:Nxx %xetex needs expansion
     \__pdf_backend_link_begin_goto:nnw
@@ -513,6 +575,7 @@
       }
       { #1 }
      \bool_gset_true:N \g_@@_use_lastlink_bool
+    \pdfdict_put:nnn { l_@@/link/GoTo} {Subtype}{GoTo}
      \hook_use:n { pdfannot/link/GoTo/begin}
   }
 
@@ -556,6 +619,7 @@
 %     \pdfannot_dict_put:nnx,
 %     \pdfannot_dict_remove:nn,
 %     \pdfannot_dict_show:n
+%     \pdfannot_dict_use:n
 %   }
 %    \begin{macrocode}
 \cs_new_protected:Npn \pdfannot_dict_put:nnn #1 #2 #3
@@ -575,6 +639,11 @@
   {
     \pdfdict_show:n { l_@@/#1 }
   }
+
+\cs_new:Npn \pdfannot_dict_use:n #1
+  {
+    \pdfdict_use:n { l_@@/#1 }
+  }
 %</package>
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfdict.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -53,7 +53,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -212,7 +212,7 @@
 %    \begin{macrocode}
 %<@@=pdfdict>
 %<*header>
-\ProvidesExplPackage {l3pdfdict} {2021-02-22} {0.95a}
+\ProvidesExplPackage {l3pdfdict} {2021-03-07} {0.95b}
   {Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
 %</header>
 %    \end{macrocode}

Added: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -0,0 +1,961 @@
+% \iffalse meta-comment
+%
+%% File: l3pdfpdffield-checkbox.dtx
+%
+% Copyright (C) 2021 The LaTeX Project
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version.  The latest version
+% of this license is in the file
+%
+%    http://www.latex-project.org/lppl.txt
+%
+% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+%    https://github.com/latex3/pdfresources
+%
+% for those people who are interested.
+%
+%<*driver>
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{}
+\makeatletter
+\declare at file@substitution{doc.sty}{doc-v3beta.sty}
+\makeatother
+\documentclass[full]{l3doc}
+\usepackage{array,booktabs}
+\usepackage{l3pdffield-testphase,bearwear}
+\hypersetup{pdfauthor=The LaTeX Project,
+ pdftitle=l3pdffield (LaTeX PDF management testphase bundle)}
+\begin{document}
+  \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+% \NewDocElement[
+%   idxgroup=checkbox keys,
+%   idxtype = {checkbox key},
+%   printtype= \textit{checkbox key}
+%    ]{Checkboxkey}{checkboxkey}
+% \providecommand\hook[1]{\texttt{#1}}
+% \ExplSyntaxOn
+% \pdffield_store_appearance:nn {bear/Yes}
+%  {
+%    \tikz\bear\bearwear[shirt=red,body~deco={\node[font=\tiny\bfseries,white]~at~(beartummy){Yes};}];
+%  }
+% \pdffield_store_appearance:nn {bear/Off}
+%  {
+%   \tikz\bear\bearwear[body~deco={\node[font=\tiny\bfseries,white]~at~(beartummy){Off};}];
+%  }
+% \ExplSyntaxOff
+% \title{^^A
+%   The \pkg{l3pdffield} module\\ Commands to create form fields   ^^A
+%   \\ \LaTeX{} PDF management testphase bundle
+% }
+%
+% \author{^^A
+%  The \LaTeX{} Project\thanks
+%    {^^A
+%      E-mail:
+%        \href{mailto:latex-team at latex-project.org}
+%          {latex-team at latex-project.org}^^A
+%    }^^A
+% }
+%
+% \date{Version 0.95b, released 2021-03-07}
+%
+% \maketitle
+% \begin{documentation}
+% \section{\pkg{l3pdffield} Introduction}
+% The implementation of form fields in hyperref has some bugs, see for example
+% \url{https://github.com/latex3/hyperref/issues/94}. This package is a first step
+% towards the goal to review and improve the code of form fields.
+%
+% Like the \pkg{pdfmanagement-testphase} package itself it is a temporary package:
+% the definite home of the code is not yet decided.
+%
+% It handles for now \emph{only} checkboxes, other form fields like pushbutton,
+% radio buttons or text fields will follow later. As currently no fonts are used,
+% it doesn't relies on the hyperref code
+% to initialize the form, but it can be used with hyperref.
+%
+% The code requires the new PDF management. The code makes use of
+% \pkg{l3pdfxform} to create the Xobjects. This code doesn't support yet the
+% the dvips backend.
+%
+%
+%
+% Please keep in mind
+% \begin{itemize}
+% \item Not every PDF viewer supports checkboxes.
+% \item The handling can depend on settings in the PDF viewer. In adobe reader for
+% example I had to disable an option to avoid that it tries to create an appearance
+% itself
+% \item Standards like pdf/A disable form fields too (as you typically can't change the PDF).
+% \end{itemize}
+%
+% If \pkg{hyperref} is loaded before
+% the package will suppress the deprecated |/NeedAppearances| setting. If \pkg{hyperref}
+% is loaded later you should do it in the \cs{Form} options.
+%
+% So a typical use together with hyperref could look like this
+%
+% \begin{verbatim}
+% \RequirePackage{pdfmanagement-testphase}
+% \DeclareDocumentMetadata{uncompress}
+% \documentclass{article}
+% \usepackage{hyperref}
+% \usepackage{l3pdffield-testphase}
+% \begin{document}
+% \Form
+% \end{verbatim}
+% \section{Step 1: Checkboxes}
+% Click me:
+% \ExplSyntaxOn\pdffield_checkbox:n{name=bear,appearance=bear,width=23pt,height=30pt,depth=10pt}\ExplSyntaxOff
+%
+% \bigskip
+% \subsection{Commands}
+% \begin{function}{\pdffield_checkbox:n}
+% \begin{syntax}
+%  \cs{pdffield_checkbox:n}\Arg{key val list}
+% \end{syntax}
+% This creates a checkbox to check and uncheck. The list of allowed keys is described below.
+% Typically the \meta{key val list} should at least set the name. Checkboxes with the same
+% name belong to the same field and are checked and unchecked together. The default appearance
+% is a quadratic frame with a \cs{texttimes} in it for the checked case.
+% \end{function}
+%
+%\begin{function}{\pdffield_setup:nn}
+% \begin{syntax}
+%  \cs{pdffield_setup:nn}\Arg{field type}\Arg{key val list}
+% \end{syntax}
+% This allows to setup up values for following fields. \Arg{field type}
+% should be a field, currently the only allowed value is |checkbox|.
+% \end{function}
+%
+%\begin{function}{\pdffield_store_appearance:nn}
+% \begin{syntax}
+%  \cs{pdffield_store_appearance:nn}\Arg{name/state}\Arg{content}
+% \end{syntax}
+% This is a small wrapper around \cs{pdfxform_new:nn} and store appearances for the fields.
+% \meta{state} should be for checkboxes either |Yes| or |Off| (and typically
+% you should define both). \meta{name} is the name
+% that is used in the |appearance| key, |checkbox/default| is predefined and so can't be used.
+% \meta{content} is arbitrary content. The dimensions should fit to the planed size of the
+% checkbox.%
+% \end{function}
+% \subsection{Keys}
+%
+% The new checkbox commands accepts following keys:
+%
+% \DescribeCheckboxkey{name} This sets the (internal) name of the field. It shouldn't contain
+% a period, be not empty and sensibly consist of simple chars. Checkboxes instances
+% with the same name belong to the same field and are checked and unchecked together.
+%
+% \DescribeCheckboxkey{altname} This sets an alternative name for user interaction.
+% This name can only be set at the first checkbox instance, when the field is initialized.
+% \DescribeCheckboxkey{mappingname} This sets an alternative name for export.
+% This name can only be set at the first checkbox instance, when the field is initialized.
+%
+% \DescribeCheckboxkey{width}
+% \DescribeCheckboxkey{height}
+% \DescribeCheckboxkey{depth} These keys allow to set the dimensions of checkbox instance.
+% The value should be a command that expands to a dimension expression. By default
+% |width| and |height| use \cs{normalbaselineskip}, the |depth| is zero.
+%
+% \DescribeCheckboxkey{appearance} This key sets the normal appearance. It takes as value a
+% \meta{name} and expects that the two appearances \meta{name}|/Yes| and \meta{name}|/Off|
+% has been created with the command described below. The initial value is |checkbox/default|
+% and shows a \cs{texttimes}.
+%
+% \DescribeCheckboxkey{rollover-appearance} This key sets the rollover appearance (when the
+% mouse hovers over the checkbox). It takes as value a
+% \meta{name} and expects that the two appearances \meta{name}|/Yes| and \meta{name}|/Off|
+% has been created with the command described below. Initially this is not set.
+% An empty value removes the entry.
+%
+% \DescribeCheckboxkey{down-appearance} This key sets the down appearance (when the
+% mouse clicks). It takes as value a
+% \meta{name} and expects that the two appearances \meta{name}|/Yes| and \meta{name}|/Off|
+% has been created with the command described below. Initially this is not set.
+% An empty value removes the entry.
+%
+% \DescribeCheckboxkey{checked} This is a boolean key which allows to set if the
+% checkbox should be initially checked or not. It sets the |/V| and |/DV| key of the field
+% and the |/AS| key of the annotation instance. It is possible to use different
+% values for different instances, if one wants to confuse the user.
+%
+% \DescribeCheckboxkey{setfieldflags}
+% \DescribeCheckboxkey{unsetfieldflags}
+% These keys allow to set or unset the field flags.  They expect a comma lists of
+% flag names. Allowed names |ReadOnly|, |Required|,
+% |NoExport|, |Multiline|, |Password|,    |NoToggleToOff|, |Radio|, |Pushbotton|,
+% |Combo|, |Edit|,   |Sort|, |FileSelect|,  |MultiSelect|, |DoNotSpellCheck|,
+% |DoNotScroll|, |Comb|,  |RadiosInUnison|, |RichText|, |CommitOnSelChange|.
+%
+% From these |Radio|, |Pushbotton| are set automatically automatically by the code
+% as this is required for a checkbox. Not every one from the rest makes sense for
+% checkboxes but the same key will be used for other fields too.
+% Check the PDF reference to decide which one to set or unset.
+%
+% \begin{checkboxkey}{keystroke,format,validate,calculate}
+% These keys add the |/K, |/F, |/V|, |/C| key to the |/AA| dictionary of the field object.
+% Their value should be javascript code. The |/AA| dictionary is suppressed
+% if a pdf/A standard is set. These keys are probably not of much used with a checkbox.
+% \end{checkboxkey}
+%
+% \vspace{2\baselineskip}
+% \begin{checkboxkey}{onfocus,onblur,onmousedown,onmouseup,onenter,onexit}
+% These keys adds the |/F, |/Bl, |/D|, |/U|, |E| and |X| key to the |/AA| dictionary
+% of the widget  annotation (the checkbox instance) object.
+% Their value should be javascript code. The |/AA| dictionary
+% is suppressed if a pdf/A standard is set.
+%
+% For example
+% \begin{verbatim}
+%    onenter={app.alert('Hello');}
+% \end{verbatim}
+% \end{checkboxkey}
+%
+% \subsection{Using with hyperref}
+% The \cs{CheckBox} command from hyperref also prints a label, something that the
+% command here don't do. A redefinition like the following should allow to \cs{CheckBox}
+% to use the commands of this module. Be aware that the behaviour will not be identical!
+% Not every setting and key from \pkg{hyperref} has been copied.
+%
+% \begin{verbatim}
+% \ExplSyntaxOn\makeatletter
+% \def\@CheckBox[#1]#2{\LayoutCheckField{#2}{\pdffield_checkbox:n {name=#2,#1}}}
+% \ExplSyntaxOff\makeatother
+% \end{verbatim}
+%
+% \subsection{Some background}
+% Form fields consist of a field object and number of instances of the field:
+% A checkbox can appear on more than one page or location and if one instance
+% is checked all other instances follows and are checked too.
+%
+% All instances are in this case widget annotations and are referenced in the Kid array of the field
+% object\footnote{Fields can actually build a tree: between the root field and
+% widget annotations there can be more fields. The last one before the widget is
+% the \emph{terminal} field, but unless a sensible
+% use case comes up, I will assume that the widget annotations are direct children of
+% the root and that the root field is the terminal field.}.
+% This means that the code has to collect all the children and write
+% out the field object at the end of the document.
+%
+% If a field has only one children the content of the field dictionary and the
+% widget annotation dictionary can be merged---some examples in the PDF reference
+% show such merged dictionaries---but the code here keeps them separate, at the end
+% this is clearer.
+%
+% All the root field objects must be referenced in the AcroForm dictionary in the
+% Fields entry. This can be done with
+%
+% \begin{verbatim}
+% \pdfmanagement_add:nnx{Catalog/AcroForm}{Fields}{<obj ref>}
+% \end{verbatim}
+%
+% A checkbox has two different looks: checked and unchecked. The current hyperref
+% implementation uses symbolic names for the two states and and adds some
+% values with the /MK key and lets the PDF viewer
+% create a look from them. But this doesn't work reliably. Also newer PDF versions
+% deprecate the /NeedAppearances setting and require that such a look,
+% an \enquote{appearance}, is given as form XObjects:
+% such form XObjects are like small pictures stored in the PDF and can be referenced
+% in various part of the PDF. They can be created with the commands of
+% the \pkg{l3pdfxform} package.
+%
+% The checkbox instances---the widget annotations---cover a rectangular area on
+% the page, the XObjects are squeezed into this rectangle. So for the best result
+% both should have the same ratio of width and height.
+% XObjects used as appearances can not be rotated, if needed one has to
+% create a new appearance.
+%
+% \subsubsection{The field dictionary}
+%
+% The field dictionary shall or can have the following entries
+%
+% \begin{description}
+% \item[FT] required for terminal fields (here for the root field),
+%  the value is always \texttt{Btn}, so this entry is set by the code.
+% \item[Parents] currently irrelevant as we don't have a field hierarchy.
+% \item[Kids] an array. Contains references to the children, in our case to
+% the widget annotations. The array is build by the code.
+%
+% \item[T] required, the name, a (unique) text string without a period.
+% This field is a mandatory argument which must be given by the user.
+% The value should be passed through a suitable string conversion and checked
+% if it contains a period (which is not allowed).
+%
+% \item[TU,TM] optional, alternative names for user messages (TU) and export (TM).
+% As these fields are optional they should be set by some key-val option.
+%
+% \item[Ff] A bitset, two flags must be unset for a checkbox (Radio and Pushbotton),
+% for the rest we need a keyval interface.
+%
+% \item[V] describes the initial value, for checkboxes is should be either |/Yes|
+%   or |/Off|. The initial value will be |/Yes|, keys are need to set both the local
+%   and the default value.
+%
+% \item[DV] optional, the default value after a reset. Should  like |V| be either
+% |/Yes| or |/Off|.
+%
+% \item[AA] An action dictionary. For this we need a special command to setup such
+% dictionaries, so that they then can be used in various places.
+%
+% \end{description}
+%
+% \subsubsection{The widget annotation dictionary}
+%
+% \begin{description}
+% \item[Type] Value: |/Annot|, set automatically
+% \item[Subtype] Value: |/Widget| this is added automatically.
+%  We use an internal dictionary which is locally copied over the one from l3pdfannot.
+%  It can be filled with keyval options.
+% \item[Parent] The reference to the field, automatically added.
+% \item[Rect] the size, calculated from the box size
+% \item[Contents] a text string, not really needed but an optional key should allow to
+% set it,
+% \item[AP] the appearance dictionary. It should look like this
+%  |/AP <</N <</Yes 17 0 R/Off 15 0 R>>>>|. I need to test if it makes sense here to
+%  have a |/R| and |/D| entry too. The objects refer to suitable xforms.
+% \item[AS] should be either |/Yes| or |/Off|, and sensibly by default be
+%  the same as the V entry in the field dictionary. If they differ the AS entry wins.
+%
+% \item[A] Action, this must be checked.
+% \item[AA] additional actions. This must be checked too.
+%
+% \item[Border, C, OC, AF, BM, Lang, P, NM, M, F, BS, H]: These are not specifically
+% needed for checkbox. An interface to add something to the used annot dictionary
+% is needed (or already there), but probably no special key-val support for now.
+%
+% \item[MK] this is what hyperref uses to set the appearance, but I
+%  explicitly leave it out and use |AP|.
+%
+% \item[Q] (alignment), used by hyperref but not relevant as we don't have variable
+% text here.
+% \end{description}
+% \end{documentation}
+%
+% \begin{implementation}
+% \section{\pkg{l3pdffield-checkbox} Implementation}
+%    \begin{macrocode}
+%<*package>
+%<@@=pdffield>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesExplPackage{l3pdffield-checkbox}{0000-00-00}{v0.00a}{form field checkbox}%
+%    \end{macrocode}
+% \subsection{hyperref specific command}
+% hyperref sets NeedAppearances by default. As this is deprecated we disable this.
+%    \begin{macrocode}
+\csname HyField at NeedAppearancesfalse\endcsname % suppress NeedAppearances
+% values from hyperref:
+%\def\DefaultOptionsofCheckBox{print}
+%\def\DefaultHeightofCheckBox{\normalbaselineskip}
+%\def\DefaultWidthofCheckBox{\normalbaselineskip}
+%    \end{macrocode}
+% \subsection{local variables}
+%    \begin{macrocode}
+\str_new:N \l_@@_field_name_str
+\str_new:N \l_@@_tmpa_str
+\str_new:N \l_@@_name_tmpa_str
+\tl_new:N \l_@@_keys_tmpa_tl
+%    \end{macrocode}
+%
+% \subsection{messages}
+%    \begin{macrocode}
+\msg_new:nnn {pdffield}{no-period}
+  {
+    The~field~name~`#1`~contains~a~period. \\
+    This~is~not~allowed. `
+  }
+\msg_new:nnn {pdffield}{empty-name}
+  {
+    The~field~name~is~empty. \\
+    This~is~not~allowed. `
+  }
+\msg_new:nnn {pdffield}{appearance-missing}
+  {
+    The~appearance~`#1`~is~missing~for~the~#2~appearance.
+  }
+\msg_new:nnn {pdffield}{field-keys-ignored}
+  {
+    The~field~`#1`~is~already~initialized\\
+    The~field~keys~`#2`~are~ignored.
+  }
+%    \end{macrocode}
+
+% \subsection{bitsets}
+% A bitset for the field flag Ff
+% and an internal copy of the annot bitset.
+%    \begin{macrocode}
+\bitset_new:Nn \l_@@_Ff_bitset
+ {
+    ReadOnly          = 0,
+    Required          = 1,
+    NoExport          = 2,
+    Multiline         = 12,%Tx
+    Password          = 13,
+    NoToggleToOff     = 14,%Btn, radio button
+    Radio             = 15,%Btn: Radio:    15=1, 16=0
+    Pushbutton        = 16,%Btn: Checkbox: 15=0, 16=0
+                           %Btn: Pushbutton: 16=1
+    Combo             = 17,%Ch: Combo=1 List=0
+    Edit              = 18,%Ch, Combo=1 -> + edit field
+    Sort              = 19,%Ch, not relevant for view...
+    FileSelect        = 20,%Tx
+    MultiSelect       = 21,%Ch
+    DoNotSpellCheck   = 22,%Tx, Ch (if Combo + Edit set)
+    DoNotScroll       = 23,%Tx
+    Comb              = 24,%Tx, requires MaxLen in dict
+    RadiosInUnison    = 25,%Btn Radio
+    RichText          = 25,%Tx
+    CommitOnSelChange = 26
+  }
+
+\bitset_new:Nn \l_@@_F_bitset
+  {
+    Invisible      = 1,
+    Hidden         = 2,
+    Print          = 3,
+    NoZoom         = 4,
+    NoRotate       = 5,
+    NoView         = 6,
+    ReadOnly       = 7,
+    Locked         = 8,
+    ToggleNoView   = 9,
+    LockedContents = 10
+  }
+%    \end{macrocode}
+% \subsection{The field dictionary}
+% The field dictionary is the main object. It references the
+% actual widget annotations as kids. It is created at the first
+% checkbox with a specific name.
+% To be able to set values from the outside it will use a
+% dictionary which can be filled by key-val.
+%    \begin{macrocode}
+\pdfdict_new:n   {l_@@/checkbox/field}
+\pdfdict_put:nnn {l_@@/checkbox/field}{FT}{/Btn}
+%    \end{macrocode}
+% We need to check if the name contains a dot. But we will do this in an external command
+% to avoid to have it twice. Here we assume that the name is already converted and safe.
+%
+% We also assume that values that can be changed by the user are set outside
+% in the dictionary.
+% If the field object already exists nothing is done.
+% \begin{macro}{\@@_checkbox_field_add:n}
+% \begin{syntax}
+% \cs{@@_checkbox_field_add:n}\Arg{name}
+% \end{syntax}
+% \meta{name} should be a PDF text string without period. It identifies the
+% field.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_checkbox_field_new:n #1
+  {
+      \group_begin:
+      \pdf_object_new:nn {@@_checkbox/field/#1}      {dict}
+      \pdf_object_new:nn {@@_checkbox/field/#1/Kids} {array}
+      \seq_new:c {g_@@_checkbox/field/#1/Kids_seq}
+      \hook_gput_code:nnn {shipout/lastpage}{pdffield} %xetex needs this ...
+        {
+          \pdf_object_write:nx {@@_checkbox/field/#1/Kids}
+            {
+              \seq_use:cn{g_@@_checkbox/field/#1/Kids_seq}{~}
+            }
+        }
+      \pdfdict_put:nnn {l_@@/checkbox/field}{T}{(#1)}
+     % V,DV are names describing the appearance. With checkboxes
+     % the values /Yes and /Off are used.
+     % this values are taken from the outside
+      \pdfdict_put:nnx {l_@@/checkbox/field}
+         {Kids}
+         {
+           \pdf_object_ref:n {@@_checkbox/field/#1/Kids}
+         }
+      \bitset_set_false:Nn \l_@@_Ff_bitset  {Radio}
+      \bitset_set_false:Nn \l_@@_Ff_bitset  {Pushbutton}
+      \pdfdict_put:nnx {l_@@/checkbox/field}
+        {Ff}
+        {\bitset_to_arabic:N \l_@@_Ff_bitset }
+      \pdfdict_if_empty:nF{l_@@/checkbox/field/AA}
+        {
+          \pdfmeta_standard_verify:nT
+            {annot_widget_no_AA}
+            {
+              \pdfdict_put:nnx
+                {l_@@/checkbox/field}
+                {AA}
+                {<<\pdfdict_use:n {l_@@/checkbox/field/AA}>>}
+            }
+        }
+      \pdf_object_write:nx {@@_checkbox/field/#1} { \pdfdict_use:n {l_@@/checkbox/field} }
+      \pdfmanagement_add:nnx
+        { Catalog / AcroForm }
+        { Fields }
+        {\pdf_object_ref:n {@@_checkbox/field/#1} }
+      \group_end:
+  }
+
+%    \end{macrocode}
+% \end{macro}
+% \subsection{The annot dictionary}
+% We assume that the annotation should really occupy space on the page and
+% leave vertical mode.
+% We also assume that keys like AP, AS are added before through keys to
+% the dictionary.
+% We use a local dictionary which is copied into |l__pdfannot/widget| in the code.
+%    \begin{macrocode}
+\pdfdict_new:n   {l_@@/checkbox/annot}
+\pdfdict_put:nnn {l_@@/checkbox/annot}{Subtype}{/Widget}
+%    \end{macrocode}
+%
+% \begin{macro}{\@@_checkbox_annot_add:nnnn}
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_checkbox_annot_add:nnnn #1 #2 #3 #4 %name, wd, ht, dp,
+  {
+    \group_begin:
+%    \end{macrocode}
+% Copy the internal dictionary to the pdfannot dictionary. This
+% perhaps need a function in l3pdfannot,
+% as it actually uses an internal name of another module.
+%    \begin{macrocode}
+    \pdfdict_put:nnx {l_@@/checkbox/annot}{AP}{<<\pdfdict_use:n{l_@@/checkbox/annot/AP}>>}
+    \pdfmeta_standard_verify:nF
+      {annot_flags}
+      {
+        \bitset_set_true:Nn  \l_@@_F_bitset {Print}
+        \bitset_set_false:Nn \l_@@_F_bitset {Hidden}
+        \bitset_set_false:Nn \l_@@_F_bitset {Invisible}
+        \bitset_set_false:Nn \l_@@_F_bitset {NoView}
+      }
+    \pdfdict_if_empty:nF{l_@@/checkbox/annot/AA}
+      {
+        \pdfmeta_standard_verify:nT
+         {annot_widget_no_AA}
+         {
+            \pdfdict_put:nnx
+              {l_@@/checkbox/annot}
+              {AA}
+              {<<\pdfdict_use:n {l_@@/checkbox/annot/AA}>>}
+         }
+      }
+    \pdfdict_put:nnx {l_@@/checkbox/annot}{F}{ \bitset_to_arabic:N \l_@@_F_bitset }
+    \pdfdict_set_eq:nn {l__pdfannot/widget}{l_@@/checkbox/annot}
+    \pdfannot_dict_put:nnx {widget}{Parent}{\pdf_object_ref:n{@@_checkbox/field/#1}}
+    \mode_leave_vertical:
+    \hbox_to_wd:nn
+      { #2  }
+      {
+        \rule [-#4]{0pt}{\dim_eval:n{#3+#4} }
+        \pdfannot_widget_box:nnn
+           { #2 }
+           { #3 }
+           { #4 }
+         \hfill
+      }
+    \seq_gput_right:cx {g_@@_checkbox/field/#1/Kids_seq}{ \pdfannot_box_ref_last:}
+    \group_end:
+  }
+
+%    \end{macrocode}
+% \end{macro}
+% \subsection{Appearances}
+% We don't try to force a size or content here.
+% The default appearances are a cross (\cs{texttimes}),
+% Every appearance should have two versions and follow the naming
+% checkbox/\meta{name}/Yes and checkbox/\meta{name}/Off.
+% TODO check if one delay the creation to a sensible place
+% (and don't forget that the appearance key sets an initial
+% value)
+%  \begin{macro}{\pdffield_store_appearance:nn,\@@_store_default_appearances:}
+%    \begin{macrocode}
+\cs_new_protected:Npn \pdffield_store_appearance:nn #1 #2
+  {
+     \pdfxform_new:nnn {@@_#1}{}{#2}
+  }
+
+\cs_new_protected:Nn \@@_store_default_appearances:
+  {
+     \pdffield_store_appearance:nn {checkbox/default/Yes}
+       {
+         \normalsize
+         \fboxsep 0pt
+         \framebox
+           [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ]
+           { \texttimes \strut }
+       }
+     \pdffield_store_appearance:nn {checkbox/default/Off}
+       {
+         \normalsize
+         \fboxsep 0pt
+         \framebox
+           [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ]
+           { \phantom{\texttimes} \strut }
+       }
+  }
+
+\@@_store_default_appearances:
+%    \end{macrocode}
+% \end{macro}
+% We define a dictionary for the AP content, so that we can add R and D too
+%    \begin{macrocode}
+\pdfdict_new:n   {l_@@/checkbox/annot/AP}
+%    \end{macrocode}
+%
+% \subsection{Assembling the checkbox}
+% \begin{macro}{\@@_checkbox_add:n}
+%    \begin{macrocode}
+
+\cs_new_protected:Npn \@@_checkbox_add:n #1
+  {
+    \group_begin:
+    \keys_set_filter:nnnN {pdffield / checkbox }{field}{#1}\l_@@_keys_tmpa_tl
+    \str_if_empty:NT \l_@@_field_name_str
+      {
+        \msg_error:nn {pdffield}{empty-name}
+      }
+    \exp_args:Nx
+      \pdf_object_if_exist:nTF {@@_checkbox/field/\l_@@_field_name_str}
+       {
+          \tl_if_empty:NF \l_@@_keys_tmpa_tl
+           {
+             \msg_warning:nnxx
+               {pdffield}
+               {field-keys-ignored}
+               {\l_@@_field_name_str}
+               {\l_@@_keys_tmpa_tl}
+           }
+       }
+       {
+         \keys_set:nV { pdffield/checkbox } \l_@@_keys_tmpa_tl
+         \exp_args:No
+         \@@_checkbox_field_new:n {\l_@@_field_name_str}
+       }
+    \exp_args:No
+      \@@_checkbox_annot_add:nnnn
+        {\l_@@_field_name_str}
+        {\l_@@_annot_wd_tl }
+        {\l_@@_annot_ht_tl }
+        {\l_@@_annot_dp_tl }
+    \group_end:
+  }
+%    \end{macrocode}
+% \end{macro}
+% \subsection{Keys}
+% The size of the checkbox
+%
+%    \begin{macrocode}
+\tl_new:N \l_@@_annot_ht_tl
+\tl_new:N \l_@@_annot_wd_tl
+\tl_new:N \l_@@_annot_dp_tl
+
+\keys_define:nn { pdffield / checkbox }
+  {
+    ,width  .tl_set:N = \l_@@_annot_wd_tl
+    ,height .tl_set:N = \l_@@_annot_ht_tl
+    ,depth  .tl_set:N = \l_@@_annot_dp_tl
+    ,width  .initial:n = \normalbaselineskip
+    ,height .initial:n = \normalbaselineskip
+    ,depth  .initial:n = 0pt
+  }
+%    \end{macrocode}
+% The names. The main name should not be empty, it is added to the dictionary
+% when the field is created. A new name means a new field.
+% The other names can only be set when the field is created,
+% so we put them in the field group.
+%    \begin{macrocode}
+\keys_define:nn { pdffield / checkbox }
+  {
+    ,name .code:n =
+      {
+        \pdf_string_from_unicode:nnN {utf8/string-raw}{#1}\l_@@_field_name_str
+        \str_if_in:NnT \l_@@_field_name_str {.}
+          {
+            \msg_error:nnx {pdffield}{no-period}{\l_@@_field_name_str}
+          }
+        \str_if_empty:NT\l_@@_field_name_str
+          {
+            \msg_error:nn {pdffield}{empty-name}
+          }
+      }
+    ,name .value_required:n = true
+    ,name .initial:n = checkbox
+    ,altname .code:n =
+      {
+        \pdf_string_from_unicode:nnN {utf8/string}{#1}\l_@@_name_tmpa_str
+        \pdfdict_put:nnx { l_@@/checkbox/field }{TU}{\l_@@_name_tmpa_str}
+      }
+    ,altname .groups:n = {field}
+    ,mappingname .code:n =
+      {
+        \pdf_string_from_unicode:nnN {utf8/string}{#1}\l_@@_name_tmpa_str
+        \pdfdict_put:nnx { l_@@/checkbox/field }{TM}{\l_@@_name_tmpa_str}
+      }
+    ,mappingname .groups:n = {field}
+  }
+%    \end{macrocode}
+
+% A key to decide if the Box is initially checked or not
+%    \begin{macrocode}
+\keys_define:nn { pdffield / checkbox }
+ {
+   ,checked .choice:
+   ,checked / false .code:n =
+     {
+       \pdfdict_put:nnn {l_@@/checkbox/field}{V}{/Off}
+       \pdfdict_put:nnn {l_@@/checkbox/annot}{AS}{/Off}
+       \pdfdict_put:nnn {l_@@/checkbox/field}{DV}{/Off}
+     }
+   ,checked / true .code:n =
+     {
+       \pdfdict_put:nnn {l_@@/checkbox/field}{V}{/Yes}
+       \pdfdict_put:nnn {l_@@/checkbox/annot}{AS}{/Yes}
+       \pdfdict_put:nnn {l_@@/checkbox/field}{DV}{/Yes}
+     }
+   ,checked .default:n = {true}
+   ,checked .initial:n = {false}
+ }
+%    \end{macrocode}
+% Flags. We don't add lots of individual keys but mapped the key names directly
+%    \begin{macrocode}
+\keys_define:nn { pdffield / checkbox }
+  {
+    ,setfieldflags .code:n =
+      {
+          \clist_map_inline:nn {#1}
+           {
+             \bitset_set_true:Nn \l_@@_Ff_bitset {##1}
+           }
+      }
+    ,setfieldflags .groups:n = {field}
+    ,unsetfieldflags .code:n =
+      {
+          \clist_map_inline:nn {#1}
+           {
+             \bitset_set_false:Nn \l_@@_Ff_bitset {##1}
+           }
+      }
+    ,unsetfieldflags .groups:n = {field}
+    ,setannotflags .code:n =
+      {
+          \clist_map_inline:nn {#1}
+           {
+             \bitset_set_true:Nn \l_@@_F_bitset {##1}
+           }
+      }
+    ,unsetannotflags .code:n =
+      {
+          \clist_map_inline:nn {#1}
+           {
+             \bitset_set_false:Nn \l_@@_F_bitset {##1}
+           }
+      }
+  }
+
+\keys_define:nn { pdffield / checkbox }
+  {
+    appearance .code:n = %value is a name of an appearance
+      {
+        \pdfxform_if_exist:nTF {  @@_#1/Yes }
+          {
+            \pdfdict_put:nnn {l_@@/checkbox/annot/AP}
+              {N}
+              {
+                 <<
+                    /Yes ~ \pdfxform_ref:n { @@_#1/Yes}
+                    /Off ~ \pdfxform_ref:n { @@_#1/Off}
+                 >>
+              }
+          }
+          {
+            \msg_error:nnnn{pdffield}{appearance-missing}{#1}{normal}
+          }
+      },
+    appearance .initial:n = checkbox/default,
+  }
+
+\keys_define:nn { pdffield / checkbox }
+  {
+    rollover-appearance .code:n = %value is a name of an appearance
+      {
+       \tl_if_empty:nTF {#1}
+         {
+           \pdfdict_remove:nn {l_@@/checkbox/annot/AP} {R}
+         }
+         {
+           \pdfxform_if_exist:nTF {  @@_#1/Yes }
+             {
+               \pdfdict_put:nnn {l_@@/checkbox/annot/AP}
+                 {R}
+                 {
+                    <<
+                       /Yes ~ \pdfxform_ref:n { @@_#1/Yes}
+                       /Off ~ \pdfxform_ref:n { @@_#1/Off}
+                    >>
+                 }
+              }
+              {
+                \msg_warning:nnnn{pdffield}{appearance-missing}{#1}{rollover}
+              }
+
+         }
+      },
+  }
+
+\keys_define:nn { pdffield / checkbox }
+  {
+    down-appearance .code:n = %value is a name of an appearance
+      {
+       \tl_if_empty:nTF {#1}
+         {
+           \pdfdict_remove:nn {l_@@/checkbox/annot/AP} {D}
+         }
+         {
+           \pdfxform_if_exist:nTF {  @@_#1/Yes }
+            {
+              \pdfdict_put:nnn {l_@@/checkbox/annot/AP}
+                {D}
+                {
+                   <<
+                      /Yes ~ \pdfxform_ref:n { @@_#1/Yes}
+                      /Off ~ \pdfxform_ref:n { @@_#1/Off}
+                   >>
+                }
+            }
+            {
+              \msg_warning:nnnn{pdffield}{appearance-missing}{#1}{down}
+            }
+         }
+      },
+  }
+%    \end{macrocode}
+%
+%  Keys for the AA dictionary. They all trigger javascript option.
+%  \begin{macro}{\@@_define_AAaction_key:nnn}
+%    \begin{macrocode}
+\pdfdict_new:n {l_@@/checkbox/annot/AA}
+\pdfdict_new:n {l_@@/checkbox/field/AA}
+
+\cs_new_protected:Npn \@@_define_AAaction_key:nnn #1 #2 #3 %#1 key, #2 pdf, #3 dict
+  {
+    \keys_define:nn { pdffield / checkbox }
+      {
+         #1 .code:n =
+           {
+             \pdf_string_from_unicode:nnN {utf8/string}{##1}\l_@@_tmpa_str
+             \str_if_empty:NTF \l_@@_tmpa_str
+               {
+                 \pdfdict_remove:nn {l_@@/checkbox/#3/AA}{#2}
+               }
+               {
+                 \pdfdict_put:nnx {l_@@/checkbox/#3/AA}
+                  {#2}
+                  {<</S/JavaScript/JS\l_@@_tmpa_str>>}
+               }
+           },
+        #1 .groups:n = {#3}
+      }
+  }
+\@@_define_AAaction_key:nnn {keystroke}{K}{field}
+\@@_define_AAaction_key:nnn {format}   {F}{field}
+\@@_define_AAaction_key:nnn {validate} {V}{field}
+\@@_define_AAaction_key:nnn {calculate}{C}{field}
+\@@_define_AAaction_key:nnn {onfocus}  {Fo}{annot}
+\@@_define_AAaction_key:nnn {onblur}   {Bl}{annot}
+\@@_define_AAaction_key:nnn {onmousedown}{D}{annot}
+\@@_define_AAaction_key:nnn {onmouseup}{U}{annot}
+\@@_define_AAaction_key:nnn {onenter}  {E}{annot}
+\@@_define_AAaction_key:nnn {onexit}   {X}{annot}
+%    \end{macrocode}
+% \end{macro}
+% \subsection{user commands}
+% \begin{macro}{\pdffield_checkbox:n,\pdffield_setup:nn}
+%    \begin{macrocode}
+\cs_set_eq:NN \pdffield_checkbox:n \@@_checkbox_add:n
+
+\cs_new_protected:Npn \pdffield_setup:nn #1 #2
+ {
+   \keys_set:n {pdffield / #1 } {#2}
+ }
+%</package>
+%    \end{macrocode}
+% \end{macro}
+%\end{implementation}
+
+\endinput%
+%%%%
+%
+%Field dict
+%Ft     : /Btn /Tx /Ch /Sig
+%Parent : OR
+%Kids: array, other fields or annot/widget
+%T: partial fieldname (test string)
+%TU: alternate description (test string)
+%TM: mapping name
+%Q integer (variable text field)
+%Ff: flags ->pdffield/checkbox/field
+%V: value            % not pushbutton
+%DV: default value   % not pushbutton
+%AA: Action dict ... -> see below
+%Opt: array of strings, connected to kids
+%     or for choices, choices
+%TI integer (lists)
+%I array Ch (complicated ...)
+%
+%/DA ( 0 0 1 rg /Ti 12 Tf ) %text field
+%/MaxLen                    %text field
+%
+%Lock dict (Sig)
+%SV dict (Sig)
+%
+%
+%
+%
+%Connected widget:
+%/AS default appearance from AP ( here/Yes or /Off)
+%% Appearance
+%%checkbox
+%/AP <</N <</Yes 2 0 R /Off 3 0 R>>>>
+%/C / Border /BS
+%
+%/OC ?
+%/Structparens?
+%/F flags
+%
+%
+%AA: Submit:
+%  /S   /SubmitForm
+%  /F   file /URI (/F ( ftp : / / www . beatles . com / Movies / AbbeyRoad . mov )
+%  /Fields array
+%
+%  /S /ImportData
+%  /F file
+%
+%  /S /ResetData
+%  /Fields array
+%
+%  /S /JavaScript
+%  /JS text string or stream
+%  %\pdf_flag_new:nn {annot/field/submit} %name is wrong ...
+%  {
+%    Include/Exclude       = 0,
+%    IncludeNoValueFields  = 1,
+%    ExportFormat          = 2,
+%    GetMethod             = 3, % if ExportFormat=0 -> =0 to
+%    SubmitCoordinates     = 4, % if ExportFormat=0 -> =0 to
+%    XFDF                  = 5,
+%    IncludeAppendSaves    = 6,
+%    IncludeAnnotations    = 7,
+%    SubmitPDF             = 8,
+%    CanonicalFormat       = 9,
+%    ExclNonUserAnnots     = 10,
+%    ExclFKey              = 11,
+%    EmbedForm             = 12
+%  }
+% source: %adapted from https://chat.stackexchange.com/transcript/message/54421537#54421537


Property changes on: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffield.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdffile.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -53,7 +53,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -70,7 +70,7 @@
 % Case 1 (Links) are created with the \cs{pdfannot} commands.
 % This module handles the two other cases. Actually from the view
 % of the PDF format they are quite similar: Case 2 is case 3 without the stream
-% object and without the /EF entry in the /FileSpec dictionary (this points to the
+% object and without the /EF entry in the /Filespec dictionary (this points to the
 % stream object of the file). Not embedding the file makes the PDF smaller. But it is
 % also less portable: the files can only be found if they are in the right location
 % relative to the PDF. The normal case is to embed the file.
@@ -78,7 +78,7 @@
 % The tasks to embed and reference such a file are
 % \begin{enumerate}
 % \item Embed the file in a stream.
-% \item Create a FileSpec dictionary which references the stream object in the /EF
+% \item Create a Filespec dictionary which references the stream object in the /EF
 % dictionary:
 % \begin{verbatim}
 %  <<
@@ -94,7 +94,7 @@
 % and name it \texttt{blub.tex}. The second name is then what the user will see
 % in the attachment list or in the properties of an annotation.
 %
-%\item Reference the FileSpec dictionary so that the user can access the file.
+%\item Reference the Filespec dictionary so that the user can access the file.
 %   This can be done in various way:
 %   \begin{enumerate}
 %      \item With an annotation (/Subtype/FileAttachment). This is done by
@@ -104,7 +104,7 @@
 % \medskip
 %             \begin{tabular}{lll}
 %             key      & value type  & notes\\\hline
-%             /FS       & object reference &(FileSpec dictionary)\\
+%             /FS       & object reference &(Filespec dictionary)\\
 %             /Name     & name        & /Graph, /PushPin, /Paperclip, /Tag\\
 %             /Contents & text string & optional but recommended\\
 %             /F        & integer     & Flags\\
@@ -137,7 +137,7 @@
 %        /AF /NamedAF BDC
 %        /Properties <</NamedAF [12 0 R]
 %        \end{verbatim}
-%        The related |/FileSpec| dictionary should contain an
+%        The related |/Filespec| dictionary should contain an
 %        |/AFRelationship| key in this case (but it doesn't harm to add it by
 %        default anyway). The values of this key is describe in table~\ref{tab:AFrel}.
 %
@@ -183,7 +183,7 @@
 % \cs{pdf_object_new:nn}/\cs{pdf_object_write:nn} or primitive commands
 % to create objects.
 % The object number should be stored for the reference
-% in the |/FileSpec| dictionary.
+% in the |/Filespec| dictionary.
 %
 % \begin{verbatim}
 % \pdf_object_unnamed_write:nx {fstream}
@@ -215,12 +215,12 @@
 % see the pdf reference.
 % \end{itemize}
 %
-% \subsubsection{Task 2: Creating the \texttt{/FileSpec} dictionary}
-% The |/FileSpec| dictionary is a simple dictionary object, and can also
+% \subsubsection{Task 2: Creating the \texttt{/Filespec} dictionary}
+% The |/Filespec| dictionary is a simple dictionary object, and can also
 % be created in various ways. If it refers to an embedded file it should
 % reference it in the |/EF| key.
 %
-% \subsubsection{Task 3: Referencing the \texttt{/FileSpec} dictionary}
+% \subsubsection{Task 3: Referencing the \texttt{/Filespec} dictionary}
 %
 % Using the dictionary reference in annotations and |/AF| keys is unproblematic.
 %
@@ -233,9 +233,9 @@
 % |\pdfmanagement_add:nnx{Catalog/Names}{EmbeddedFiles}{|\meta{objref}|}|
 %
 % \subsection{Commands and tools of these module}
-% \begin{function}{file, file/Params, file/streamParams,file/FileSpec}
+% \begin{function}{file, file/Params, file/streamParams,file/Filespec}
 % The module predefines and uses a number of local dictionaries for the
-% components of the stream and the |/FileSpec| object. These dictionaries are
+% components of the stream and the |/Filespec| object. These dictionaries are
 % then used by the \cs{pdffile_embed_XX}.
 % The content of these dictionaries can be changed by users with the commands
 % from the \pkg{l3pdfdict} module, but it should be done only locally
@@ -252,8 +252,8 @@
 % l\_pdffile/Params& ModDate  & |(\file_timestamp:n {\l_pdffile_source_name_str})|\\
 % l\_pdffile/Params& CheckSum & |(\file_mdfive_hash:n{\l_pdffile_source_name_str})|\\
 % l\_pdffile/streamParams&    &  a /ModDate entry with year/month/date  (used with \cs{pdffile_embed_stream:nnn})\\
-% l\_pdffile/FileSpec & Type  & /FileSpec\\
-% l\_pdffile/FileSpec & AFRelationship &Unspecified
+% l\_pdffile/Filespec & Type  & /Filespec\\
+% l\_pdffile/Filespec & AFRelationship &Unspecified
 % \end{tabular}
 % \end{table}
 % \begin{function}{\pdffile_embed_file:nnn}
@@ -261,12 +261,12 @@
 %     \cs{pdffile_embed_file:nnn} \Arg{source filename} \Arg{target filename} \Arg{object name }
 %   \end{syntax}
 %   This commands embeds the file \meta{source filename} in the PDF,
-%   and creates a |/FileSpec| dictionary object named \meta{object name}.
+%   and creates a |/Filespec| dictionary object named \meta{object name}.
 %   The object name must be unique.
 %   The command uses the content of the local
-%   dictionaries |l_pdffile|, |l_pdffile/Params| and |l_pdffile/FileSpec|
+%   dictionaries |l_pdffile|, |l_pdffile/Params| and |l_pdffile/Filespec|
 %   to setup the dictionary entries of the stream object and the
-%   |/FileSpec| dictionary. The |/F| and |/UF| entry are filled
+%   |/Filespec| dictionary. The |/F| and |/UF| entry are filled
 %   with \meta{target filename}.
 %
 %   It is an error if both \meta{target filename} and \meta{source filename}
@@ -274,7 +274,7 @@
 %
 %   If \meta{target filename} is empty \meta{source filename} is used instead.
 %
-%   If \meta{source filename} is empty, only a |/FileSpec| dictionary is
+%   If \meta{source filename} is empty, only a |/Filespec| dictionary is
 %   created.
 %
 %   If the |l_pdffile| dictionary doesn't  contain a
@@ -303,11 +303,11 @@
 %     \cs{pdffile_embed_stream:nnn} \Arg{content} \Arg{target filename} \Arg{object name }
 %   \end{syntax}
 %   This commands embeds the \meta{content} in the PDF in a stream objects and
-%   creates a |/FileSpec| dictionary object named \meta{object name}.
+%   creates a |/Filespec| dictionary object named \meta{object name}.
 %   \meta{content} is wrapped in a \cs{exp_not:n}.
 %   The object name must be unique. The command uses the content of the local
-%   dictionaries |l_pdffile|, |l_pdffile/streamParams| and |l_pdffile/FileSpec|
-%   to setup the dictionary entries of the stream object and the /FileSpec dictionary.
+%   dictionaries |l_pdffile|, |l_pdffile/streamParams| and |l_pdffile/Filespec|
+%   to setup the dictionary entries of the stream object and the /Filespec dictionary.
 %   The /F and /UF entry are filled with \meta{target filename}.
 %   If \meta{target filename} is empty the fix name \texttt{stream.txt}
 %   is used instead.
@@ -353,12 +353,12 @@
 % \begin{verbatim}
 % \group_begin:
 % %set the relationship:
-% \pdfdict_put:nnn  {l_pdffile/FileSpec} {AFRelationship}{/Source}
+% \pdfdict_put:nnn  {l_pdffile/Filespec} {AFRelationship}{/Source}
 % %set the description key. The text must first be converted:
 % \pdf_string_from_unicode:nnN {utf16/string}
 %    {this~is~an~odd~description~with~öäü}
 %    \l_tmpa_str
-% \pdfdict_put:nnx  {l_pdffile/FileSpec} {Desc}{\l_tmpa_str}
+% \pdfdict_put:nnx  {l_pdffile/Filespec} {Desc}{\l_tmpa_str}
 % %embeds testinput.txt and calls it grüße.txt
 % \pdffile_embed_file:nnn {testinput.txt}{grüße.txt}{file:example1}
 % %reference it in the panel
@@ -376,7 +376,7 @@
 %
 %    \begin{macrocode}
 %<*header>
-\ProvidesExplPackage {l3pdffile} {2021-02-22} {0.95a}
+\ProvidesExplPackage {l3pdffile} {2021-03-07} {0.95b}
   {embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
 \RequirePackage{l3pdftools}  %temporarly!!
 %</header>
@@ -402,7 +402,7 @@
 
 \msg_new:nnn { pdffile } { target-name-missing }
   {
-    a~target~name~for~the~/FileSpec~dictionary~is~missing.
+    a~target~name~for~the~/Filespec~dictionary~is~missing.
   }
 
 \msg_new:nnn { pdffile } { object-exists }
@@ -492,10 +492,10 @@
                   \int_use:N\c_sys_day_int
                )
              }
-\pdfdict_new:n { l_pdffile/FileSpec }
-\pdfdict_put:nnn { l_pdffile/FileSpec }
-  {Type} { /FileSpec }
-\pdfdict_put:nnn { l_pdffile/FileSpec }
+\pdfdict_new:n { l_pdffile/Filespec }
+\pdfdict_put:nnn { l_pdffile/Filespec }
+  {Type} { /Filespec }
+\pdfdict_put:nnn { l_pdffile/Filespec }
   {AFRelationship} { /Unspecified }
 
 %    \end{macrocode}
@@ -621,11 +621,11 @@
         \pdf_object_new:nn   { #1 } {dict}
         \group_begin:
           \@@_filename_convert_to_print:nN  { #2 } \l_@@_tmpa_str
-          \pdfdict_put:nnx {l_pdffile/FileSpec}{F} { \l_@@_tmpa_str }
-          \pdfdict_put:nnx {l_pdffile/FileSpec}{UF}{ \l_@@_tmpa_str }
+          \pdfdict_put:nnx {l_pdffile/Filespec}{F} { \l_@@_tmpa_str }
+          \pdfdict_put:nnx {l_pdffile/Filespec}{UF}{ \l_@@_tmpa_str }
           \pdf_object_write:nx { #1 }
             {
-              \pdfdict_use:n { l_pdffile/FileSpec}
+              \pdfdict_use:n { l_pdffile/Filespec}
               \tl_if_empty:nF { #3 }
                 {
                   /EF <</F~#3 /UF~#3>>

Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmanagement.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a,released 2021-02-22}
+% \date{Version 0.95b,released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -557,7 +557,7 @@
 %<@@=pdfmanagement>
 %<*header>
 %
-\ProvidesExplPackage {l3pdfmanagement} {2021-02-22} {0.95a}
+\ProvidesExplPackage {l3pdfmanagement} {2021-03-07} {0.95b}
   {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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfmeta.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -53,7 +53,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-21}
+% \date{Version 0.95b, released 2021-02-21}
 %
 % \maketitle
 % \begin{documentation}
@@ -340,7 +340,7 @@
 %    \begin{macrocode}
 %<@@=pdfmeta>
 %<*header>
-\ProvidesExplPackage {l3pdfmeta} {2021-02-22} {0.95a}
+\ProvidesExplPackage {l3pdfmeta} {2021-03-07} {0.95b}
   {PDF-Standards---LaTeX PDF management testphase bundle}
 %</header>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdftools.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -53,7 +53,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -164,7 +164,7 @@
 %    This command adds a BDC marked content operator to the current page stream.
 %   \meta{tag} is the tag of this operator (without the leading slash).
 %   As object this commands uses the last anonymous dictionary object created with
-%   \cs{pdf_object_now:nn}. It lies in the responsibility of the user that the last
+%   \cs{pdf_object_unnamed_write:nn}. It lies in the responsibility of the user that the last
 %   object is the wanted one. Like with \cs{pdf_bdcobject:nn} the command works correctly
 %   only if the resources management has been activated and should be used only
 %   if this can be ensured.
@@ -208,7 +208,7 @@
 %
 %    \begin{macrocode}
 %<*header>
-\ProvidesExplPackage {l3pdftools} {2021-02-22} {0.95a}
+\ProvidesExplPackage {l3pdftools} {2021-03-07} {0.95b}
   {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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/l3pdfxform.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -52,7 +52,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -133,7 +133,7 @@
 %    \begin{macrocode}
 %<@@=pdf>
 %<*header>
-\ProvidesExplPackage {l3pdfxform-beta} {2021-02-22} {0.95a}
+\ProvidesExplPackage {l3pdfxform-beta} {2021-03-07} {0.95b}
   {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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/ltdocinit.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -164,7 +164,7 @@
 %    \begin{macrocode}
 %<@@=pdfmanagement>
 %<*header>
-\ProvidesExplPackage {ltdocinit} {2021-02-22} {0.95a}
+\ProvidesExplPackage {ltdocinit} {2021-03-07} {0.95b}
   {Initialize document metadata}
 %</header>
 %    \end{macrocode}
@@ -189,18 +189,19 @@
 %    \end{macrocode}
 % The wanted backend must be detected first, we read the init key and then
 % force the loading by either loading l3pdf (+ expl3) or only expl3.
+% The backend contains now management command, so the boolean should true first.
 %    \begin{macrocode}
         \keys_set_groups:nnn { document / metadata} {init}{ #1 }
         %should be loaded after the backend is set, and only if not in the kernel
+        \bool_gset_true:N \g_@@_active_bool
         \cs_if_free:NTF \pdf_uncompress:
          {\RequirePackage{l3pdf}}{\RequirePackage{expl3}}
 %    \end{macrocode}
-% Now we load the extra backend code and set the boolean to true
+% Now we load the extra backend code
 %    \begin{macrocode}
         \ExplSyntaxOn\makeatletter
           \file_input:n {l3backend-testphase-\c_sys_backend_str.def}
         \ExplSyntaxOff\makeatother
-        \bool_gset_true:N \g_@@_active_bool
 %    \end{macrocode}
 % set the default language, process the rest of the keys,
 % and setup the generic driver
@@ -341,7 +342,6 @@
         \msg_warning:nnn{pdf}{unknown-standard}{#1}
       }
     ,pdfmanagement .bool_gset:N = \g_@@_active_bool
-    ,pdfmanagement .initial:n =  {true}
     ,firstaidoff .clist_gset:N = \g_@@_firstaidoff_clist
   }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-firstaid.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -67,11 +67,11 @@
 % |firstaidoff={name1,name2,...}|.
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage {pdfmanagement-firstaid} {2021-02-22} {0.95a}
+\ProvidesExplPackage {pdfmanagement-firstaid} {2021-03-07} {0.95b}
   {LaTeX PDF management testphase bundle / firstaid-patches}
 
 %<@@=pdfmanagement>
-\clist_map_inline:nn {pgf,transparent,hyperxmp,pdflscape,xcolor,color}
+\clist_map_inline:nn {pgf,transparent,hyperxmp,pdflscape,xcolor,color,beamer}
   {
     \bool_new:c       { g_@@_firstaid_#1_bool }
     \bool_gset_true:c { g_@@_firstaid_#1_bool }
@@ -86,6 +86,15 @@
 \msg_new:nnn  { pdfmanagement } { firstaid }
               { loading~pdfmanagement~firstaid~code~for~#1 }
 %    \end{macrocode}
+% \subsection{\pkg{beamer}}
+% \pkg{beamer} makes use of the now unsupported syntax |linkbordercolor={.5 .5 .5}|.
+% To avoid an error we define this color as a name.
+%    \begin{macrocode}
+\bool_if:NT \g_@@_firstaid_beamer_bool
+  {
+    \color_set:nnn{.5~.5~.5}{rgb}{0.5,0.5,0.5}
+  }
+%    \end{macrocode}
 % \subsection{\pkg{color}}
 %
 %  \pkg{color} is not incompatible, but the new \pkg{hyperref} driver makes use of

Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.dtx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Version 0.95a, released 2021-02-22}
+% \date{Version 0.95b, released 2021-03-07}
 %
 % \maketitle
 % \begin{documentation}
@@ -274,6 +274,10 @@
 % for external incompatible packages. This patches will disappear as soon as
 % the packages are natively compatible. It is loaded automatically.
 %
+% \item[l3pdffield]  Commands for form fields. Currently it only provides commands
+% for checkboxes. It must be loaded explicitly as with
+% |\usepackage{l3pdffield-testphase}|.
+%
 % \end{description}
 % \section{Incompabilities}
 %
@@ -380,7 +384,7 @@
 %    \begin{macrocode}
 %<@@=pdf>
 %<*package>
-\ProvidesExplPackage {pdfmanagement-testphase} {2021-02-22} {0.95a}
+\ProvidesExplPackage {pdfmanagement-testphase} {2021-03-07} {0.95b}
   {LaTeX PDF management testphase bundle}
 \providecommand\IfFormatAtLeastTF{\@ifl at t@r\fmtversion}
 \IfFormatAtLeastTF{2020-10-01}{}{
@@ -408,7 +412,7 @@
 %    \begin{macrocode}
 %<*header>
 \ProvidesExplFile
-  {pdfmanagement-testphase.ltx}{2021-02-22}{0.95a}
+  {pdfmanagement-testphase.ltx}{2021-03-07}{0.95b}
   {PDF~management~code~(testphase)}
 %</header>
 %<*package>

Modified: trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.ins	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/source/latex/pdfmanagement-testphase/pdfmanagement-testphase.ins	2021-03-07 22:05:12 UTC (rev 58199)
@@ -124,6 +124,14 @@
 %  }
 
 \generate
+  {%
+    \file{l3pdffield-testphase.sty}
+      {%
+        \from{l3pdffield.dtx}{package}
+      }%
+  }
+
+\generate
   {
    \file{l3backend-testphase-dvipdfmx.def}
      {

Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty	2021-03-07 22:05:12 UTC (rev 58199)
@@ -23,7 +23,7 @@
 %%
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesPackage{color-ltx}
-          [2021/02/22 v1.2d Standard LaTeX Color (patched for l3color) (DPC)]
+          [2021/03/07 v1.2e Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase 2021-03-07 v0.95b) (DPC)]
 \edef\Gin at codes{%
  \catcode`\noexpand\^^A\the\catcode`\^^A\relax
  \catcode`\noexpand\"\the\catcode`\"\relax

Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def	2021-03-07 22:05:12 UTC (rev 58199)
@@ -20,7 +20,7 @@
 %% 
 %% File: hyperref-generic.dtx
 \ProvidesFile{hgeneric-testphase.def}
-  [2021/02/22 v0.95a %
+  [2021/02/22 v0.95b %
   generic Hyperref driver for the LaTeX PDF management testphase bundle]
 
 \RequirePackage{etoolbox} %why?
@@ -505,12 +505,10 @@
          \cs_set_eq:NN \% \c_percent_str
          \Hy at safe@activestrue
          \mode_leave_vertical:
+         \pdfannot_dict_put:nnx {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>}
          \pdfannot_link:nxn { URI }
            {
-             /A
-               <<
-                 \pdfdict_use:n {l_hyp/annot/A/URI}
-               >>
+     %        /A
            }
            {
              #1
@@ -557,12 +555,11 @@
             \pdfdict_put:nno{l_hyp/annot/A/Next}{Next}{\Hy at href@nextactionraw}
           }
         \mode_leave_vertical:
+        \pdfannot_dict_put:nnx {link/GoToR}{A}{<<\pdfdict_use:n {l_hyp/annot/A/GoToR}>>}
         \pdfannot_link:nxn %expansion??
           { GoToR }
           {
-            /A<<
-              \pdfdict_use:n {l_hyp/annot/A/GoToR}
-            >>
+  %          /A<<
           }
           {
             #1\Hy at xspace@end
@@ -609,13 +606,11 @@
               \pdfdict_put:nno{l_hyp/annot/A/Next}{Next}{\Hy at href@nextactionraw}
             }
           \mode_leave_vertical:
+          \pdfannot_dict_put:nnx {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>}
           \pdfannot_link:nxn
             { Launch }
             {
-              /A
-              <<
-                \pdfdict_use:n {l_hyp/annot/A/Launch}
-              >>
+  %            /A
             }
             {
               #2\Hy at xspace@end
@@ -651,12 +646,9 @@
                  \str_remove_once:Nn \Hy at href@nextactionraw {/Next}
                  \pdfdict_put:nno{l_hyp/annot/A/Next}{Next}{\Hy at href@nextactionraw}
                }
+             \pdfannot_dict_put:nnx {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>}
              \pdfannot_link:nxn { Named }
               {
-                /A
-                  <<
-                    \pdfdict_use:n { l_hyp/annot/A/Named }
-                  >>
               }
               {
                 #2

Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty	2021-03-07 22:05:12 UTC (rev 58199)
@@ -20,7 +20,7 @@
 % for those people who are interested.
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \ProvidesExplPackage{hyperxmp-patches-tmp-ltx}
-  {2021-02-22} {0.95a}
+  {2021-03-07} {0.95b}
   {Store hyperref metadata in XMP format / temporay patches to test pdfresource management ... UF}
 
 \cs_if_exist:NT \pdfmanagement_add:nnn

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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def	2021-03-07 22:05:12 UTC (rev 58199)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3backend-testphase.dtx
 \ProvidesExplFile
-  {l3backend-testphase-dvipdfmx.def}{2021-02-22}{}
+  {l3backend-testphase-dvipdfmx.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
 \RequirePackage{l3ref-tmp}
 \cs_generate_variant:Nn \ref_label:nn {en}

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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def	2021-03-07 22:05:12 UTC (rev 58199)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3backend-testphase.dtx
 \ProvidesExplFile
-  {l3backend-testphase-dvips.def}{2021-02-22}{}
+  {l3backend-testphase-dvips.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
 \RequirePackage{l3ref-tmp}
 \cs_generate_variant:Nn \ref_label:nn {en}

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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def	2021-03-07 22:05:12 UTC (rev 58199)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3backend-testphase.dtx
 \ProvidesExplFile
-  {l3backend-testphase-dvisvgm.def}{2021-02-22}{}
+  {l3backend-testphase-dvisvgm.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
 \RequirePackage{l3ref-tmp}
 \cs_generate_variant:Nn \ref_label:nn {en}

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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def	2021-03-07 22:05:12 UTC (rev 58199)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3backend-testphase.dtx
 \ProvidesExplFile
-  {l3backend-testphase-luatex.def}{2021-02-22}{}
+  {l3backend-testphase-luatex.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
 \RequirePackage{l3ref-tmp}
 \cs_generate_variant:Nn \ref_label:nn {en}

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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def	2021-03-07 22:05:12 UTC (rev 58199)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3backend-testphase.dtx
 \ProvidesExplFile
-  {l3backend-testphase-pdftex.def}{2021-02-22}{}
+  {l3backend-testphase-pdftex.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
 \RequirePackage{l3ref-tmp}
 \cs_generate_variant:Nn \ref_label:nn {en}

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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def	2021-03-07 22:05:12 UTC (rev 58199)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3backend-testphase.dtx
 \ProvidesExplFile
-  {l3backend-testphase-xetex.def}{2021-02-22}{}
+  {l3backend-testphase-xetex.def}{2021-03-07}{}
   {LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
 \RequirePackage{l3ref-tmp}
 \cs_generate_variant:Nn \ref_label:nn {en}

Added: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty	2021-03-07 22:05:12 UTC (rev 58199)
@@ -0,0 +1,455 @@
+%%
+%% This is file `l3pdffield-testphase.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3pdffield.dtx  (with options: `package')
+%% 
+%% Copyright (C) 2019-2021 The LaTeX Project
+%% 
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version.  The latest
+%% version of this license is in the file:
+%% 
+%%    https://www.latex-project.org/lppl.txt
+%% 
+%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%% 
+%% File: l3pdfpdffield-checkbox.dtx
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesExplPackage{l3pdffield-checkbox}{0000-00-00}{v0.00a}{form field checkbox}%
+\csname HyField at NeedAppearancesfalse\endcsname % suppress NeedAppearances
+\str_new:N \l__pdffield_field_name_str
+\str_new:N \l__pdffield_tmpa_str
+\str_new:N \l__pdffield_name_tmpa_str
+\tl_new:N \l__pdffield_keys_tmpa_tl
+\msg_new:nnn {pdffield}{no-period}
+  {
+    The~field~name~`#1`~contains~a~period. \\
+    This~is~not~allowed. `
+  }
+\msg_new:nnn {pdffield}{empty-name}
+  {
+    The~field~name~is~empty. \\
+    This~is~not~allowed. `
+  }
+\msg_new:nnn {pdffield}{appearance-missing}
+  {
+    The~appearance~`#1`~is~missing~for~the~#2~appearance.
+  }
+\msg_new:nnn {pdffield}{field-keys-ignored}
+  {
+    The~field~`#1`~is~already~initialized\\
+    The~field~keys~`#2`~are~ignored.
+  }
+
+\bitset_new:Nn \l__pdffield_Ff_bitset
+ {
+    ReadOnly          = 0,
+    Required          = 1,
+    NoExport          = 2,
+    Multiline         = 12,%Tx
+    Password          = 13,
+    NoToggleToOff     = 14,%Btn, radio button
+    Radio             = 15,%Btn: Radio:    15=1, 16=0
+    Pushbutton        = 16,%Btn: Checkbox: 15=0, 16=0
+                           %Btn: Pushbutton: 16=1
+    Combo             = 17,%Ch: Combo=1 List=0
+    Edit              = 18,%Ch, Combo=1 -> + edit field
+    Sort              = 19,%Ch, not relevant for view...
+    FileSelect        = 20,%Tx
+    MultiSelect       = 21,%Ch
+    DoNotSpellCheck   = 22,%Tx, Ch (if Combo + Edit set)
+    DoNotScroll       = 23,%Tx
+    Comb              = 24,%Tx, requires MaxLen in dict
+    RadiosInUnison    = 25,%Btn Radio
+    RichText          = 25,%Tx
+    CommitOnSelChange = 26
+  }
+
+\bitset_new:Nn \l__pdffield_F_bitset
+  {
+    Invisible      = 1,
+    Hidden         = 2,
+    Print          = 3,
+    NoZoom         = 4,
+    NoRotate       = 5,
+    NoView         = 6,
+    ReadOnly       = 7,
+    Locked         = 8,
+    ToggleNoView   = 9,
+    LockedContents = 10
+  }
+\pdfdict_new:n   {l__pdffield/checkbox/field}
+\pdfdict_put:nnn {l__pdffield/checkbox/field}{FT}{/Btn}
+\cs_new_protected:Npn \__pdffield_checkbox_field_new:n #1
+  {
+      \group_begin:
+      \pdf_object_new:nn {__pdffield_checkbox/field/#1}      {dict}
+      \pdf_object_new:nn {__pdffield_checkbox/field/#1/Kids} {array}
+      \seq_new:c {g__pdffield_checkbox/field/#1/Kids_seq}
+      \hook_gput_code:nnn {shipout/lastpage}{pdffield} %xetex needs this ...
+        {
+          \pdf_object_write:nx {__pdffield_checkbox/field/#1/Kids}
+            {
+              \seq_use:cn{g__pdffield_checkbox/field/#1/Kids_seq}{~}
+            }
+        }
+      \pdfdict_put:nnn {l__pdffield/checkbox/field}{T}{(#1)}
+     % V,DV are names describing the appearance. With checkboxes
+     % the values /Yes and /Off are used.
+     % this values are taken from the outside
+      \pdfdict_put:nnx {l__pdffield/checkbox/field}
+         {Kids}
+         {
+           \pdf_object_ref:n {__pdffield_checkbox/field/#1/Kids}
+         }
+      \bitset_set_false:Nn \l__pdffield_Ff_bitset  {Radio}
+      \bitset_set_false:Nn \l__pdffield_Ff_bitset  {Pushbutton}
+      \pdfdict_put:nnx {l__pdffield/checkbox/field}
+        {Ff}
+        {\bitset_to_arabic:N \l__pdffield_Ff_bitset }
+      \pdfdict_if_empty:nF{l__pdffield/checkbox/field/AA}
+        {
+          \pdfmeta_standard_verify:nT
+            {annot_widget_no_AA}
+            {
+              \pdfdict_put:nnx
+                {l__pdffield/checkbox/field}
+                {AA}
+                {<<\pdfdict_use:n {l__pdffield/checkbox/field/AA}>>}
+            }
+        }
+      \pdf_object_write:nx {__pdffield_checkbox/field/#1} { \pdfdict_use:n {l__pdffield/checkbox/field} }
+      \pdfmanagement_add:nnx
+        { Catalog / AcroForm }
+        { Fields }
+        {\pdf_object_ref:n {__pdffield_checkbox/field/#1} }
+      \group_end:
+  }
+
+\pdfdict_new:n   {l__pdffield/checkbox/annot}
+\pdfdict_put:nnn {l__pdffield/checkbox/annot}{Subtype}{/Widget}
+\cs_new_protected:Npn \__pdffield_checkbox_annot_add:nnnn #1 #2 #3 #4 %name, wd, ht, dp,
+  {
+    \group_begin:
+    \pdfdict_put:nnx {l__pdffield/checkbox/annot}{AP}{<<\pdfdict_use:n{l__pdffield/checkbox/annot/AP}>>}
+    \pdfmeta_standard_verify:nF
+      {annot_flags}
+      {
+        \bitset_set_true:Nn  \l__pdffield_F_bitset {Print}
+        \bitset_set_false:Nn \l__pdffield_F_bitset {Hidden}
+        \bitset_set_false:Nn \l__pdffield_F_bitset {Invisible}
+        \bitset_set_false:Nn \l__pdffield_F_bitset {NoView}
+      }
+    \pdfdict_if_empty:nF{l__pdffield/checkbox/annot/AA}
+      {
+        \pdfmeta_standard_verify:nT
+         {annot_widget_no_AA}
+         {
+            \pdfdict_put:nnx
+              {l__pdffield/checkbox/annot}
+              {AA}
+              {<<\pdfdict_use:n {l__pdffield/checkbox/annot/AA}>>}
+         }
+      }
+    \pdfdict_put:nnx {l__pdffield/checkbox/annot}{F}{ \bitset_to_arabic:N \l__pdffield_F_bitset }
+    \pdfdict_set_eq:nn {l__pdfannot/widget}{l__pdffield/checkbox/annot}
+    \pdfannot_dict_put:nnx {widget}{Parent}{\pdf_object_ref:n{__pdffield_checkbox/field/#1}}
+    \mode_leave_vertical:
+    \hbox_to_wd:nn
+      { #2  }
+      {
+        \rule [-#4]{0pt}{\dim_eval:n{#3+#4} }
+        \pdfannot_widget_box:nnn
+           { #2 }
+           { #3 }
+           { #4 }
+         \hfill
+      }
+    \seq_gput_right:cx {g__pdffield_checkbox/field/#1/Kids_seq}{ \pdfannot_box_ref_last:}
+    \group_end:
+  }
+
+\cs_new_protected:Npn \pdffield_store_appearance:nn #1 #2
+  {
+     \pdfxform_new:nnn {__pdffield_#1}{}{#2}
+  }
+
+\cs_new_protected:Nn \__pdffield_store_default_appearances:
+  {
+     \pdffield_store_appearance:nn {checkbox/default/Yes}
+       {
+         \normalsize
+         \fboxsep 0pt
+         \framebox
+           [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ]
+           { \texttimes \strut }
+       }
+     \pdffield_store_appearance:nn {checkbox/default/Off}
+       {
+         \normalsize
+         \fboxsep 0pt
+         \framebox
+           [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ]
+           { \phantom{\texttimes} \strut }
+       }
+  }
+
+\__pdffield_store_default_appearances:
+\pdfdict_new:n   {l__pdffield/checkbox/annot/AP}
+
+\cs_new_protected:Npn \__pdffield_checkbox_add:n #1
+  {
+    \group_begin:
+    \keys_set_filter:nnnN {pdffield / checkbox }{field}{#1}\l__pdffield_keys_tmpa_tl
+    \str_if_empty:NT \l__pdffield_field_name_str
+      {
+        \msg_error:nn {pdffield}{empty-name}
+      }
+    \exp_args:Nx
+      \pdf_object_if_exist:nTF {__pdffield_checkbox/field/\l__pdffield_field_name_str}
+       {
+          \tl_if_empty:NF \l__pdffield_keys_tmpa_tl
+           {
+             \msg_warning:nnxx
+               {pdffield}
+               {field-keys-ignored}
+               {\l__pdffield_field_name_str}
+               {\l__pdffield_keys_tmpa_tl}
+           }
+       }
+       {
+         \keys_set:nV { pdffield/checkbox } \l__pdffield_keys_tmpa_tl
+         \exp_args:No
+         \__pdffield_checkbox_field_new:n {\l__pdffield_field_name_str}
+       }
+    \exp_args:No
+      \__pdffield_checkbox_annot_add:nnnn
+        {\l__pdffield_field_name_str}
+        {\l__pdffield_annot_wd_tl }
+        {\l__pdffield_annot_ht_tl }
+        {\l__pdffield_annot_dp_tl }
+    \group_end:
+  }
+\tl_new:N \l__pdffield_annot_ht_tl
+\tl_new:N \l__pdffield_annot_wd_tl
+\tl_new:N \l__pdffield_annot_dp_tl
+
+\keys_define:nn { pdffield / checkbox }
+  {
+    ,width  .tl_set:N = \l__pdffield_annot_wd_tl
+    ,height .tl_set:N = \l__pdffield_annot_ht_tl
+    ,depth  .tl_set:N = \l__pdffield_annot_dp_tl
+    ,width  .initial:n = \normalbaselineskip
+    ,height .initial:n = \normalbaselineskip
+    ,depth  .initial:n = 0pt
+  }
+\keys_define:nn { pdffield / checkbox }
+  {
+    ,name .code:n =
+      {
+        \pdf_string_from_unicode:nnN {utf8/string-raw}{#1}\l__pdffield_field_name_str
+        \str_if_in:NnT \l__pdffield_field_name_str {.}
+          {
+            \msg_error:nnx {pdffield}{no-period}{\l__pdffield_field_name_str}
+          }
+        \str_if_empty:NT\l__pdffield_field_name_str
+          {
+            \msg_error:nn {pdffield}{empty-name}
+          }
+      }
+    ,name .value_required:n = true
+    ,name .initial:n = checkbox
+    ,altname .code:n =
+      {
+        \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_name_tmpa_str
+        \pdfdict_put:nnx { l__pdffield/checkbox/field }{TU}{\l__pdffield_name_tmpa_str}
+      }
+    ,altname .groups:n = {field}
+    ,mappingname .code:n =
+      {
+        \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_name_tmpa_str
+        \pdfdict_put:nnx { l__pdffield/checkbox/field }{TM}{\l__pdffield_name_tmpa_str}
+      }
+    ,mappingname .groups:n = {field}
+  }
+
+\keys_define:nn { pdffield / checkbox }
+ {
+   ,checked .choice:
+   ,checked / false .code:n =
+     {
+       \pdfdict_put:nnn {l__pdffield/checkbox/field}{V}{/Off}
+       \pdfdict_put:nnn {l__pdffield/checkbox/annot}{AS}{/Off}
+       \pdfdict_put:nnn {l__pdffield/checkbox/field}{DV}{/Off}
+     }
+   ,checked / true .code:n =
+     {
+       \pdfdict_put:nnn {l__pdffield/checkbox/field}{V}{/Yes}
+       \pdfdict_put:nnn {l__pdffield/checkbox/annot}{AS}{/Yes}
+       \pdfdict_put:nnn {l__pdffield/checkbox/field}{DV}{/Yes}
+     }
+   ,checked .default:n = {true}
+   ,checked .initial:n = {false}
+ }
+\keys_define:nn { pdffield / checkbox }
+  {
+    ,setfieldflags .code:n =
+      {
+          \clist_map_inline:nn {#1}
+           {
+             \bitset_set_true:Nn \l__pdffield_Ff_bitset {##1}
+           }
+      }
+    ,setfieldflags .groups:n = {field}
+    ,unsetfieldflags .code:n =
+      {
+          \clist_map_inline:nn {#1}
+           {
+             \bitset_set_false:Nn \l__pdffield_Ff_bitset {##1}
+           }
+      }
+    ,unsetfieldflags .groups:n = {field}
+    ,setannotflags .code:n =
+      {
+          \clist_map_inline:nn {#1}
+           {
+             \bitset_set_true:Nn \l__pdffield_F_bitset {##1}
+           }
+      }
+    ,unsetannotflags .code:n =
+      {
+          \clist_map_inline:nn {#1}
+           {
+             \bitset_set_false:Nn \l__pdffield_F_bitset {##1}
+           }
+      }
+  }
+
+\keys_define:nn { pdffield / checkbox }
+  {
+    appearance .code:n = %value is a name of an appearance
+      {
+        \pdfxform_if_exist:nTF {  __pdffield_#1/Yes }
+          {
+            \pdfdict_put:nnn {l__pdffield/checkbox/annot/AP}
+              {N}
+              {
+                 <<
+                    /Yes ~ \pdfxform_ref:n { __pdffield_#1/Yes}
+                    /Off ~ \pdfxform_ref:n { __pdffield_#1/Off}
+                 >>
+              }
+          }
+          {
+            \msg_error:nnnn{pdffield}{appearance-missing}{#1}{normal}
+          }
+      },
+    appearance .initial:n = checkbox/default,
+  }
+
+\keys_define:nn { pdffield / checkbox }
+  {
+    rollover-appearance .code:n = %value is a name of an appearance
+      {
+       \tl_if_empty:nTF {#1}
+         {
+           \pdfdict_remove:nn {l__pdffield/checkbox/annot/AP} {R}
+         }
+         {
+           \pdfxform_if_exist:nTF {  __pdffield_#1/Yes }
+             {
+               \pdfdict_put:nnn {l__pdffield/checkbox/annot/AP}
+                 {R}
+                 {
+                    <<
+                       /Yes ~ \pdfxform_ref:n { __pdffield_#1/Yes}
+                       /Off ~ \pdfxform_ref:n { __pdffield_#1/Off}
+                    >>
+                 }
+              }
+              {
+                \msg_warning:nnnn{pdffield}{appearance-missing}{#1}{rollover}
+              }
+
+         }
+      },
+  }
+
+\keys_define:nn { pdffield / checkbox }
+  {
+    down-appearance .code:n = %value is a name of an appearance
+      {
+       \tl_if_empty:nTF {#1}
+         {
+           \pdfdict_remove:nn {l__pdffield/checkbox/annot/AP} {D}
+         }
+         {
+           \pdfxform_if_exist:nTF {  __pdffield_#1/Yes }
+            {
+              \pdfdict_put:nnn {l__pdffield/checkbox/annot/AP}
+                {D}
+                {
+                   <<
+                      /Yes ~ \pdfxform_ref:n { __pdffield_#1/Yes}
+                      /Off ~ \pdfxform_ref:n { __pdffield_#1/Off}
+                   >>
+                }
+            }
+            {
+              \msg_warning:nnnn{pdffield}{appearance-missing}{#1}{down}
+            }
+         }
+      },
+  }
+\pdfdict_new:n {l__pdffield/checkbox/annot/AA}
+\pdfdict_new:n {l__pdffield/checkbox/field/AA}
+
+\cs_new_protected:Npn \__pdffield_define_AAaction_key:nnn #1 #2 #3 %#1 key, #2 pdf, #3 dict
+  {
+    \keys_define:nn { pdffield / checkbox }
+      {
+         #1 .code:n =
+           {
+             \pdf_string_from_unicode:nnN {utf8/string}{##1}\l__pdffield_tmpa_str
+             \str_if_empty:NTF \l__pdffield_tmpa_str
+               {
+                 \pdfdict_remove:nn {l__pdffield/checkbox/#3/AA}{#2}
+               }
+               {
+                 \pdfdict_put:nnx {l__pdffield/checkbox/#3/AA}
+                  {#2}
+                  {<</S/JavaScript/JS\l__pdffield_tmpa_str>>}
+               }
+           },
+        #1 .groups:n = {#3}
+      }
+  }
+\__pdffield_define_AAaction_key:nnn {keystroke}{K}{field}
+\__pdffield_define_AAaction_key:nnn {format}   {F}{field}
+\__pdffield_define_AAaction_key:nnn {validate} {V}{field}
+\__pdffield_define_AAaction_key:nnn {calculate}{C}{field}
+\__pdffield_define_AAaction_key:nnn {onfocus}  {Fo}{annot}
+\__pdffield_define_AAaction_key:nnn {onblur}   {Bl}{annot}
+\__pdffield_define_AAaction_key:nnn {onmousedown}{D}{annot}
+\__pdffield_define_AAaction_key:nnn {onmouseup}{U}{annot}
+\__pdffield_define_AAaction_key:nnn {onenter}  {E}{annot}
+\__pdffield_define_AAaction_key:nnn {onexit}   {X}{annot}
+\cs_set_eq:NN \pdffield_checkbox:n \__pdffield_checkbox_add:n
+
+\cs_new_protected:Npn \pdffield_setup:nn #1 #2
+ {
+   \keys_set:n {pdffield / #1 } {#2}
+ }
+
+\endinput%
+%%%%
+%% Appearance
+%%checkbox
+%% 
+%%
+%% End of file `l3pdffield-testphase.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty	2021-03-07 22:05:12 UTC (rev 58199)
@@ -1,7 +1,7 @@
 %%
 %% This is file `pdflscape-ltx.sty',
 %%
-%% Version: 2021/02/22 v0.95a
+%% Version: 2021/02/22 v0.95b
 %%
 %% Copyright (C) 2021 The LaTeX Project
 %%
@@ -24,7 +24,7 @@
 %% This work consists of the main source file pdflscape-ltx.sty
 %%
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage {pdflscape-ltx}{2021/02/22}{v0.95a}
+\ProvidesExplPackage {pdflscape-ltx}{2021/02/22}{v0.95b}
  {Display of landscape pages in PDF - adaption of pdflscape to the PDFmanagement bundle (testphase)}
 
 \RequirePackage{lscape}

Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty	2021-03-07 22:05:12 UTC (rev 58199)
@@ -19,10 +19,10 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: pdfmanagement-firstaid.dtx
-\ProvidesExplPackage {pdfmanagement-firstaid} {2021-02-22} {0.95a}
+\ProvidesExplPackage {pdfmanagement-firstaid} {2021-03-07} {0.95b}
   {LaTeX PDF management testphase bundle / firstaid-patches}
 
-\clist_map_inline:nn {pgf,transparent,hyperxmp,pdflscape,xcolor,color}
+\clist_map_inline:nn {pgf,transparent,hyperxmp,pdflscape,xcolor,color,beamer}
   {
     \bool_new:c       { g__pdfmanagement_firstaid_#1_bool }
     \bool_gset_true:c { g__pdfmanagement_firstaid_#1_bool }
@@ -36,6 +36,10 @@
   }
 \msg_new:nnn  { pdfmanagement } { firstaid }
               { loading~pdfmanagement~firstaid~code~for~#1 }
+\bool_if:NT \g__pdfmanagement_firstaid_beamer_bool
+  {
+    \color_set:nnn{.5~.5~.5}{rgb}{0.5,0.5,0.5}
+  }
 \@ifundefined{color_set:nn}{
 \RequirePackage{l3color}}{}
 \bool_if:NT \g__pdfmanagement_firstaid_color_bool

Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx	2021-03-07 22:05:12 UTC (rev 58199)
@@ -28,7 +28,7 @@
 %% 
 %% File: pdfmanagement-testphase.dtx
 \ProvidesExplFile
-  {pdfmanagement-testphase.ltx}{2021-02-22}{0.95a}
+  {pdfmanagement-testphase.ltx}{2021-03-07}{0.95b}
   {PDF~management~code~(testphase)}
 %% File: l3pdfdict.dtx
 \cs_new:Npn \__pdfdict_get_type:n #1
@@ -932,12 +932,12 @@
       {
         \keys_set_groups:nnn { document / metadata} {init}{ #1 }
         %should be loaded after the backend is set, and only if not in the kernel
+        \bool_gset_true:N \g__pdfmanagement_active_bool
         \cs_if_free:NTF \pdf_uncompress:
          {\RequirePackage{l3pdf}}{\RequirePackage{expl3}}
         \ExplSyntaxOn\makeatletter
           \file_input:n {l3backend-testphase-\c_sys_backend_str.def}
         \ExplSyntaxOff\makeatother
-        \bool_gset_true:N \g__pdfmanagement_active_bool
         \keys_set_filter:nnn  { document / metadata } { init } { lang=en-US, #1 }
         \bool_if:NT \g__pdfmanagement_active_bool
           {
@@ -1034,7 +1034,6 @@
         \msg_warning:nnn{pdf}{unknown-standard}{#1}
       }
     ,pdfmanagement .bool_gset:N = \g__pdfmanagement_active_bool
-    ,pdfmanagement .initial:n =  {true}
     ,firstaidoff .clist_gset:N = \g__pdfmanagement_firstaidoff_clist
   }
 %% File: l3pdfannot.dtx
@@ -1053,37 +1052,40 @@
     LockedContents = 10
   }
 \bool_new:N \g__pdfannot_use_lastlink_bool
-
 \cs_new_protected:Npn \pdfannot_box:nnnn #1 #2 #3 #4
   {
     \__pdf_backend_annotation:nnnn {#1}{#2}{#3}{#4}
     \bool_gset_false:N\g__pdfannot_use_lastlink_bool
   }
-
+\cs_generate_variant:Nn \pdfannot_box:nnnn {nnnx}
 \cs_new:Npn \pdfannot_box_ref_last:
   {
     \__pdf_backend_annotation_last:
   }
 
-\cs_new_protected:Npn \pdfannot_box:nnnnn #1 #2 #3 #4 #5
+ \pdfdict_new:n   { l__pdfannot/widget }
+ \pdfdict_put:nnn { l__pdfannot/widget }{ Subtype }{ /Widget }
+ \hook_new_pair:nn
+   {pdfannot/widget/before}
+   {pdfannot/widget/after}
+ \hook_new_pair:nn
+   {pdfannot/widget/begin}
+   {pdfannot/widget/end}
+\cs_new_protected:Npn \pdfannot_widget_box:nnn #1 #2 #3
   {
-    \exp_args:Nx
-    \__pdf_backend_annotation:nnnn {#2}{#3}{#4}
+    \hook_use:n { pdfannot/widget/before }
+    \pdfannot_box:nnnx {#1}{#2}{#3}
       {
-        \pdfdict_if_exist:nT { l__pdfannot/#1 }
-          {
-            \pdfdict_use:n { l__pdfannot/#1}
-          }
-        #5
+        \pdfdict_use:n { l__pdfannot/widget}
       }
+    \hook_use:n { pdfannot/widget/after }
     \bool_gset_false:N\g__pdfannot_use_lastlink_bool
   }
- \pdfdict_new:n { l__pdfannot/widget }
- \pdfdict_put:nnn { l__pdfannot/widget }{ Subtype }{ /Widget }
 \seq_const_from_clist:Nn \c_pdfannot_link_types_seq { URI , GoToR , Launch , GoTo, Named }
 \seq_map_inline:Nn \c_pdfannot_link_types_seq
   {
     \pdfdict_new:n { l__pdfannot/link/#1 }
+    \pdfdict_put:nnn { l__pdfannot/link/#1 }{ Subtype }{ /Link }
     \hook_new_pair:nn
       {pdfannot/link/#1/before}
       {pdfannot/link/#1/after}
@@ -1105,7 +1107,6 @@
           }
       }
       {
-        /Subtype/Link
         #2 %exp_not?
       }
     \bool_gset_true:N \g__pdfannot_use_lastlink_bool
@@ -1144,7 +1145,8 @@
 \cs_generate_variant:Nn \pdfannot_link_begin:nnw {nxw}
 \cs_new_protected:Npn \pdfannot_link_goto_begin:nw #1 %#1 destination
   {
-    \hook_use:n { pdfannot/link/GoTo/before}
+    \pdfdict_remove:nn { l__pdfannot/link/GoTo} {Subtype}
+    \hook_use:n { pdfannot/link/GoTo/before} %the backend add it too
     \mode_leave_vertical:
     \exp_args:Nxx %xetex needs expansion
     \__pdf_backend_link_begin_goto:nnw
@@ -1153,6 +1155,7 @@
       }
       { #1 }
      \bool_gset_true:N \g__pdfannot_use_lastlink_bool
+    \pdfdict_put:nnn { l__pdfannot/link/GoTo} {Subtype}{GoTo}
      \hook_use:n { pdfannot/link/GoTo/begin}
   }
 
@@ -1191,6 +1194,11 @@
   {
     \pdfdict_show:n { l__pdfannot/#1 }
   }
+
+\cs_new:Npn \pdfannot_dict_use:n #1
+  {
+    \pdfdict_use:n { l__pdfannot/#1 }
+  }
 %% File: l3pdfxform.dtx
 \cs_new_protected:Npn  \pdfxform_new:nnn #1 #2 #3
   {
@@ -1680,7 +1688,7 @@
 
 \msg_new:nnn { pdffile } { target-name-missing }
   {
-    a~target~name~for~the~/FileSpec~dictionary~is~missing.
+    a~target~name~for~the~/Filespec~dictionary~is~missing.
   }
 
 \msg_new:nnn { pdffile } { object-exists }
@@ -1736,10 +1744,10 @@
                   \int_use:N\c_sys_day_int
                )
              }
-\pdfdict_new:n { l_pdffile/FileSpec }
-\pdfdict_put:nnn { l_pdffile/FileSpec }
-  {Type} { /FileSpec }
-\pdfdict_put:nnn { l_pdffile/FileSpec }
+\pdfdict_new:n { l_pdffile/Filespec }
+\pdfdict_put:nnn { l_pdffile/Filespec }
+  {Type} { /Filespec }
+\pdfdict_put:nnn { l_pdffile/Filespec }
   {AFRelationship} { /Unspecified }
 
 \prop_new:N \g_pdffile_embed_prop
@@ -1833,11 +1841,11 @@
         \pdf_object_new:nn   { #1 } {dict}
         \group_begin:
           \__pdffile_filename_convert_to_print:nN  { #2 } \l__pdffile_tmpa_str
-          \pdfdict_put:nnx {l_pdffile/FileSpec}{F} { \l__pdffile_tmpa_str }
-          \pdfdict_put:nnx {l_pdffile/FileSpec}{UF}{ \l__pdffile_tmpa_str }
+          \pdfdict_put:nnx {l_pdffile/Filespec}{F} { \l__pdffile_tmpa_str }
+          \pdfdict_put:nnx {l_pdffile/Filespec}{UF}{ \l__pdffile_tmpa_str }
           \pdf_object_write:nx { #1 }
             {
-              \pdfdict_use:n { l_pdffile/FileSpec}
+              \pdfdict_use:n { l_pdffile/Filespec}
               \tl_if_empty:nF { #3 }
                 {
                   /EF <</F~#3 /UF~#3>>

Modified: trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty	2021-03-07 22:05:12 UTC (rev 58199)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: pdfmanagement-testphase.dtx
-\ProvidesExplPackage {pdfmanagement-testphase} {2021-02-22} {0.95a}
+\ProvidesExplPackage {pdfmanagement-testphase} {2021-03-07} {0.95b}
   {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/transparent-ltx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty	2021-03-07 22:05:12 UTC (rev 58199)
@@ -4,7 +4,7 @@
 %%
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \ProvidesExplPackage{transparent-ltx}%
-  {2021-02-22}{v0.95a}{Transparency with color stacks (replacement for transparent.sty from Heiko Oberdiek)}%
+  {2021-03-07}{v0.95b}{Transparency with color stacks (replacement for transparent.sty from Heiko Oberdiek)}%
 
 \RequirePackage{l3opacity}
 

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	2021-03-07 22:04:48 UTC (rev 58198)
+++ trunk/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty	2021-03-07 22:05:12 UTC (rev 58199)
@@ -1,6 +1,6 @@
 %% LaTeX2e file `xcolor-patches.sty'
 %%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2021/02/22 v0.95a patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2021/02/22 v0.95b patch xcolor for l3color]
 \@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
 
 \ExplSyntaxOn



More information about the tex-live-commits mailing list.