[latex3-commits] [git/LaTeX3-latex3-latex2e] metadata: added latex-lab (and initial support for \DocumentMetadata) (ef3a0594)

Frank Mittelbach frank.mittelbach at latex-project.org
Thu Dec 16 23:13:22 CET 2021


Repository : https://github.com/latex3/latex2e
On branch  : metadata
Link       : https://github.com/latex3/latex2e/commit/ef3a0594db6ea06064c98d65ef5b1839d32b9d2a

>---------------------------------------------------------------

commit ef3a0594db6ea06064c98d65ef5b1839d32b9d2a
Author: Frank Mittelbach <frank.mittelbach at latex-project.org>
Date:   Thu Dec 16 23:13:22 2021 +0100

    added latex-lab (and initial support for \DocumentMetadata)


>---------------------------------------------------------------

ef3a0594db6ea06064c98d65ef5b1839d32b9d2a
 .github/tl_packages                                |   3 +
 README.md                                          |   4 +-
 build.lua                                          |   2 +-
 required/latex-lab/README.md                       |  34 ++
 required/{firstaid => latex-lab}/build.lua         |  15 +-
 .../latex-lab/changes.txt                          |   0
 {base => required/latex-lab}/config-TU.lua         |   0
 .../latex-lab/documentmetadata-support-code.tex    |   2 +-
 .../latex-lab/documentmetadata-support-doc.tex     |   2 +-
 required/latex-lab/documentmetadata-support.dtx    | 376 +++++++++++++++++++++
 required/latex-lab/documentmetadata-support.ins    |  67 ++++
 .../testfiles/documentmetadata-support-000.lvt}    |  13 +-
 .../testfiles/documentmetadata-support-000.tlg     | 256 ++++++++++++++
 .../testfiles/documentmetadata-support-001.lvt     |  20 ++
 .../testfiles/documentmetadata-support-001.tlg     |  58 ++++
 required/latex-lab/update-all.sh                   |   4 +
 16 files changed, 844 insertions(+), 12 deletions(-)

diff --git a/.github/tl_packages b/.github/tl_packages
index dcbb83c2..27154631 100644
--- a/.github/tl_packages
+++ b/.github/tl_packages
@@ -36,6 +36,9 @@ pgfmorepages
 ulem
 varwidth
 #
+# special testing for latex-lab
+pdfmanagement-testphase
+#
 # Additional support for typesetting
 alphalph
 amscls
diff --git a/README.md b/README.md
index b50b7641..6dba26b2 100644
--- a/README.md
+++ b/README.md
@@ -19,10 +19,12 @@ comprises:
 
 - The LaTeX kernel itself (`base`)
 - LaTeX team documentation (`doc`)
-- Packages which must be available (`required`). These are
+- Bundles which must be available (`required`). These are
   - Essential tools (`tools`)
   - Core graphics and color support (`graphics`)
   - Key mathematics support (`amsmath`)
+  - First aid for LaTeX  (`firstaid`) 
+  - LaTeX laboratory (`latex-lab`)
 
 The main public Git repository is hosted on
 [GitHub](https://github.com/latex3/latex2e).
diff --git a/build.lua b/build.lua
index 0a291a4a..9cf97741 100644
--- a/build.lua
+++ b/build.lua
@@ -8,7 +8,7 @@ module  = ""
 
 -- A couple of custom variables: the order here is set up for 'importance'
 bundles  = {"base"}
-required = {"cyrillic", "graphics", "tools", "amsmath", "firstaid"}
+required = {"cyrillic", "graphics", "tools", "amsmath", "firstaid", "latex-lab"}
 
 -- Location of main directory: use Unix-style path separators
 maindir = "."
diff --git a/required/latex-lab/README.md b/required/latex-lab/README.md
new file mode 100644
index 00000000..abf86117
--- /dev/null
+++ b/required/latex-lab/README.md
@@ -0,0 +1,34 @@
+# LaTeX laboratory
+
+This bundle holds optional files that are loaded in certain situations
+by kernel code (if available). For example, the new (as of 2021/12)
+`\DocumentMeta` command in the kernel loads a file from here holding
+the real payload. While this code is still in development and the use
+is experimental and mainly for the tagging project) the code is stored
+outside the format so that there can be intermediate release not
+affecting the production use of LaTeX.
+
+
+Once the code is finalized and properly tested it will eventually move
+to the kernel and the corresponding file in this bundle will
+vanish. Note that none of these files are directly user accessible in
+documents (i.e., they aren't packages) so the process is transparent
+to documents already using the new functionality.
+
+
+## Current support code in the bundle
+
+### Support for `\DocumentMetadata`
+
+
+## License
+
+The license is LPPL 1.3c.
+
+
+## Copyright
+
+This README file is
+
+Copyright (C) 2021
+The LaTeX Project
diff --git a/required/firstaid/build.lua b/required/latex-lab/build.lua
similarity index 82%
copy from required/firstaid/build.lua
copy to required/latex-lab/build.lua
index ab69d5a3..33de1bb7 100644
--- a/required/firstaid/build.lua
+++ b/required/latex-lab/build.lua
@@ -1,13 +1,12 @@
 #!/usr/bin/env texlua
 
--- Build script for LaTeX2e "firstaid" files
+-- Build script for LaTeX2e "latex-lab" files
 
 -- Identify the bundle and module
 bundle = ""
-module = "firstaid"
+module = "latex-lab"
 
--- CTAN's name for this is a bit different from ours
-ctanpkg = "latex-firstaid"
+ctanpkg = "latex-lab"
 
 -- Location of main directory: use Unix-style path separators
 maindir = "../.."
@@ -19,10 +18,14 @@ unpackfiles  = {"*.ins"}
 
 sourcefiles  = {"*.dtx", "*.ins", "*-????-??-??.sty"}
 
+-- not testing xetex in the lab, we may want to switch to pdftex instead of etex though
+
+checkengines = { "etex", "luatex" }
+
+
 checkdeps =
   {
-    maindir .. "/base",
-    maindir .. "/required/tools"
+    maindir .. "/base"
   }
 
 checkruns     = 2
diff --git a/base/testfiles-TU/github-0282.tlg b/required/latex-lab/changes.txt
similarity index 100%
copy from base/testfiles-TU/github-0282.tlg
copy to required/latex-lab/changes.txt
diff --git a/base/config-TU.lua b/required/latex-lab/config-TU.lua
similarity index 100%
copy from base/config-TU.lua
copy to required/latex-lab/config-TU.lua
diff --git a/base/doc/ltpara-code.tex b/required/latex-lab/documentmetadata-support-code.tex
similarity index 68%
copy from base/doc/ltpara-code.tex
copy to required/latex-lab/documentmetadata-support-code.tex
index 2e5beda3..c051960a 100644
--- a/base/doc/ltpara-code.tex
+++ b/required/latex-lab/documentmetadata-support-code.tex
@@ -1,4 +1,4 @@
 % this will typeset documentation + code
 
 \AtBeginDocument{\AlsoImplementation}
-\input{ltpara.dtx}
+\input{documentmetadata-support.dtx}
diff --git a/base/doc/ltcmdhooks-doc.tex b/required/latex-lab/documentmetadata-support-doc.tex
similarity index 80%
copy from base/doc/ltcmdhooks-doc.tex
copy to required/latex-lab/documentmetadata-support-doc.tex
index 1efae5f2..dcf45514 100644
--- a/base/doc/ltcmdhooks-doc.tex
+++ b/required/latex-lab/documentmetadata-support-doc.tex
@@ -3,4 +3,4 @@
 \AtBeginDocument{\OnlyDescription
                  \let\tableofcontents\relax
                  }
-\input{ltcmdhooks.dtx}
+\input{documentmetadata-support.dtx}
diff --git a/required/latex-lab/documentmetadata-support.dtx b/required/latex-lab/documentmetadata-support.dtx
new file mode 100644
index 00000000..d1874db3
--- /dev/null
+++ b/required/latex-lab/documentmetadata-support.dtx
@@ -0,0 +1,376 @@
+% \iffalse meta-comment
+%
+%% File: documentmetadata-support.dtx (C) 2021 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
+%
+%
+% The development version of the bundle can be found below
+%
+%    https://github.com/FrankMittelbach/
+%
+% for those people who are interested or want to report an issue.
+%
+%<*driver>
+\documentclass{l3doc}
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+  \DocInput{documentmetadata-support.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+
+% \title{The \texttt{documentmetadata-support} code\thanks{}}
+% \author{Frank Mittelbach, \LaTeX{} Project}
+%
+% \maketitle
+%
+%
+% \begin{abstract}
+% \end{abstract}
+%
+% \section{Introduction}
+%
+%    Currently the following keys are implemented:
+%
+%    \begin{description}
+%       \item[\texttt{backend}] to specify the backend to use; this is
+%           usually determined automatically.
+%^^A       This will probably be extended to  pass the value also to packages.
+%
+%       \item[\texttt{pdfversion}] e.g. \texttt{pdfversion=1.7}
+%
+%       \item[\texttt{uncompress}] no value. Forces an uncompressed pdf.
+%
+%       \item[\texttt{lang}] to set the Lang entry in the Catalog.
+%          E.g. \texttt{lang=de-DE}. The initial value is |en-US|
+%
+%       \item[\texttt{pdfstandard}] Choice key to set the pdf standard.
+%         Currently |A-1b|, |A-2a|, |A-2b|, |A-2u|, |A-3a|, |A-3b| and |A-3u| are accepted as
+%         values. The casing is irrelevant, |a-1b| works too.
+%         The underlying code to ensure the requirements (as far as they
+%         can be ensured) is incomplete, but a color profile is included and the
+%         /OutputIntent is set. The |u| variants for example do not force unicode,
+%         but they will pass the information to hyperref and hyperxmp. The |a| variants
+%         do \emph{not} enforce (or even test) a tagged pdf yet.
+%         More information can be found in the documentation
+%         of \pkg{l3pdfmeta}.
+%
+%       \item[\texttt{colorprofiles}] This allows to load icc-colorprofiles. Details
+%       are described in the documentation of \pkg{l3pdfmeta}.
+%
+%       \item[\texttt{pdfmanagement}] Boolean. This activates/deactivates
+%         the core management code. By default the value is true.
+%
+%       \item[\texttt{firstaidoff}] This accepts a comma lists of keysword and disable the patches
+%       related to them. More information can be found in the documentation of
+%       \pkg{pdfmanagement-firstaid}.
+%
+%       \item[\texttt{testphase}] This key is used to load testphase code. The values it accepts
+%       and their effect will change over time, when testphase packages are added or
+%       removed when the code is moved into the kernel. Currently the accepted values are
+%       \texttt{tagpdf}, this load the tagpdf package, \texttt{headings}, this loads
+%       code which reimplements heading commands, and \texttt{ptagging} this loads code
+%       to allow paragraph tagging to work with engine other than luatex.
+%       \item[\texttt{activate}] This key is used to enable some document wide functions. It is
+%       currently in an experimental state. The values and their behaviour are subject to change.
+%       Currently the only value is |tagging|,
+%       which will do |\tagpdfsetup{activate,paratagging,interwordspace}|. It requires that
+%       \pkg{tagpdf} has been loaded first with the |testphase| key.
+%       \item[\texttt{debug}] This key activates some debug options. Currently only the
+%       keys |para| (with the default and only value |show|),
+%       and |log| (with the values of \pkg{tagpdf}) and |uncompress| (which does the same
+%       as |uncompress| as main key)  are known.
+%    \end{description}
+%
+%
+%
+% \StopEventually{\setlength\IndexMin{200pt}  \PrintIndex  }
+%
+%
+% \section{The Implementation}
+%
+%    \begin{macrocode}
+%<*code>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+
+\RequirePackage{pdfmanagement-testphase}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOn\makeatletter
+%    \end{macrocode}
+
+
+
+%  \begin{macro}{\DocumentMetadata}
+%    
+%    \cs{DocumentMetadata} should not be used after
+%    \cs{documentclass} so we error in this case.
+%    It can be used more than once
+%     but follow-up calls should not do the initialization code.
+%    \begin{macrocode}
+\cs_set_protected:Npn \DocumentMetadata #1
+  {
+    \cs_if_eq:NNTF \documentclass \@twoclasseserror
+      { \msg_error:nn { meta } { after-class } }
+      {
+%    \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__pdfmanagement_active_bool
+        \cs_if_free:NTF \pdf_uncompress:
+           {\RequirePackage{l3pdf}}
+%FMi why load expl3? is there a better way to force the backend loading?          
+           {\RequirePackage{expl3}}
+%    \end{macrocode}
+%    Now we load the extra backend code:
+%    \begin{macrocode}
+        \ExplSyntaxOn\makeatletter
+          \file_input:n {l3backend-testphase-\c_sys_backend_str.def}
+        \ExplSyntaxOff\makeatother
+%    \end{macrocode}
+%    Set the default language, process the rest of the keys,
+%    and setup the generic driver.
+%    \begin{macrocode}
+%FMi wouldn't it be cleaner to set the default when declaring the key?
+        \keys_set_filter:nnn  { document / metadata } { init } { lang=en-US, #1 }
+        \bool_if:NT \g__pdfmanagement_active_bool
+          {
+            \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref}
+          }
+%    \end{macrocode}
+%    \cs{pdfmanagement_add:nnn} has collected values in this hook.
+%    \begin{macrocode}
+        \hook_use_once:n {pdfmanagement/add}
+%    \end{macrocode}
+%    Now we redefine \cs{DocumentMetadata} so that it only process the
+%    keys on any further calls.
+%
+%     We need to update the hyperref option if the active status changes.
+%    \begin{macrocode}
+        \cs_set_protected:Npn \DocumentMetadata ##1
+          {
+            \keys_set_filter:nnn  { document / metadata } { init } { ##1 }
+%FMi
+            \str_remove_all:cn {opt at hyperref.sty}{customdriver=hgeneric-testphase}
+%FMi this doesn't seem to need the F case if we move the removal to
+%    the front
+            \bool_if:NT \g__pdfmanagement_active_bool
+             {
+%FMi               \str_remove_all:cn {opt at hyperref.sty}{customdriver=hgeneric-testphase}
+               \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref}
+             }
+%FMi             {
+%FMi               \str_remove_all:cn {opt at hyperref.sty}{customdriver=hgeneric-testphase}
+%FMi             }
+          }
+%    \end{macrocode}
+% Load more modules, the testphase code and the firstaid code.
+%    \begin{macrocode}
+%FMi this doesn't look correct -- testphase code is not loaded if only
+%    in second call --- see test 001
+        \g__pdfmanagement_testphase_tl
+        \RequirePackage{pdfmanagement-firstaid}
+      }
+}
+%    \end{macrocode}
+%  \end{macro}
+
+
+
+
+%    \begin{macrocode}
+
+%FMi defined elsewhere
+%FMi
+%FMi \clist_new:N \g__pdfmanagement_firstaidoff_clist
+%FMi \tl_new:N \g__pdfmanagement_testphase_tl
+
+\keys_define:nn { document / metadata }
+  {
+     backend .code:n =
+       {
+         \PassOptionsToPackage { driver=#1 } {expl3}
+         \AddToDocumentProperties[document]{backend}{#1}
+       }
+    ,backend .groups:n = { init }
+    ,pdfversion .code:n =
+      {
+        \pdf_version_gset:n { #1 }
+        \AddToDocumentProperties[document]{pdfversion}{#1}
+      }
+    ,uncompress .code:n =
+      {
+        \pdf_uncompress:
+      }
+    ,uncompress .value_forbidden:n = true
+    ,lang .code:n =
+      {
+        \pdfmanagement_add:nnn {Catalog} {Lang}{(#1)}
+        \AddToDocumentProperties[document]{lang}{#1}
+      }
+    %,xmpmeta .bool_gset:N = \g_pdfmeta_xmp_bool %see pdfmeta unused and undefined for now!
+    % this uses internal command from pdfmeta, it should probably move there ...
+    ,pdfstandard .code:n =
+      {
+        \exp_args:Nnx
+        \keys_set:nn {document / metadata} {_pdfstandard=\str_uppercase:n{#1}}
+      }
+    ,_pdfstandard .choices:nn =
+      {A-1B,A-2A,A-2B,A-2U,A-3A,A-3B,A-3U}
+      {
+        \prop_if_exist:cT { g__pdfmeta_standard_pdf/#1_prop }
+          {
+            \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop }
+          }
+        \AddToDocumentProperties [document]{pdfstandard}{#1}
+      }
+    ,_pdfstandard / unknown .code:n =
+      {
+        \msg_warning:nnn{pdf}{unknown-standard}{#1}
+      }
+    ,pdfmanagement .bool_gset:N = \g__pdfmanagement_active_bool
+    ,firstaidoff .clist_gset:N = \g__pdfmanagement_firstaidoff_clist
+    ,testphase .multichoice:
+    ,testphase / tagpdf .code:n =
+      {
+        \tl_gput_right:Nn\g__pdfmanagement_testphase_tl
+          {
+            \RequirePackage{tagpdf}
+            \AddToDocumentProperties [document]{testphase/tagpdf}{loaded}
+          }
+      }
+    ,testphase / headings .code:n =
+      {
+        \tl_gput_right:Nn\g__pdfmanagement_testphase_tl
+          {
+            \RequirePackage{headings-testphase}
+            \AddToDocumentProperties [document]{testphase/headings}{loaded}
+          }
+      }
+    ,testphase / ptagging .code:n =
+      {
+        \tl_gput_right:Nn\g__pdfmanagement_testphase_tl
+          {
+            \AddToHook{class/after}
+              {
+                \RequirePackage{ptagging-testphase}
+                \AddToDocumentProperties [document]{testphase/ptagging}{loaded}
+              }
+          }
+      }
+    ,testphase / unknown .code:n =
+      {
+        \tl_gput_right:Nn\g__pdfmanagement_testphase_tl
+           {
+             \AddToHook{class/after}
+               {
+                 \RequirePackage{#1-testphase}
+                 \AddToDocumentProperties [document]{testphase/#1}{loaded}
+               }
+           }
+      }
+    ,activate .multichoice:
+    ,activate / tagging .code:n =
+      {
+        \AddToHook{package/after/tagpdf}
+          {
+            \tagpdfsetup{activate,paratagging,interwordspace}
+            \AddToDocumentProperties [document]{tagging}{active}
+            \AddToDocumentProperties [document]{tagging/para}{active}
+            \AddToDocumentProperties [document]{tagging/interwordspace}{active}
+          }
+      }
+    ,debug .code:n =
+      {
+        \keys_set:nn { document / metadata / debug } {#1}
+      }
+    ,debug / para .code:n =
+      {
+        \AddToHook{package/after/tagpdf}
+          {
+            \tagpdfsetup{paratagging-show}
+          }
+      }
+    ,debug / log .code:n =
+      {
+        \AddToHook{package/after/tagpdf}
+          {
+            \tagpdfsetup{log=#1}
+          }
+      }
+    ,debug / uncompress .code:n =
+      {
+        \pdf_uncompress:
+      }
+  }
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\msg_new:nnn  { meta } { after-class }
+              {
+                \token_to_str:N \DocumentMetadata \c_space_tl
+                should~be~used~only~before~\token_to_str:N\documentclass
+              }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOff\makeatother
+%    \end{macrocode}
+%
+%
+%    \begin{macrocode}
+%<*code>
+%    \end{macrocode}
+%
+% \Finale
+%
+
+
+
+\endinput
+
+\prop_new:N \g__pdfmanagement_documentproperties_prop %
+\NewDocumentCommand\AddToDocumentProperties{O{\@currname}mm}
+  {
+    \exp_args:NNx
+      \prop_gput:Nnn \g__pdfmanagement_documentproperties_prop
+        {
+          \tl_if_blank:eTF {#1}{top-level/}{#1/} #2
+        }
+        { #3}
+  }
+\NewExpandableDocumentCommand\GetDocumentProperties{m}
+  {
+    \prop_item:Nn \g__pdfmanagement_documentproperties_prop {#1}
+  }
+\msg_new:nnn  { pdfmanagement } { show-properties }
+  {
+    The~following~document~properties~have~been~stored:
+    #1
+  }
+\NewDocumentCommand\ShowDocumentProperties {}
+  {
+    \msg_show:nnx {pdfmanagement}{show-properties}
+      {
+        \prop_map_function:NN \g__pdfmanagement_documentproperties_prop \msg_show_item:nn
+      }
+  }
+
diff --git a/required/latex-lab/documentmetadata-support.ins b/required/latex-lab/documentmetadata-support.ins
new file mode 100644
index 00000000..136fbabf
--- /dev/null
+++ b/required/latex-lab/documentmetadata-support.ins
@@ -0,0 +1,67 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the dtx file(s) in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 2021 LaTeX Project
+%% 
+%% 
+%% This file is part of the documentmetadata-support Bundle for LaTeX.
+%% -------------------------------------------------------------------
+%% 
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX 
+%% version 2008 or later.
+%% 
+%% In particular, NO PERMISSION is granted to modify the contents of this
+%% file since it contains the legal notices that are placed in the files
+%% it generates.
+%% 
+%% 
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\input docstrip
+
+\keepsilent
+
+\usedir{tex/latex/contrib/documentmetadata-support}
+
+\preamble
+
+This is a generated file.
+
+Copyright 2021 LaTeX Project
+
+This file was generated from file(s) of the LaTeX `documentmetadata-support Bundle'.
+------------------------------------------------------------------------------------
+
+It may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+   http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX 
+version 2008 or later.
+
+This file may only be distributed together with a copy of the LaTeX
+`documentmetadata-support Bundle'. You may however distribute the `documentmetadata-support Bundle'
+without such generated files.
+
+The newest sources can be found below
+
+   https://github.com/latex3/documentmetadata-support/
+
+where one can also log issues in case there are any.
+
+
+\endpreamble
+
+
+\generate{\file{documentmetadata-support.ltx}{\from{documentmetadata-support.dtx}{code}}}
+
+\endbatchfile
diff --git a/required/firstaid/testfiles/firstaid-000.lvt b/required/latex-lab/testfiles/documentmetadata-support-000.lvt
similarity index 57%
copy from required/firstaid/testfiles/firstaid-000.lvt
copy to required/latex-lab/testfiles/documentmetadata-support-000.lvt
index 6b1aff42..761eb67f 100644
--- a/required/firstaid/testfiles/firstaid-000.lvt
+++ b/required/latex-lab/testfiles/documentmetadata-support-000.lvt
@@ -1,4 +1,3 @@
-
 \input{regression-test}
 
 \RequirePackage[enable-debug,check-declarations]{expl3}
@@ -8,6 +7,16 @@
 
 \START
 
-\ifcsname LaTeXFirstAidVersion\endcsname \typeout{File loaded in kernel}\fi
+\typeout{First call:}
+
+\DocumentMetadata{}
+
+\typeout{Second call:}
+
+\DocumentMetadata{}
+
 
 \END
+
+
+\documentclass{article}
diff --git a/required/latex-lab/testfiles/documentmetadata-support-000.tlg b/required/latex-lab/testfiles/documentmetadata-support-000.tlg
new file mode 100644
index 00000000..393e672f
--- /dev/null
+++ b/required/latex-lab/testfiles/documentmetadata-support-000.tlg
@@ -0,0 +1,256 @@
+This is a generated file for the l3build validation system.
+Don't change this file in any respect.
+First call:
+(documentmetadata-support.ltx (../pdfmanagement-testphase.sty
+Package: pdfmanagement-testphase ....-..-.. v... LaTeX PDF management testphase bundle
+(../pdfmanagement-testphase.ltx
+File: pdfmanagement-testphase.ltx ....-..-.. v... PDF management code (testphase)
+\g__pdfmanagement_EmbeddedFiles_int=\count...
+(../l3bitset.sty
+Package: l3bitset ....-..-.. L3 Experimental bitset support
+\l__bitset_internal_int=\count...
+)
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g__pdfmeta_standard_pdf/A-1B_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+! LaTeX3 Error: Inconsistent local/global assignment
+For immediate help type H <return>.
+ ...                                              
+l. ...  }
+This is a coding error.
+Local assignment to a global variable '\g_pdffile_mimetypes_prop'.
+))) (../l3backend-testphase-dvips.def
+File: l3backend-testphase-dvips.def ....-..-.. LaTeX PDF management testphase bundle backend support:dvips
+(../l3ref-tmp.sty
+Package: l3ref-tmp ....-..-.. L3 Experimental cross-referencing
+)
+\l__pdf_backend_tmpa_box=\box...
+\l__pdf_backend_tmpb_box=\box...
+\g__pdf_backend_resourceid_int=\count...
+\g__pdf_backend_name_int=\count...
+\g__pdf_backend_page_int=\count...
+) (../pdfmanagement-firstaid.sty
+Package: pdfmanagement-firstaid ....-..-.. v... LaTeX PDF management testphase bundle / firstaid-patches
+(../output-patches-tmp-ltx.sty
+Package: output-patches-tmp-ltx ....-..-.. v... Temporary patches of output commands
+(../etoolbox.sty
+Package: etoolbox ....-..-.. v... e-TeX tools for LaTeX (JAW)
+\etb at tempcnta=\count...
+)
+Patching header in \@outputpage
+Patching footer in \@outputpage
+Patching \@makecol for tagging
+Patching \@makecol for tagging
+LaTeX hooks Warning: Generic hook 'package/after/multicol' is deprecated.
+(hooks)              Use hook 'package/multicol/after' instead.
+)
+LaTeX hooks Warning: Generic hook 'package/after/xcolor' is deprecated.
+(hooks)              Use hook 'package/xcolor/after' instead.
+Package pdfmanagement Info: loading pdfmanagement firstaid code for pgf
+LaTeX hooks Warning: Generic hook 'file/after/pgfrcs.sty' is deprecated.
+(hooks)              Use hook 'file/pgfrcs.sty/after' instead.
+LaTeX hooks Warning: Generic hook 'file/after/hyperxmp.sty' is deprecated.
+(hooks)              Use hook 'file/hyperxmp.sty/after' instead.
+)
+Second call:
diff --git a/required/latex-lab/testfiles/documentmetadata-support-001.lvt b/required/latex-lab/testfiles/documentmetadata-support-001.lvt
new file mode 100644
index 00000000..721ffd0c
--- /dev/null
+++ b/required/latex-lab/testfiles/documentmetadata-support-001.lvt
@@ -0,0 +1,20 @@
+\input{regression-test}
+
+
+\START
+
+\typeout{First call:}
+
+\DocumentMetadata{}
+
+\typeout{Second call:}
+
+\DocumentMetadata{testphase=tagpdf}
+
+% bug: tagpdf not loaded
+\show\ShowTagging
+
+\END
+
+
+\documentclass{article}
diff --git a/required/latex-lab/testfiles/documentmetadata-support-001.tlg b/required/latex-lab/testfiles/documentmetadata-support-001.tlg
new file mode 100644
index 00000000..a5356d3c
--- /dev/null
+++ b/required/latex-lab/testfiles/documentmetadata-support-001.tlg
@@ -0,0 +1,58 @@
+This is a generated file for the l3build validation system.
+Don't change this file in any respect.
+First call:
+(documentmetadata-support.ltx (../pdfmanagement-testphase.sty
+Package: pdfmanagement-testphase ....-..-.. v... LaTeX PDF management testphase bundle
+(../pdfmanagement-testphase.ltx
+File: pdfmanagement-testphase.ltx ....-..-.. v... PDF management code (testphase)
+\g__pdfmanagement_EmbeddedFiles_int=\count...
+(../l3bitset.sty
+Package: l3bitset ....-..-.. L3 Experimental bitset support
+\l__bitset_internal_int=\count...
+)))) (../expl3.sty
+Package: expl3 ....-..-.. L3 programming layer (loader) 
+(../l3backend-dvips.def
+File: l3backend-dvips.def ....-..-.. L3 backend support: dvips
+\l__pdf_internal_box=\box...
+\g__pdf_backend_object_int=\count...
+\l__pdf_backend_content_box=\box...
+\l__pdf_backend_model_box=\box...
+\g__pdf_backend_annotation_int=\count...
+\g__pdf_backend_link_int=\count...
+\g__pdf_backend_link_sf_int=\count...
+)) (../l3backend-testphase-dvips.def
+File: l3backend-testphase-dvips.def ....-..-.. LaTeX PDF management testphase bundle backend support:dvips
+(../l3ref-tmp.sty
+Package: l3ref-tmp ....-..-.. L3 Experimental cross-referencing
+)
+\l__pdf_backend_tmpa_box=\box...
+\l__pdf_backend_tmpb_box=\box...
+\g__pdf_backend_resourceid_int=\count...
+\g__pdf_backend_name_int=\count...
+\g__pdf_backend_page_int=\count...
+) (../pdfmanagement-firstaid.sty
+Package: pdfmanagement-firstaid ....-..-.. v... LaTeX PDF management testphase bundle / firstaid-patches
+(../output-patches-tmp-ltx.sty
+Package: output-patches-tmp-ltx ....-..-.. v... Temporary patches of output commands
+(../etoolbox.sty
+Package: etoolbox ....-..-.. v... e-TeX tools for LaTeX (JAW)
+\etb at tempcnta=\count...
+)
+Patching header in \@outputpage
+Patching footer in \@outputpage
+Patching \@makecol for tagging
+Patching \@makecol for tagging
+LaTeX hooks Warning: Generic hook 'package/after/multicol' is deprecated.
+(hooks)              Use hook 'package/multicol/after' instead.
+)
+LaTeX hooks Warning: Generic hook 'package/after/xcolor' is deprecated.
+(hooks)              Use hook 'package/xcolor/after' instead.
+Package pdfmanagement Info: loading pdfmanagement firstaid code for pgf
+LaTeX hooks Warning: Generic hook 'file/after/pgfrcs.sty' is deprecated.
+(hooks)              Use hook 'file/pgfrcs.sty/after' instead.
+LaTeX hooks Warning: Generic hook 'file/after/hyperxmp.sty' is deprecated.
+(hooks)              Use hook 'file/hyperxmp.sty/after' instead.
+)
+Second call:
+> \ShowTagging=undefined.
+l. ...\show\ShowTagging
diff --git a/required/latex-lab/update-all.sh b/required/latex-lab/update-all.sh
new file mode 100644
index 00000000..07ff9e29
--- /dev/null
+++ b/required/latex-lab/update-all.sh
@@ -0,0 +1,4 @@
+l3build save \
+	documentmetadata-support-000 \
+	documentmetadata-support-001
+





More information about the latex3-commits mailing list.