texlive[71681] Master/texmf-dist: pdfx (1jul24)

commits+karl at tug.org commits+karl at tug.org
Mon Jul 1 22:49:52 CEST 2024


Revision: 71681
          https://tug.org/svn/texlive?view=revision&revision=71681
Author:   karl
Date:     2024-07-01 22:49:52 +0200 (Mon, 01 Jul 2024)
Log Message:
-----------
pdfx (1jul24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/pdfx/pdfx.pdf
    trunk/Master/texmf-dist/source/latex/pdfx/pdfx.dtx
    trunk/Master/texmf-dist/source/latex/pdfx/pdfx.ins
    trunk/Master/texmf-dist/tex/latex/pdfx/pdfx.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/pdfx/pdfx.xmpdata

Modified: trunk/Master/texmf-dist/doc/latex/pdfx/pdfx.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/pdfx/pdfx.xmpdata
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pdfx/pdfx.xmpdata	2024-07-01 20:49:35 UTC (rev 71680)
+++ trunk/Master/texmf-dist/doc/latex/pdfx/pdfx.xmpdata	2024-07-01 20:49:52 UTC (rev 71681)
@@ -1,33 +0,0 @@
-\Title{Generation of PDF/X- and PDF/A-compliant PDFs with pdfTeX \textemdash\ pdfx.sty}
-\Author{\CVR\sep \Thanh\sep Ross Moore\sep Peter Selinger}
-\Subject{This package supports generation of PDF/X-, PDF/A- and PDF/E-compliant documents, in most of their variants, using pdfLaTeX, LuaLaTeX and XeLaTeX.}
-\Keywords{PDF/X-, PDF/A- and PDF/E-compliance\sep Multilingual Metadata\sep installation\sep \TeX Live \thisyear}
-\PublicationType{manual}
-\Contributor{Norbert Preining: 'colorprofiles' package}
-\Copyright{Public domain.}
-\Copyrighted{False}
-\CopyrightURL{http://tug.org/texlive/}
-\CoverDisplayDate{March \thisyear}
-\CoverDate{\thisyear-03-10}
-\CreatorTool{LaTeX + pdfx.sty with option \pdfxopt, from TeX Live \thisyear}
-\Date{2017-05-18\sep 2017-06-23\sep 2018-11-29\sep 2018-12-22\sep 2019-02-08\sep 2019-03-10}
-\Advisory{An earlier version of this documentation was published as: TUGboat 36, No.2, pp.136\textendash 142 (2015)}
-\Advisory{v1.6: Added XMP support for PDF/UA-1. Added more Metadata fields and Language support.}
-\Advisory{v1.6: Default RGB and CMYK profiles now require the  colorprofiles.sty  package.}
-\Relation{Requires the  colorprofiles  package for RGB and CMYK default profiles.}
-\Advisory{v1.6: Access more profiles, incl. to  pdfaPilot's color profile folders.}
-\Advisory{v1.6: Revised  glyphtounicode.sty  to use variation selectors.}
-\Advisory{v1.6: altered maps to PUA codepoints.}
-\Advisory{v1.6: added more glyphs via glyphtounicode-ntx.tex }
-\Advisory{v1.6: Support for 8-bit Hebrew encodings, some Arabic and Devanagari.}
-\Advisory{v1.6: Updated documentation, incl. for LaTeX changes.}
-\Advisory{v1.6.1: Fixed issue with ifthen package; improved Metadata with LuaTeX and XeTeX.}
-\Advisory{v.1.6.1: Flexibility with page boxes for PDF/X.}
-\Advisory{v.1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.}
-\Advisory{v.1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.}
-\Advisory{v.1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\  primitive.}
-\Advisory{v.1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}
-\Advisory{v.1.6.3: Patched \string\mathaccentV\ to output accents after the base character.}
-\pdfxEnableCommands{%
- \def\CVR{C.V. Radhakrishnan}\def\Thanh{H\`an Th\eee Thanh}%
- \def\eee{^^c3^^aa^^cc^^81 }}

Modified: trunk/Master/texmf-dist/source/latex/pdfx/pdfx.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfx/pdfx.dtx	2024-07-01 20:49:35 UTC (rev 71680)
+++ trunk/Master/texmf-dist/source/latex/pdfx/pdfx.dtx	2024-07-01 20:49:52 UTC (rev 71681)
@@ -1,5 +1,5 @@
 % \iffalse meta-comment
-%                                                                
+%                                            
 %  File: pdfx.dtx
 %
 %  Copyright (c) 2019, CV Radhakrishnan <cvr at river-valley.org>,
@@ -6,20 +6,20 @@
 %    Han The Thanh <thanh at river-valley.org>,
 %    Ross Moore <ross.moore at mq.edu.au>,
 %    Peter Selinger <selinger at mathstat.dal.ca>
-%                      
+%  
 %  This file may be distributed and/or modified under the conditions
 %  of the LaTeX Project Public License, either version 1.2 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.2 or later is part of all distributions of LaTeX
 %  version 1999/12/01 or later.
 %
 % \fi
 %
-% \CheckSum{6309}
+% \CheckSum{6802}
 % \iffalse
 %
 %<*driver>
@@ -26,8 +26,8 @@
 \pdfcompresslevel 9
 \providecommand{\pdfxopt}{a-2u}
 \providecommand{\lastyear}{2018}
-\providecommand{\thisyear}{2019}
-\begin{filecontents*}{./\jobname.xmpdata}
+\providecommand{\thisyear}{2024}
+\begin{filecontents}[force]{./\jobname.xmpdata}
 \Title{Generation of PDF/X- and PDF/A-compliant PDFs with pdfTeX \textemdash\ pdfx.sty}
 \Author{\CVR\sep \Thanh\sep Ross Moore\sep Peter Selinger}
 \Subject{This package supports generation of PDF/X-, PDF/A- and PDF/E-compliant documents, in most of their variants, using pdfLaTeX, LuaLaTeX and XeLaTeX.}
@@ -37,10 +37,10 @@
 \Copyright{Public domain.}
 \Copyrighted{False}
 \CopyrightURL{http://tug.org/texlive/}
-\CoverDisplayDate{March \thisyear}
-\CoverDate{\thisyear-03-10}
+\CoverDisplayDate{July \thisyear}
+\CoverDate{\thisyear-07-01}
 \CreatorTool{LaTeX + pdfx.sty with option \pdfxopt, from TeX Live \thisyear}
-\Date{2017-05-18\sep 2017-06-23\sep 2018-11-29\sep 2018-12-22\sep 2019-02-08\sep 2019-03-10}
+\Date{2024-07-01}
 \Advisory{An earlier version of this documentation was published as: TUGboat 36, No.2, pp.136\textendash 142 (2015)}
 \Advisory{v1.6: Added XMP support for PDF/UA-1. Added more Metadata fields and Language support.}
 \Advisory{v1.6: Default RGB and CMYK profiles now require the  colorprofiles.sty  package.}
@@ -52,16 +52,29 @@
 \Advisory{v1.6: Support for 8-bit Hebrew encodings, some Arabic and Devanagari.}
 \Advisory{v1.6: Updated documentation, incl. for LaTeX changes.}
 \Advisory{v1.6.1: Fixed issue with ifthen package; improved Metadata with LuaTeX and XeTeX.}
-\Advisory{v.1.6.1: Flexibility with page boxes for PDF/X.}
-\Advisory{v.1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.}
-\Advisory{v.1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.}
-\Advisory{v.1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\  primitive.}
-\Advisory{v.1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}
-\Advisory{v.1.6.3: Patched \string\mathaccentV\ to output accents after the base character.}
+\Advisory{v1.6.1: Flexibility with page boxes for PDF/X.}
+\Advisory{v1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.}
+\Advisory{v1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.}
+\Advisory{v1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\  primitive.}
+\Advisory{v1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}
+\Advisory{v1.6.3: Patched \string\mathaccentV\ to output accents after the base character.}
+\Advisory{v1.6.4: Added check and warning with luatex for whether \string\pdfminorversion\ can be changed.}
+\Advisory{v1.6.4: Ensure correct \string\catcode for input characters up to 31, when reading .xmpdata file.}
+\Advisory{v1.6.4: Disabled patched \string\mathaccentV\ due to incompatibility with wide base expressions.}
+\Advisory{v1.6.5: Support for \string\Nickname\ as Metadata command.}
+\Advisory{v1.6.5: Ensure  par is unexpandable when reading Metadata.}
+\Advisory{v1.6.5a: Support for Memoir class's \string\stockwidth\ and \string\stockheight.}
+\Advisory{v1.6.5a: Added pdf20 option for PDF 2.0, with support for \string\pdfmajorversion.}
+\Advisory{v1.6.5b: Avoid loading xmpincl package from within a TeX grouping.}
+\Advisory{v1.6.5c: Avoid loading stringenc package from within a TeX grouping.}
+\Advisory{v1.6.5d: Disable some options for  xcolor  after use.}
+\Advisory{v1.6.5e: Ensure \string\pdfmajorversion\ and \string\pdfminorversion\ are both defined and set correctly.}
+\Advisory{v1.6.5e: Updated documentation; added new Bibliography entries and revised URL links.}
+\Advisory{v1.6.5f: Reset  ifpdf  properly; support \string\creationdate with XeTeX. Revised Glossary layout.}
 \pdfxEnableCommands{%
  \def\CVR{C.V. Radhakrishnan}\def\Thanh{H\`an Th\eee Thanh}%
  \def\eee{^^c3^^aa^^cc^^81 }}
-\end{filecontents*}
+\end{filecontents}
 \PassOptionsToPackage{dvipsnames,svgnames}{xcolor}
 \documentclass[a4paper]{ltxdoc}
 \usepackage[\pdfxopt]{pdfx}
@@ -104,12 +117,12 @@
 % \GetFileInfo{pdfx.dtx}
 %
 % \DoNotIndex{\newcommand,\newenvironment}
-% 
+%
 % \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let}
 % \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi}
 % \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup}
 % \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand}
-% \DoNotIndex{\space,\@empty,\special,\@nil,\advance\@nnil,\z@,\@@mod}
+% \DoNotIndex{\space,\@empty,\special,\@nil,\z@,\@@mod}
 % \DoNotIndex{\\,\@gobble,\@@,\@fornoop,\@fortmp,\@ifundefined,\@firstoftwo,\@secondoftwo}
 % \DoNotIndex{\@tempcnta,\@tempcntb,\@tempboxa,\ifnot at empty,\@this,\@firstofone}
 % \DoNotIndex{\{,\},\alph,\bgroup,\dp,\ht,\kern,\egroup}
@@ -134,58 +147,72 @@
 % \DoNotIndex{\scantokens,\typeout,\vrule,\wd}
 %
 % \changes{v1.00}{2008/12/01}{Initial commit to the CVS.}
-% \changes{v1.01}{2008/12/10}{glyphtounicode-cmr.tex included with the package.}
-% \changes{v1.3}{2008/12/01}{Fix copyright in xmp files.}
+% \changes{v1.01}{2008/12/10}{\texttt{glyphtounicode-cmr.tex} included with the package.}
+% \changes{v1.3}{2008/12/01}{Fix copyright in \texttt{.xmp} files.}
 % \changes{v1.5.4}{2015/02/28}{Fixed timezone bug; Unicode support; more
 %   PDF variants; added color profiles.}
-% \changes{v1.5.5}{2015/03/23}{Support for PDF/X-4p and PDF/X-5pg 
+% \changes{v1.5.5}{2015/03/23}{Support for PDF/X-4p and PDF/X-5pg
 %   with external color profiles.}
 % \changes{v1.5.6}{2016/02/05}{Suppressed `dummy-space' font warning;
-%   removed spurious '?' in XMP packets; improved handling of Color Profiles;
-%   ensure  Hy at pdfatrue  when building PDF/A, for link flags;
-%   properly enables  xcolor  conversion of color models.}
-% \changes{v1.5.7}{2016/02/17}{Removed UTF-8 characters that appear in 
+%   removed spurious `?' in XMP packets; improved handling of Color Profiles;
+%   ensure  \texttt{\textbackslash Hy at pdfatrue}  when building PDF/A, for link flags;
+%   properly enables \texttt{xcolor} conversion of color models.}
+% \changes{v1.5.7}{2016/02/17}{Removed UTF-8 characters that appear in
 %   the documentation only, within comments in the package source,
 %   but result in a validation failure. Language support in XMP metadata.
 %   Added macros for Windows and Mac system color profile directories.}
 % \changes{v1.5.8}{2016/05/03}{MediaBox, TrimBox, etc. derived from
-%   the paperheight, paperwidth. Improved language support, incl. KOI8-R
+%   the \texttt{\textbackslash paperheight}, \texttt{\textbackslash paperwidth}.
+%  Improved language support, incl. KOI8-R
 %   encoded cyrillics, Armenian OT6, and LGR Greek encoding, incl. polytonic Greek.
 %   All the encodings Latin-1--9 are supported for upper 8-bit characters.
-%   Fixed the quoted file-name problem, evident with LuaTeX.
+%   Fixed the quoted file-name problem, evident with Lua\TeX.
 %   Method to generate correct bookmarks with non-active (transliterated) input.
-%   Added support for XeLaTeX, improvements with LuaTeX. Updated documentation.} 
+%   Added support for Xe\LaTeX, improvements with Lua\TeX. Updated documentation.}
 % \changes{v1.5.82}{2017/05/12}{%
-%   Adjusted to changes in the LaTeX core, affecting macros for composite
+%   Adjusted to changes in the \LaTeX\ core, affecting macros for composite
 %   commands; incl. \texttt{\textbackslash textsuperscript} and others.}%
-% \changes{v1.5.83}{2017/05/16}{Improved support for XeLaTeX and LuaLaTeX.}%
-% \changes{v1.5.84}{2017/05/18}{Fully expand options for hyperref. Better support 
+% \changes{v1.5.83}{2017/05/16}{Improved support for Xe\LaTeX\ and Lua\LaTeX.}%
+% \changes{v1.5.84}{2017/05/18}{Fully expand options for \texttt{hyperref}. Better support
 %  for extended IPA letters and modifiers. Adjusted release versions and dates.}%
-% \changes{v1.5.85}{2017/06/23}{Fixed bugs, and fully implemented L8U as 
-%  a pseudo-encoding; renamed L8U files into the form *-penc.def }%
-% \changes{v1.6}{2018/11/18}{Added XMP support for PDF/UA-1.  
-% Added more Metadata fields  and Language support.  
-% Default RGB and CMYK profiles now require the  colorprofiles.sty  package. 
-% Added file CallasColorProfiles.tex .
-% Revised  glyphtounicode.sty  to use variation selectors, altered maps to PUA 
-% codepoints; added more glyphs via glyphtounicode-ntx.tex . 
+% \changes{v1.5.85}{2017/06/23}{Fixed bugs, and fully implemented L8U as
+%  a pseudo-encoding; renamed L8U files into the form \texttt{*-penc.def}.}%
+% \changes{v1.6}{2018/11/18}{Added XMP support for PDF/UA-1.
+% Added more Metadata fields  and Language support.
+% Default RGB and CMYK profiles now require the  \texttt{colorprofiles.sty} package.
+% Added file \texttt{CallasColorProfiles.tex}.
+% Revised  \texttt{glyphtounicode.sty}  to use variation selectors, altered maps to PUA
+%  codepoints; added more glyphs via \texttt{glyphtounicode-ntx.tex}.
 % Support for 8-bit Hebrew encodings, some Arabic and Devanagari.
-% Updated documentation, incl. for LaTeX changes.
+% Updated documentation, incl. for \LaTeX\ changes.
 %  }%
-% \changes{v1.6.1}{2018/12/22}{Fixed issue with ifthen package;
-%  improved Metadata with LuaTeX and XeTeX. Flexibility with page boxes for PDF/X.}%
-% \changes{v1.6.2}{2019/01/04}{Fixed passing of options to xcolor, and some glyphtounicode values.}%
-% \changes{v1.6.3}{2019/02/27}{Fixed encoding issues; support for new  pdfomitcharset  primitive;
-%   reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}%
+% \changes{v1.6.1}{2018/12/22}{Fixed issue with \texttt{ifthen} package;
+%  improved Metadata with Lua\TeX\ and Xe\TeX. Flexibility with page boxes for PDF/X.}%
+% \changes{v1.6.2}{2019/01/04}{Fixed passing of options to \texttt{xcolor}, and some \texttt{glyphtounicode} values.}%
+% \changes{v1.6.3}{2019/02/27}{Fixed encoding issues; support for new \texttt{\textbackslash pdfomitcharset} primitive;
+%   reference to \textsf{veraPDF} validation software; additions to \texttt{glyphtounicode-ntx.tex}.}%
+% \changes{v1.6.4}{2019/09/26}{Added check and warning with \texttt{luatex} for whether \texttt{\textbackslash pdfminorversion} can be changed;
+%  ensure correct \texttt{\textbackslash catcode} for input characters up to 31, when reading \texttt{.xmpdata} file;
+%  disabled patched \texttt{\textbackslash mathaccentV} due to incompatibility with wide base expressions.}
+% \changes{v1.6.5}{2021/07/06}{Support for \texttt{\textbackslash Nickname} as Metadata command;
+%  ensure \texttt{\textbackslash par} is unexpandable when processing XMP metadata.}
+% \changes{v1.6.5a}{2023/10/17}{Added option \texttt{pdf20} for future need with PDF 2.0; support for \texttt{\textbackslash pdfmajorversion};
+%   support for Memoir's \texttt{\textbackslash stockwidth} and \texttt{\textbackslash stockheight} dimen registers.}
+% \changes{v1.6.5b}{2024/04/05}{Avoid loading \texttt{xmpincl} package from within a \TeX\ grouping.}
+% \changes{v1.6.5c}{2024/05/23}{Avoid loading \texttt{stringenc} package from within a \TeX\ grouping.}
+% \changes{v1.6.5d}{2024/05/29}{Adjust for non-zero \texttt{\textbackslash stockwidth} only; prevent changes to \texttt{xcolor} options after use.}
+% \changes{v1.6.5e}{2024/06/22}{Ensure \texttt{\textbackslash pdfmajorversion} and \texttt{\textbackslash pdfminorversion}
+%  are both defined and set correctly. Updated documentation; added new Bibliography entries and revised URL links.}
+% \changes{v1.6.5f}{2024/06/24}{Reset \texttt{\textbackslash ifpdf} properly; support \texttt{\textbackslash creationdate} with Xe\TeX. Revised Glossary layout.}
 % \title{Generation of PDF/X- and PDF/A-\penalty-200 compliant PDFs with \pdftex --- \texttt{pdfx.sty}}
-% \date{2019/02/27}
-% \version{1.6.3}
+% \date{2024/07/01}
+% \version{1.6.5f}
 % \keywords{PDF, PDF/A, PDF/X, pdf\TeX, \LaTeX, Multilingual Metadata}
 % \author{C.\,V.\,Radhakrishnan, \Thanh, Ross Moore {\upshape\small
 % and} Peter Selinger}
 % \contact{\texttt{[cvr,thanh]@river-valley.org},\\%
-% \texttt{ross.moore at mq.edu.au}, \texttt{selinger at mathstat.dal.ca}\hss}
-% 
+% \texttt{ozross at icloud.com}, \texttt{selinger at mathstat.dal.ca}\hss}
+%
 % \maketitle
 %
 % \StopEventually{}
@@ -192,20 +219,20 @@
 %
 % \section[Introduction]{Introduction}
 %
-% This package\footnote{An earlier version of this documentation 
+% This package\footnote{An earlier version of this documentation
 % was published as \cite{pdfx}. All the changes since then have been developed
 % and coded by the 3rd-listed author.}
-% currently supports generation of PDF/X-, PDF/A- and PDF/E-compliant 
+% currently supports generation of PDF/X-, PDF/A- and PDF/E-compliant
 % documents,  using \pdftex, in most of their variants;
 % see the complete list in Section~\ref{ssec-options} below.
 % As of \TeX\,Live 2016 it now also works with Lua\LaTeX\ and Xe\LaTeX,
 % when using appropriate command-line options\footnote{%
-% The required invokation is:\quad
+% The required invocation is:\quad
 %  |xelatex --shell-escape   -output-driver="xdvipdfmx -z 0" <filename>.tex |}, but
 % with some limitations --- see Sections~\ref{sssec-xetex} and \ref{sssec-luatex}.
-% By `supports', we mean that the package provides correct and sufficient  
+% By `supports', we mean that the package provides correct and sufficient
 % means to declare that a document conforms with a stated PDF variant
-% (PDF/X, PDF/A, PDF/E, PDF/VT, PDF/UA, etc.) along with the version and/or 
+% (PDF/X, PDF/A, PDF/E, PDF/VT, PDF/UA, etc.) along with the version and/or
 % level of conformance.
 % This package also allows appropriate Metadata and Color Profile
 % to be specified, according to the requirements of the PDF variant.
@@ -216,7 +243,7 @@
 % information as well as a large range of optional data, a fully validating
 % PDF file cannot be achieved. The PDF can be created, having the correct
 % visual appearance on all pages, but it will not pass validation checks.
-% Sections~\ref{ssec-metadata} and \ref{ssec-multi} describe 
+% Sections~\ref{ssec-metadata} and \ref{ssec-multi} describe
 % how this file should be constructed.
 %
 % \medskip
@@ -224,23 +251,24 @@
 % of document structure and type of content that may be required
 % (or restricted) within a PDF variant. For example, PDF/VT \cite{PDFVT} requires
 % well-structured parts, using Form XObject sections tagged as `/DPart'.
-% Similarly PDF/A-1a (and 2a and 3a) \cite{PDFA,PDFA2,PDFA3} require  
-% a fully `Tagged PDF', including a detailed structure tagging which  
+% Similarly PDF/A-1a (and 2a and 3a) \cite{PDFA,PDFA2,PDFA3} require
+% a fully `Tagged PDF', including a detailed structure tagging which
 % envelops the complete contents of the document, as does also PDF/UA \cite{PDF-UA}.
-% This is beyond the current version of \LaTeX\ engines, as commonly shipped.
+% This is beyond the current version of \LaTeX\ engines as commonly shipped;
+% though see Section~\ref{sec-pdf20} for recent developments.
 % So while this package provides enough to meet the declaration,
-% metadata and font-handling aspects for these PDF/A variants, 
-% it is not sufficient to produce fully conforming PDFs. 
-% However, with extra \pdftex-based software or macro coding that \emph{is} capable 
-% of producing `Tagged PDF', this package can be used as part of 
-% the overall workflow to produce fully conforming documents.
+% Metadata and font-handling aspects for these PDF/A variants,
+% it is not sufficient to produce fully-conforming PDFs.
+% However, with extra \pdftex-based software or macro coding that \emph{is} capable
+% of producing `Tagged PDF', this package can be used as part of
+% the overall workflow to produce fully-conforming documents; see \cite{tpdf}.
 %
 %
 % \subsection{PDF standards}\label{ssec-standards}
 %
 % PDF/X and PDF/A are umbrella terms used to denote several ISO
-% standards \cite{PDFX,PDFX3,PDFX1a,PDFX4,PDFX5,PDFA,PDFA2,PDFA3} 
-% that define different subsets of the PDF standard \cite{PDF17,ISO32000}. 
+% standards \cite{PDFX,PDFX3,PDFX1a,PDFX4,PDFX5,PDFA,PDFA2,PDFA3}
+% that define different subsets of the PDF standard \cite{PDF17,ISO32000}.
 % The objective of PDF/X is to facilitate graphics exchange between
 % document creator and printer and therefore, has all requirements
 % related to printing. For instance, in PDF/X, all fonts need to be
@@ -249,7 +277,7 @@
 % specifications of PDF/X.
 % Since 2005 other variants of PDF/X have emerged, as extra effects
 % (such as layering and transparency) have been supported within the PDF
-% standard itself. The full range of versions and conformance supported 
+% standard itself. The full range of versions and conformance supported
 % in this package is discussed below in Section~\ref{ssec-options}.
 %
 % PDF/A defines a profile for archiving PDF documents, which ensures
@@ -256,21 +284,21 @@
 % the documents can be reproduced in the exact same way in years to
 % come. A key element to achieving this is that PDF/A documents
 % are 100\% self-contained.  All the information needed to display the
-% document in the same manner every time is embedded in the file. 
+% document in the same manner every time is embedded in the file.
 % A PDF/A document is not permitted to be reliant on information from
 % external sources.  Other restrictions include avoidance of
-% audio/video content, JavaScript and encryption.  
-% Mandatory inclusion of fonts, color profile and standards-based metadata 
+% audio/video content, JavaScript and encryption.
+% Mandatory inclusion of fonts, color profile and standards-based metadata
 % are absolutely essential for PDF/A.
 % Later versions allow for use of image compression and file attachments.
 %
-% PDF/E is an ISO standard \cite{PDFE} intended for documents used in engineering workflows. 
+% PDF/E is an ISO standard \cite{PDFE} intended for documents used in engineering workflows.
 % PDF/VT \cite{PDFVT} allows for high-volume customised form printing, such as utility bills.
 % PDF/UA (`Universal Accessibility') has emerged as a standard \cite{PDF-UA,PDFUA1,PDFUABSI}
-% supporting Assistive Technologies, incorporating web-accessibility guidelines (WCAG) 
-% for electronic documents. 
+% supporting Assistive Technologies, incorporating web-accessibility guidelines (WCAG)
+% for electronic documents.
 % In future, PDF/H may emerge for health records and medical-related
-% documents. Other applications can be envisaged. 
+% documents. Other applications can be envisaged.
 % Declarations and Metadata are supported for the first three of these.
 % The others are the subject of further work; revised versions of this
 % package can be expected in later years.
@@ -281,6 +309,30 @@
 % and whatever else is relevant to how the standards have been established
 % and how they can be used.
 %
+% \subsection{Later \LaTeX\ changes, support for newer PDF standards}\label{sec-pdf20}
+%
+% Although PDF 2.0~\cite{PDF20} was first published in 2017 and revised in 2020, it has taken
+% a long time for it to become a target format for documents built using \LaTeX.
+% This is because the requirement of using `Tagged PDF' is stringent, requiring
+% a reworking of almost every aspect of \LaTeX's document production model \cite{LaTeXPDF}.
+% Work to this end is going on, via the PDF Association's `\LaTeX\ Project LWG'\cite{PDF-LaTeX},
+% the experimental |tagpdf| package \cite{tagpdf}, and Ross Moore's |tpdf| package and macro suite \cite{tpdf}.
+% Significant internal changes have been made to \LaTeX\ itself, which in turn have
+% required the |v1.6.5x| updates in 2024 to this |pdfx| package. We thank the following users for reporting
+% issues arising from such changes: Sergio Zenoni, Takehiko Tanabe, Tom\'a\v s Nov\'a\v cek.
+%
+% In early 2024 the PDF Association published several documents for new and updated standards
+% based upon PDF 2.0~\cite{PDF20}. These include PDF/UA-2 \cite{PDFUA2}, PDF `Declarations' \cite{PDFDecl},
+% `Well-Tagged PDF' (WTPDF) \cite{WTPDF} with declarations for `Accessibility' and `Reuse',
+% adding to PDF/A-4 \cite{PDFA4}, PDF/X-6 \cite{PDFX6} and PDF/VT-3 \cite{PDFVT3}, each with various flavours.
+% To support these, there will be released in late 2024 a variant named |pdfx2| as an extension of |pdfx|,
+% with separate documentation detailing how to specify appropriate XMP metadata \cite{XMP-ISO}.
+%
+% Once |pdfx2| becomes available, this will take on the role of handling new developments for
+% \LaTeX\ support of PDF 2.0-based software solutions. The |pdfx| package will remain under
+% active development, primarily to ensure compatibility of existing documents with PDF 1.7-based
+% requirements (tagged or otherwise), following any further changes in \LaTeX\ or other packages.
+%
 % \section[Usage]{Usage}\label{sec-usage}
 %
 % The package can be loaded with the command:
@@ -292,7 +344,7 @@
 % \subsection{Package options}\label{ssec-options}
 %
 % \subsubsection{PDF/A options}
-% 
+%
 % PDF/A is an ISO standard~\cite{PDFA,PDFA2,PDFA3} intended for long-term archiving of
 % electronic documents. It therefore emphasizes self-containedness and
 % reproducibility, as well as machine-readable metadata.  The PDF/A
@@ -307,7 +359,7 @@
 % versions contain a subset of the features of later versions, so for
 % maximum portability, it is preferable to use a lower-numbered
 % version, when the extra features allowed in higher versions are not used.
-% There is no conformance level `u' in version 1 of the standard.  
+% There is no conformance level `u' in version 1 of the standard.
 % Thus for many typical uses of PDF/A, it is sufficient to use PDF/A-1b.
 %
 % \begin{itemize}
@@ -320,18 +372,18 @@
 % \item |a-3b|: generate PDF/A-3b.
 % \item |a-3u|: generate PDF/A-3u.
 % \end{itemize}
-% By `Experimental, not fully implemented' here we mean primarily that 
+% By `Experimental, not fully implemented' here we mean primarily that
 % the document structure, as required for `Tagged PDF', is not handled
-% by this package. Using other \pdftex-based software that \emph{is} 
+% by this package. Using other \pdftex-based software that \emph{is}
 % capable of producing such complete tagging, conforming documents
 % can indeed be produced.
 %
 % \subsubsection{PDF/E options}
-% 
+%
 % PDF/E is an ISO standard~\cite{PDFE} intended for documents used in engineering
 % workflows. There is only one version of the PDF/E standard so far,
 % and it is called PDF/E-1.
-% 
+%
 % \begin{itemize}
 % \item |e-1|: generate PDF/E-1.
 % \item |e|: same as |e-1|.
@@ -338,10 +390,10 @@
 % \end{itemize}
 %
 % \subsubsection{PDF/UA options}
-% 
-% PDF/UA is an ISO and ANSI standard~\cite{PDF-UA,PDFUABSI} intended for making 
-% structured documents readable and navigable using Assistive Technology; 
-% e.g., screen-readers, Braille keyboards and such-like. 
+%
+% PDF/UA is an ISO and ANSI standard~\cite{PDF-UA,PDFUABSI} intended for making
+% structured documents readable and navigable using Assistive Technology;
+% e.g., screen-readers, Braille keyboards and such-like.
 % Documents prepared this way can be easily saved in other formats which
 % preserve the structure, such as XML, HTML, and (Microsoft) Word-based formats.
 %
@@ -359,20 +411,20 @@
 % multi-file exchange, and level 2s is for streamed delivery.
 % Currently, none of the PDF/VT conformance levels are fully
 % implemented by the |pdfx| package.
-% 
+%
 % \begin{itemize}
 % \item |vt-1|: generate PDF/VT-1, based on PDF/X-4. Experimental, not fully implemented
 % \item |vt-2|: generate PDF/VT-2, based on PDF/X-5pg. Experimental, not fully implemented.
 % \item |vt-2s|: generate PDF/VT-2s. Experimental, not fully implemented.
 % \end{itemize}
-% By `Experimental, not fully implemented' here we mean primarily that 
+% By `Experimental, not fully implemented' here we mean primarily that
 % the structuring of a document into `/DPart' sections, as Form XObjects,
-% is not handled by this package. 
-% This \emph{is} possible with current \pdftex\ software, 
+% is not handled by this package.
+% This \emph{is} possible with current \pdftex\ software,
 % but not yet in a way that lends itself easily to full automation, due to
 % requirements of knowing the internal object number of certain internal
-% PDF constructs. All the other aspects: PDFInfo declaration, Metadata 
-% and Color Profile, of the PDF/VT variants are correctly handled. 
+% PDF constructs. All the other aspects: PDFInfo declaration, Metadata
+% and Color Profile, of the PDF/VT variants are correctly handled.
 %
 % \subsubsection{PDF/X options}
 %
@@ -380,13 +432,13 @@
 % emphasizes printing-related requirements, such as embedded fonts and
 % color profiles. The PDF/X standard has a large number of variants
 % and conformance levels. The basic variants are X-1, X-1a,
-% X-3, X-4, and X-5. (Note that a revised version of the X-2 standard 
-% was published in 2003 but withdrawn as an ISO standard in 2011, 
-% basically due to lack of interest in using it). 
-% The PDF/X-1a standard exists in revisions of 2001 and 2003, 
-% the PDF/X-3 standard exists in revisions of 2002 and 2003, 
-% and the PDF/X-4 and PDF/X-5 standards exist in revisions of 2008 and 2010. 
-% Moreover, some of these standards have a `p' version, which permits the 
+% X-3, X-4, and X-5. (Note that a revised version of the X-2 standard
+% was published in 2003 but withdrawn as an ISO standard in 2011,
+% basically due to lack of interest in using it).
+% The PDF/X-1a standard exists in revisions of 2001 and 2003,
+% the PDF/X-3 standard exists in revisions of 2002 and 2003,
+% and the PDF/X-4 and PDF/X-5 standards exist in revisions of 2008 and 2010.
+% Moreover, some of these standards have a `p' version, which permits the
 % use of an externally supplied color profile (instead of an embedded one),
 % and/or a `g' version, which permits the use of external graphical
 % content. Moreover, PDF/X-5 has an `n' version, which extends
@@ -401,7 +453,7 @@
 % \item |x-2|:    generate PDF/X-2; unpublished, doesn't validate.
 % \item |x-3|:    generate PDF/X-3. Options |x-302| and |x-303| are
 % also available to specify PDF/X-3:2002 or PDF/X-3:2003 explicitly.
-% \item |x-4|:    generate PDF/X-4. Options |x-408| and |x-410| are            
+% \item |x-4|:    generate PDF/X-4. Options |x-408| and |x-410| are
 % also available to specify PDF/X-4:2008 or PDF/X-4:2010 explicitly.
 % \item |x-4p|:   generate PDF/X-4p. Options |x-4p08| and |x-4p10| are
 % also available to specify PDF/X-4p:2008 or PDF/X-4p:2010 explicitly.
@@ -408,7 +460,7 @@
 % \item |x-5g|:   generate PDF/X-5g. Options |x-5g08| and |x-5g10| are
 % also available to specify PDF/X-5g:2008 or PDF/X-5g:2010 explicitly.
 % \item |x-5n|:   generate PDF/X-5n. Options |x-5n08| and |x-5n10| are
-% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010 explicitly. 
+% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010 explicitly.
 % Experimental, not fully implemented.
 % \item |x-5pg|:  generate PDF/X-5pg. Options |x-5pg08| and |x-5pg10| are
 % also available to specify PDF/X-5pg:2008 or PDF/X-5pg:2010 explicitly.
@@ -441,9 +493,11 @@
 % applicable standard.\\This may produce a non-standard-conforming PDF file.
 % \item |pdf17|: use PDF 1.7, overriding the version specified by the
 % applicable standard.\\This may produce a non-standard-conforming PDF file.
+% \item |pdf20|: use PDF 2.0, experimental in preparation for use with future
+% software, under development. This may produce a non-standard-conforming PDF file.
 % \item |nocharset|: do not generate the Charset entry for fonts (\pdftex\ only).
 % \item |usecharset|: generate the Charset entry for fonts (\pdftex\ only).
-% \end{itemize} 
+% \end{itemize}
 % The latter two options affect the value of the |\pdfomitcharset| primitive,
 % added to \pdftex\ in 2019, due to differing requirements for PDF/A-1
 % and other PDF/A versions. Indeed use of the |/Charset| entry for a font
@@ -451,14 +505,14 @@
 %
 % \subsubsection{XMP language options}\label{ssec-xmplang}
 %
-% These options allow for characters in alphabets other than those  
-% used for English and Western European languages to be used 
-% within the |.xmpdata| file (see Section~\ref{ssec-metadata}), 
+% These options allow for characters in alphabets other than those
+% used for English and Western European languages to be used
+% within the |.xmpdata| file (see Section~\ref{ssec-metadata}),
 % supported through \LaTeX\ character representation macros.
 % \begin{itemize}
-% \item |latxmp|: extended Latin blocks, |Ux0180|--|Ux024F| 
-%    and |Ux1E00|--|Ux1EFF| 
-% \item |armxmp|: armenian letters and ligatures, |Ux0530|--|Ux058F|, 
+% \item |latxmp|: extended Latin blocks, |Ux0180|--|Ux024F|
+%    and |Ux1E00|--|Ux1EFF|
+% \item |armxmp|: armenian letters and ligatures, |Ux0530|--|Ux058F|,
 %    via macros |\armyba|, |\armfe|, |\armcomma|, etc.
 % \item |cyrxmp|: cyrillic letters and accents, |Ux0400|--|Ux04FF|
 %    and |Ux0500|--|Ux0527| via macros |\cyra|, |\CYRN|, etc.
@@ -472,8 +526,8 @@
 %    via macros |\abreve|, |\uhorn|, |\ECIRCUMFLEX|, etc.
 % \item |ipaxmp|: phonetic extensions, |Ux0250|--|Ux02AF|
 %    and |Ux1D00|--|Ux1DFF|
-% \item |mathxmp|: mathematical letters, symbols, operators 
-%    arrows, alphanumeric forms. 
+% \item |mathxmp|: mathematical letters, symbols, operators
+%    arrows, alphanumeric forms.
 % \item |allxmp|: all of the above, as well as those listed next;
 %    used primarily for testing compatibility with other packages.
 % \end{itemize}
@@ -486,13 +540,13 @@
 % Further options allow direct (enclosed) input of upper 8-bit
 % characters, from encodings such as Latin-1--Latin-9, KOI8-R,
 % LGR (Greek), ArmSSCI8, and a few more.
-% Use of these requires a carefully controlled parsing regime. 
+% Use of these requires a carefully controlled parsing regime.
 % Here we list the package options that declare such content
 % may be present in the |.xmpdata| file.
-% A detailed account of how these are used is given 
+% A detailed account of how these are used is given
 % in~Section~\ref{ssec-multi} (``Multilingual Metadata'').
 % \begin{itemize}
-% \item |LATxmp|: support for direct use of the upper-range characters 
+% \item |LATxmp|: support for direct use of the upper-range characters
 %  (byte codes 160--255) for input encodings Latin1--Latin9, for
 %  Latin-based alphabets as used in European countries and elsewhere.
 %  This defines parser macros |\textLAT|, |\textLII|, \dots, |\textLIX|.
@@ -501,7 +555,7 @@
 %  of upper-range characters (byte codes 148--255) under input
 %  encodings KOI8-R and KOIR8-RU, using |\textKOI| as parser macro.
 %  All support from |cyrxmp| is loaded also.
-% \item |LGRxmp|: support for greek letters entered using either 
+% \item |LGRxmp|: support for greek letters entered using either
 %  the LGR input transliteration of ASCII characters, or the ISO-8859-7
 %  encoding of upper-range characters (byte codes 160--255),
 %  or a combination of both, using |\textLGR| as parser macro.
@@ -509,25 +563,25 @@
 % \item |AR8xmp|: support for armenian letters entered using the
 %  Arm\TeX~2.0 input transliteration of ASCII characters, or the
 %  ArmSCII8 encoding of upper-range characters (byte codes 160--255),
-%  or a combination of both, using |\textARM| as parser macro. 
+%  or a combination of both, using |\textARM| as parser macro.
 %  All support from |armxmp| is loaded also.
-% \item |HEBxmp|: support for hebrew letters entered using either 
-%   LHE input transliteration of ASCII characters, or  the CP1255, CP862 
+% \item |HEBxmp|: support for hebrew letters entered using either
+%   LHE input transliteration of ASCII characters, or  the CP1255, CP862
 % or ISO-8859-8 (HE8) encoding of upper-range characters (byte codes 160--255),
 %  or a combination of these using |\textLHE|, |\textHEBO|, |\textHEB| as parser macros.
 %  All support from |hebxmp| is loaded also.
 % \end{itemize}
-% These `parser' options have received limited testing, so please 
+% These `parser' options have received limited testing, so please
 % report any mistakes in the UTF-8 output that you may encounter.
 %
 % \subsection{Data file for metadata}\label{ssec-metadata}
 %
-% As mentioned above, standards-compliant PDF documents require 
-% document-level metadata to be included. 
-% This,  known as an `XMP packet'~\cite{XMP-spec,XMP-ISO}, 
+% As mentioned above, standards-compliant PDF documents require
+% document-level metadata to be included.
+% This,  known as an `XMP packet'~\cite{XMP-spec,XMP-ISO},
 % is like having a library catalog card included within the PDF itself. It is an unencrypted
 % portion of the PDF file, with data expressed in Extensible Markup Language (XML),
-% using Resource Description Format (RDF~\cite{RDF}) syntax, encoded as UTF-8 
+% using Resource Description Format (RDF~\cite{RDF}) syntax, encoded as UTF-8
 % so readable by any text editing software on any modern computing platform.
 %
 % Some advantages of doing this are clear.
@@ -539,12 +593,12 @@
 %  \item For the author(s): who can specify the kind of information most appropriate
 %   to help readers understand the nature and purpose of the document.
 % \end{itemize}
-%   
-% The |pdfx| package builds the XMP metadata from information supplied via a special data file 
-% called |\jobname.xmpdata|. Here, |\jobname| is usually the basename of the document's main 
-% |.tex| file. For example, if your document source is in the file |main.tex|, 
-% then the metadata must be in a file called |main.xmpdata|. 
-% None of the individual metadata fields are mandatory, but for most documents, it makes sense 
+%
+% The |pdfx| package builds the XMP metadata from information supplied via a special data file
+% called |\jobname.xmpdata|. Here, |\jobname| is usually the basename of the document's main
+% |.tex| file. For example, if your document source is in the file |main.tex|,
+% then the metadata must be in a file called |main.xmpdata|.
+% None of the individual metadata fields are mandatory, but for most documents, it makes sense
 % to specify at least the title and the author. For more technical aspects of metadata
 % and its uses, consult the work of the Dublin Core Initiative~\cite{DC} and PRISM~\cite{PRISM}.
 %
@@ -557,72 +611,73 @@
 %   |\Publisher{Baking International}|
 % \end{decl}
 % You should note that multiple authors and keywords have been separated
-% by |\sep|. This |\sep| macro serves a technical purpose and is  
+% by |\sep|. This |\sep| macro serves a technical purpose and is
 % permitted within the |\Author|, |\Keywords|, and |\Publisher| fields,
-% as well as some others. See \S\ref{mdfields} below for a complete listing 
+% as well as some others. See \S\ref{mdfields} below for a complete listing
 % of the supported author-supplied metadata fields.
 %
 % After processing, the local directory contains a file named such as
 % |pdfa.xmpi| or |pdfe.xmpi| or |pdfx.xmpi| according to the PDF variant desired.
-% This file is the complete XMP Metadata packet. 
-% It can be checked for validity, using an online validator,  such as at 
+% This file is the complete XMP Metadata packet.
+% It can be checked for validity, using an online validator,  such as at
 % \href{http://www.pdflib.com/knowledge-base/xmp-metadata/free-xmp-validator/}{www.pdflib.com}.
-% \textsf{veraPDF}~\cite{veraPDF} is Open Source software providing validation for PDF/A, 
+% \textsf{veraPDF}~\cite{veraPDF} is Open Source software providing validation for PDF/A,
 % and other checkers useful in a PDF/A production setting.
-% 
+%
 % \textbf{Warning}: The |\jobname.xmpdata| file may be included in the
-% main document source, within a |{filecontents*}| environment, 
+% main document source, within a |{filecontents}| environment,
 % provided this comes \emph{before} the |\documentclass| command, as follows.
+% The |force| option ensures overwriting a previous file to catch recent edits.
 % \begin{decl}[]
-% |\begin{filecontents*}{\jobname.xmpdata}|\\
+% |\begin{filecontents}[force]{\jobname.xmpdata}|\\
 % |  \Title{Baking through the ages}|\\
 % |  \Author{A. Baker\sep C. Kneader}|\\
 % |  \Language{en-GB}|\\
 % |  \Keywords{cookies\sep muffins\sep cakes}|\\
 % |  \Publisher{Baking International}|\\
-% |\end{filecontents*}|\\
+% |\end{filecontents}|\\
 % |\documentclass[11pt,a4paper]{article}|\\
 % |...|
 % \end{decl}
 % Including the metadata with the \LaTeX\ source is very convenient.
-% Having it at the top of the file also brings attention to it, placing emphasis on 
-% the desirability of including metadata, and keeping it accurate while the main 
-% content of the document is subject to changes or revision. 
-% Macro definitions can also occur prior to the |\documentclass| command, 
-% including any that may be needed within the metadata. 
+% Having it at the top of the file also brings attention to it, placing emphasis on
+% the desirability of including metadata, and keeping it accurate while the main
+% content of the document is subject to changes or revision.
+% Macro definitions can also occur prior to the |\documentclass| command,
+% including any that may be needed within the metadata.
 % An example of this is apparent in Figure~\ref{koi8-code} occurring later.
 %
-% However, this ordering is also extremely important, else any non-ascii UTF-8 byte 
-% sequences can become active characters and expand upon data being written out, 
+% However, this ordering is also extremely important, else any non-ascii UTF-8 byte
+% sequences can become active characters and expand upon data being written out,
 % rather than remaining as inactive bytes.
 % If you edit the metadata supplied this way, remember to remove the
 % existing copy of |\jobname.xmpdata| file before the next processing run,
-% as \LaTeX\ does not write a new copy of the file when it exists on disk already, 
+% as \LaTeX\ does not write a new copy of the file when it exists on disk already,
 % within the current working directory or elsewhere that \LaTeX\ may find.
 % In development or testing situations the filename may need to be given as
 % |./\jobname.xmpdata|, else an older version may be loaded in error.
-% 
+%
 % Experienced users/programmers can employ the \verb|\write18| mechanism%
-% \footnote{If you don't already know what this is, they you probably 
-% should not try using it |:-)|.}, together with the |--shell-escape| command-line 
-% option, to automatically execute a shell command that removes |\jobname.xmpdata| 
-% on every (or on selected) processing runs. 
+% \footnote{If you don't already know what this is, they you probably
+% should not try using it |:-)|.}, together with the |--shell-escape| command-line
+% option, to automatically execute a shell command that removes |\jobname.xmpdata|
+% on every (or on selected) processing runs.
 % This is only useful when the metadata changes, for whatever reason.
 %
 % \medskip
-% Other places for the |{filecontents*}| environment can work, 
+% Other places for the |{filecontents}| environment can work,
 % but \emph{only} when it contains \emph{no} non-ascii UTF-8 byte sequences.
-% Since 2018, with default 
+% Since 2018, with default
 % See Section~\ref{ssec-symbols} below for more information on the macros
 % that can be safely used within |.xmpdata| metadata files.
-% 
+%
 % \subsection{List of supported metadata fields}\label{mdfields}
-% 
+%
 % Following is a complete list of user-definable metadata fields currently supported,
 % separated into particular groupings.
-% Each command is accompanied by the specific XML tagged field name (with namespace) 
-% that is placed into the document-level Metadata packet,  as well as the kind of information 
-% being conveyed. 
+% Each command is accompanied by the specific XML tagged field name (with namespace)
+% that is placed into the document-level Metadata packet,  as well as the kind of information
+% being conveyed.
 % More may be added in the future.
 % These commands can \emph{only} be used within the |.xmpdata| file.
 %
@@ -630,13 +685,13 @@
 % using RFC5646 (BCP 47)~\cite{BCP47} codes, in which the metadata field is given.
 % Languages for multiple entries can use e.g., |\sep[de] ...|.
 % Only those fields requiring a specific format (e.g. dates) do \emph{not}
-% support language specifiers; these are indicated with \fixmd. 
+% support language specifiers; these are indicated with \fixmd.
 % Fields allowing more than one value are indicated with \starmd.
 % Multiple values may be given as separate instances of the macro, or as a single
-% instance with the values delimited by |\sep|, as in the example above. 
-% 
+% instance with the values delimited by |\sep|, as in the example above.
+%
 % \subsubsection{General information:}
-% 
+%
 % \begin{itemize}
 % \item \starmd|\Author|: \hfill (|dc:creator|)\\
 %  the document's human author(s). Separate multiple authors with |\sep|.
@@ -661,10 +716,10 @@
 %  location of a web page describing the owner
 %   and/or rights statement for this document.
 % \item \fixmd|\Copyrighted|:  \hfill (|xmpRights:Marked|)\\
-%  `True' if the document is copyrighted,  and `False' if it isn't. 
-% This is automatically set to `True'  if either |\Copyright| or |\CopyrightURL| is specified, 
-% but this can be overridden. 
-%  For example, if the copyright statement is `Public Domain', 
+%  `True' if the document is copyrighted,  and `False' if it isn't.
+% This is automatically set to `True'  if either |\Copyright| or |\CopyrightURL| is specified,
+% but this can be overridden.
+%  For example, if the copyright statement is `Public Domain',
 %  then specify also |\Copyrighted{False}|.
 %  \item \starmd|\Owner|:  \hfill (|xmpRights:Owner|)\\
 %  specifies the owner(s) of the document or resource.
@@ -673,8 +728,8 @@
 % \end{itemize}
 %
 % \subsubsection{more Dublin Core metadata:}\label{sssec-dc}
-% From version 1.6 of |pdfx.sty|, the following fields can be used to provide a greater 
-% range of information to be specified as metadata. 
+% From version 1.6 of |pdfx.sty|, the following fields can be used to provide a greater
+% range of information to be specified as metadata.
 % \begin{itemize}
 % \item \starmd|\Contributor|: \hfill (|dc:contributor|)\\
 %  contributor(s) other than author(s) of the PDF document.
@@ -681,10 +736,10 @@
 % \item |\Coverage|: \hfill (|dc:coverage|)\\
 %  statement about the extent or scope of the document's contents.
 % \item \starmd\fixmd|\Date|: \hfill (|dc:date|)\\
-%  date(s) when something significant occurred relating to the resource (e.g., version changes); 
+%  date(s) when something significant occurred relating to the resource (e.g., version changes);
 %  must be in ISO date format |YYYY-MM-DD| or |YYYY-MM|.
 % \item \fixmd|\PublicationType|: \hfill (|dc:type|)\\
-%  The type of publication. If specified, must be one of `book', `catalog', `feed', `journal', 
+%  The type of publication. If specified, must be one of `book', `catalog', `feed', `journal',
 % `magazine', `manual', `newsletter', `pamphlet'. This is automatically set to `journal'
 %   if |\Journaltitle| is specified (see below), but can be overridden.
 % \item \starmd|\Relation|: \hfill (|dc:relation|)\\
@@ -700,10 +755,10 @@
 % \end{itemize}
 %
 %  The remaining Dublin Core field |(dc:format)| is always set to `|application/pdf|'.
-% 
+%
 % \subsubsection{Publication information:}\label{sssec-publ}
-% The following macros allow for inclusion of publication related metadata fields, 
-% as specified by PRISM~\cite{PRISM} to meet publishing requirements. 
+% The following macros allow for inclusion of publication related metadata fields,
+% as specified by PRISM~\cite{PRISM} to meet publishing requirements.
 % \begin{itemize}
 % \item |\Journaltitle|: \hfill (|prism:issueName|)\\
 % The title of the journal in which the document was published.
@@ -720,7 +775,7 @@
 % \item |\CoverDisplayDate|:  \hfill (|prism:coverDisplayDate|)\\
 % Date on the cover of the journal issue, as a human-readable text string.
 % \item \fixmd|\CoverDate|:   \hfill (|prism:coverDate|)\\
-%  Date on the cover of the journal issue, in a format suitable for storing in a database 
+%  Date on the cover of the journal issue, in a format suitable for storing in a database
 %  field with a `date' data type; e.g. |YYYY-MM|, or |YYYY-MM-DD|.
 % \end{itemize}
 % This is an area which can be expanded, to deal with more kinds
@@ -729,20 +784,20 @@
 % Examples of this can be found in the template files |pdfx.xmp|, |pdfa.xmp|, |pdfe.xmp|.
 %
 % \subsubsection{Backward Compatibility}
-% The following macros are also recognised, for backward compatibility 
+% The following macros are also recognised, for backward compatibility
 % with earlier versions of the package.
 %  \begin{itemize}
 %  \item \starmd|\AuthoritativeDomain|: \hfill (|pdfx:AuthoritativeDomain|)\\
 %  specifies extra names (e.g., of companies) associated to the existence of the PDF or resource.
 %  \item |\Creator|: \hfill (|xmp:CreatorTool|)\\
-%  synonymous with |\CreatorTool| which is usually handled automatically anyway, 
+%  synonymous with |\CreatorTool| which is usually handled automatically anyway,
 %  but can be over-ridden.
 %  \item |\Org|: synonymous with |\Publisher|.
 %  \item |\WebStatement|: synonymous with |\CopyrightURL|.
 %  \end{itemize}
-% 
+%
 % \subsubsection{more XMP metadata:}\label{sssec-xmp}
-% 
+%
 %  \begin{itemize}
 %  \item \starmd|\Advisory|: \hfill (|xmp:Advisory|)\\
 %   noteworthy information; e.g., revision data or changes.
@@ -763,7 +818,7 @@
 %  with a PDF standard, and level of conformance.
 %  There are no separate user-macros to alter these.
 %  The first three dates are usually set to be identical.
-% 
+%
 %  \begin{itemize}
 %  \item (|xmp:CreateDate|) : creation date\&time of the PDF.
 %  \item (|xmp:MetadataDate|) : creation date\&time of the Metadata for the PDF.
@@ -776,7 +831,7 @@
 %  \item (|pdfaid:conformance|) : |a|, |b| or |u| for PDF/A-??
 %  \item (|pdfuaid:part|) :  currently |1| for PDF/UA-1
 %  \item (|pdfe:ISO_PDFEVersion|) :  currently |1| for PDF/E-1
-%  \item (|pdf:Version|) : |PDF/X-1|, |PDF/X-2| or |PDF/X-3| 
+%  \item (|pdf:Version|) : |PDF/X-1|, |PDF/X-2| or |PDF/X-3|
 %  \item (|pdfx:GTS_PDFXVersion|) : e.g., |PDF/X-1a:2003| up to PDF/X-3 ;
 %   but no year for PDF/X-4 and PDF/X-5 variants
 %  \item (|pdfx:GTS_PDFXConformance|) :  e.g., |PDF/X-1a:2003| up to PDF/X-2
@@ -788,13 +843,13 @@
 % \subsection{Symbols permitted in metadata}\label{ssec-symbols}
 %
 % Within the metadata, all printable ASCII characters except
-% |\|, |{|, |}| and |%| represent themselves. Also, all printable Unicode characters 
-% from the basic multilingual plane (i.e., up to code point U+FFFF) 
+% |\|, |{|, |}| and |%| represent themselves. Also, all printable Unicode characters
+% from the basic multilingual plane (i.e., up to code point U+FFFF)
 % can be used directly with the UTF-8 encoding.
-% (Please note: encodings other than UTF-8 are not supported in the metadata, 
-% except as arguments to `parser-macros'; see Section~\ref{ssec-xmplang}). 
-% Consecutive whitespace characters are combined into a single space. 
-% Whitespace after a macro such as |\copyright|, |\backslash|, or |\sep| is ignored. 
+% (Please note: encodings other than UTF-8 are not supported in the metadata,
+% except as arguments to `parser-macros'; see Section~\ref{ssec-xmplang}).
+% Consecutive whitespace characters are combined into a single space.
+% Whitespace after a macro such as |\copyright|, |\backslash|, or |\sep| is ignored.
 % Blank lines are not permitted.
 % Moreover, the following markup can be used:
 %
@@ -807,32 +862,32 @@
 % \item |\copyright|:   the copyright symbol \textcopyright
 % \end{itemize}
 % The macro |\sep| is permitted within |\Author|, |\Keywords|,
-% |\Publisher|, and other macros marked with \starmd\ above. 
-% It's purpose is to separate multiple authors, keywords, etc. 
-% to appear as separate list items appropriately and consistently 
-% in the different ways that such information is represented 
-% within the PDF file. 
+% |\Publisher|, and other macros marked with \starmd\ above.
+% It's purpose is to separate multiple authors, keywords, etc.
+% to appear as separate list items appropriately and consistently
+% in the different ways that such information is represented
+% within the PDF file.
 % The package takes care of this when |\sep| is used.
 % For example, in the XMP metadata, it expands as |</rdf:li><rdf:li>| tagging.
 %
 % \subsubsection{PDF Info strings}\label{sssec-info}
-%  When |\sep| is not used within its argument, the metadata from  |\Title|,  
-% |\Author| and |\Keywords| is also included in the PDF |/Info| dictionary. 
+%  When |\sep| is not used within its argument, the metadata from  |\Title|,
+% |\Author| and |\Keywords| is also included in the PDF |/Info| dictionary.
 % When this is the case, validation for the declared standard
 % will occur only if the corresponding |/Info| item and XMP metadata field
-% convert to exactly the same Unicode string. 
+% convert to exactly the same Unicode string.
 % This cannot happen when |\sep| is used, so the |/Info| items are then not populated.
 %
 %  Unfortunately not all PDF browsers (in particular, older ones and much Apple software)
 %  give ready access to the XMP metadata packet. Some authors want to see everything
-%  using e.g., the Unix/Linux command: |pdfinfo -enc UTF-8 |. In fact there is the |-meta| 
-%  option to get the complete metadata packet (in UTF-8 encoding). 
+%  using e.g., the Unix/Linux command: |pdfinfo -enc UTF-8 |. In fact there is the |-meta|
+%  option to get the complete metadata packet (in UTF-8 encoding).
 %  This can give more than what one wants, so use it as follows:
 % \begin{decl}[]
 %    pdfinfo -meta  <filename>.pdf  \textbar\ grep 'dc:'
 % \end{decl}
 %  to extract just the Dublin Core metadata fields.
-%  
+%
 %  Another possibility is to \emph{not} use |\sep| with multiple authors and/or keywords.
 %  Instead replace it with simply `|, |'. We do not recommend doing this, as more sophisticated
 %  metadata tools will see the result as a single value, rather than multiple authors, say.
@@ -842,21 +897,21 @@
 %
 % \subsection{Macros permitted in metadata}\label{ssec-macros}
 %
-% Other \TeX\ macros actually can be used, provided the author is very 
+% Other \TeX\ macros actually can be used, provided the author is very
 % careful and not ask for too-complicated \TeX\ or \LaTeX\ expansions
 % into internal commands or non-character primitives; basically just accents,
 % macros for Latin-based special characters, and simple textual replacements,
-% perhaps with a simple parameter. A special macro |\pdfxEnableCommands{...}| 
+% perhaps with a simple parameter. A special macro |\pdfxEnableCommands{...}|
 % is provided to help resolve difficulties that may arise.
 %
 % Here is an example\footnote{ Other use cases are discussed with regard to
-% Figures~\ref{arm-code} and \ref{math-wflow}.} of the use of |\pdfxEnableCommands|, 
-% which occurs with the name of one of our authors {(H\`an Th\'{\^e} Thanh)} 
+% Figures~\ref{arm-code} and \ref{math-wflow}.} of the use of |\pdfxEnableCommands|,
+% which occurs with the name of one of our authors {(H\`an Th\'{\^e} Thanh)}
 % due to the doubly-accented letter \'{\^e}.
 % It is usual to define a macro such as: |\def\thanh{H\`an Th\'{\^e} Thanh}|.
-% In previous versions of the |pdfx| package, use of such a macro 
+% In previous versions of the |pdfx| package, use of such a macro
 % within the |.xmpdata| file, in the |Copyright| information say,
-% could result in the accent macros expanding into internal primitives, such as 
+% could result in the accent macros expanding into internal primitives, such as
 % \begin{decl}[]
 % | H\unhbox \voidb at x \bgroup \let \unhbox \voidb at x \setbox \@tempboxa ... |
 % \end{decl}
@@ -867,7 +922,7 @@
 % |      \def\`#1{#1^^cc^80}\def\'#1{#1^^cc^81}\def\^#1{#1^^cc^82}}|
 % \end{decl}
 % \removelastskip\noindent
-% where the |^^cc^80|, |^^cc^81|, |^^cc^82| cause \TeX\ to generate the correct 
+% where the |^^cc^80|, |^^cc^81|, |^^cc^82| cause \TeX\ to generate the correct
 % UTF-8 bytes for `combining accent' characters.
 %
 % This works fine for metadata fields that appear just in the XMP packet.
@@ -878,22 +933,22 @@
 % |       \def\thanh{H^^c3^^a0n Th\eee Thanh}\def\eee{^^c3^^aa^^cc^^81 }}|
 % \end{decl}
 % \removelastskip\noindent
-% or the above with `\`a' typed directly as UTF-8 instead of |^^c3^^a0| 
+% or the above with `\`a' typed directly as UTF-8 instead of |^^c3^^a0|
 % and `\^e' in UTF-8 for |^^c3^^aa|.
 % The reason for this is due to the |\pdfstringdef| command, which constructs
-% the accented latin letters as single combined characters \`a and \^e, 
+% the accented latin letters as single combined characters \`a and \^e,
 % without resorting to combining accents, wherever possible.
-% If the Metadata does not have the same, irrespective of Unicode normalisation, 
+% If the Metadata does not have the same, irrespective of Unicode normalisation,
 % then validation fails.
 %
 % With version (1.5.6) of the |pdfx| package, such difficulties
-% have been overcome, at least for characters used in Western European, 
-% Latin-based languages. The input encoding used when reading the |.xmpdata| 
-% file now includes interpretations of \TeX's usual accent commands to 
+% have been overcome, at least for characters used in Western European,
+% Latin-based languages. The input encoding used when reading the |.xmpdata|
+% file now includes interpretations of \TeX's usual accent commands to
 % produce the required UTF-8 byte sequences.
 %
 % \medskip
-% Since version (1.5.8) this input encoding was extended to include 
+% Since version (1.5.8) this input encoding was extended to include
 % macro definitions covering \LaTeX's internal character representation
 % of other alphabets (e.g., extended Latin, Cyrillic, Greek, etc.).
 % However this can become memory intensive, requiring a large number of
@@ -902,12 +957,12 @@
 % be relevant. Currently these are as in Section~\ref{ssec-xmplang}.
 %
 % A significant portion of the Unicode Basic Plane characters can be covered
-% this way. Modules could even be provided for CJK character sets and 
+% this way. Modules could even be provided for CJK character sets and
 % mathematical symbols, etc. However, as this can become memory intensive,
 % significant testing will be required before these become a standard
-% part of the |pdfx| package. 
+% part of the |pdfx| package.
 %
-% 
+%
 % \subsection{Color profiles}\label{sec-profiles}
 %
 % Most standards compliant PDF documents require a \emph{color
@@ -915,13 +970,13 @@
 % determines precisely how the colors used in the document will be
 % rendered when printed to a physical medium. This can be used to
 % ensure that the document will look exactly the same, even when it is
-% printed on different printers, with different paper types, etc. 
-% The inclusion of a color profile is necessary to make the document 
+% printed on different printers, with different paper types, etc.
+% The inclusion of a color profile is necessary to make the document
 % completely self-contained.
 %
 % Since most \LaTeX\ users are not graphics professionals and are not
 % particularly picky about colors, the |pdfx| package includes default
-% profiles that will be included when nothing else is specified. 
+% profiles that will be included when nothing else is specified.
 % Therefore, the average user doesn't have to do anything
 % special about color.
 %
@@ -928,13 +983,13 @@
 % For users who have a specific color profile they wish to use, it is
 % possible to do so by including a |\setRGBcolorprofile| or
 % |\setCMYKcolorprofile| command in the |.xmpdata| file. Note that
-% PDF/A and PDF/E require a profile of type `|mnrt|' (monitor) which 
-% is usually an RGB color profile, while PDF/X and PDF/VT require type `|prtr|' 
+% PDF/A and PDF/E require a profile of type `|mnrt|' (monitor) which
+% is usually an RGB color profile, while PDF/X and PDF/VT require type `|prtr|'
 % (printer) which is usually a CMYK color profile; but valid documents
 % can be created with the correct type designed for the other color space.
-% Use the following commands to specify an RGB or CMYK color profile, 
+% Use the following commands to specify an RGB or CMYK color profile,
 % respectively:
-% 
+%
 % \begin{decl}
 % \defmacro{setRGBcolorprofile}\marg{filename}\marg{identifier}\marg{info
 % string}\marg{registry URL}
@@ -944,7 +999,7 @@
 % \end{decl}
 % Within the arguments of these macros, the characters |<|, |>|, |&|,
 % |^|, |_|, |#|, |$|, and |~| can be used as themselves, but
-% |%| must be escaped as |\%|. 
+% |%| must be escaped as |\%|.
 %
 %  From version (1.6) the default RGB and CMYK color profiles are now supplied
 %  using the |colorprofiles| package by Norbert Preining and Ross Moore~\cite{colorp}.
@@ -966,7 +1021,7 @@
 % \url{http://www.color.org/iccprofile.xalter}.
 %
 % Alternatively, color profiles are shipped with many Adobe software
-% applications; these are then available for use also with non-Adobe 
+% applications; these are then available for use also with non-Adobe
 % software. Now the |pdfx| package includes coding to streamline
 % inclusion of these profiles in PDF documents, or to specify
 % them as `external' profiles, with PDF/X-4p and PDF/X-5pg variants.
@@ -977,17 +1032,17 @@
 % Both define commands to use Color Profiles as follows.
 % \begin{decl}[]
 % \begin{tabular}{ll}
-%  \texttt{\string\FOGRAXXXIX} & Coated FOGRA39 (ISO 12647-2:2004)\\    
+%  \texttt{\string\FOGRAXXXIX} & Coated FOGRA39 (ISO 12647-2:2004)\\
 %  \texttt{\string\SWOPCGATSI} & U.S. Web Coated (SWOP) v2\\
-%  \texttt{\string\JapanColorMMICoated} & Japan Color 2001 Coated\\  
-%  \texttt{\string\JapanColorMMIUncoated} & Japan Color 2001 Uncoated\\  
-%  \texttt{\string\JapanColorMMIINewspaper} & Japan Color 2002 Newspaper\\  
-%  \texttt{\string\JapanWebCoatedAd} & Japan Web Coated (Ad)\\ 
-%  \texttt{\string\CoatedGRACoL} & Coated GRACoL 2006 (ISO 12647-2:2004)\\    
+%  \texttt{\string\JapanColorMMICoated} & Japan Color 2001 Coated\\
+%  \texttt{\string\JapanColorMMIUncoated} & Japan Color 2001 Uncoated\\
+%  \texttt{\string\JapanColorMMIINewspaper} & Japan Color 2002 Newspaper\\
+%  \texttt{\string\JapanWebCoatedAd} & Japan Web Coated (Ad)\\
+%  \texttt{\string\CoatedGRACoL} & Coated GRACoL 2006 (ISO 12647-2:2004)\\
 %  \texttt{\string\SNAPCGATSII} & CGATS TR 002\\
 %  \texttt{\string\SWOPCGATSIII} & CGATS TR 003\\
 %  \texttt{\string\SWOPCGATSV} & CGATS TR 005\\
-%  \texttt{\string\ISOWebCoated} & Web Coated FOGRA28 (ISO 12647-2:2004)\\ 
+%  \texttt{\string\ISOWebCoated} & Web Coated FOGRA28 (ISO 12647-2:2004)\\
 %  \texttt{\string\ISOCoatedECI} & ISO Coated v2 (ECI)\\
 %  \texttt{\string\CoatedFOGRA} & Coated FOGRA27 (ISO 12647-2:2004)\\
 %  \texttt{\string\WebCoatedFOGRA} & Web Coated FOGRA28 (ISO 12647-2:2004)\\
@@ -999,18 +1054,18 @@
 % As of the time of first compiling this list, only the first six of these result in PDFs
 % which can validate with external profiles (i.e., for PDF/X-4p and PDF/X-5pg)
 % using the then-current versions of Adobe Acrobat Pro software. It is unclear
-% whether the others (incl.\,\verb|\IFRAXXVI| and \verb|\IFRAXXX|) failed due 
-% to incorrect data or problems in the validation software. 
+% whether the others (incl.\,\verb|\IFRAXXVI| and \verb|\IFRAXXX|) failed due
+% to incorrect data or problems in the validation software.
 % Since then, with updates to Acrobat Pro, almost all the others have been verified
 % to work, except \verb|\IFRAXXX| which seems no longer available.
-% Thus these commands come with a `use at own risk' clause. 
+% Thus these commands come with a `use at own risk' clause.
 %
-% For `external' profiles, there is a command |\setEXTERNALprofile|, taking 9 arguments, 
+% For `external' profiles, there is a command |\setEXTERNALprofile|, taking 9 arguments,
 % that must be used. Consult |AdobeExternalProfiles.tex| for examples of its use.
-% 
-% All but the last of the macros listed above can also be used for valid embedded profiles, 
-% providing the corresponding files can be found. 
-% The following macros are used to set the (absolute or relative) path, 
+%
+% All but the last of the macros listed above can also be used for valid embedded profiles,
+% providing the corresponding files can be found.
+% The following macros are used to set the (absolute or relative) path,
 % on the local operating system, to the location of color profile files.
 % \begin{decl}
 %  \defmacro{pdfxSetRGBcolorProfileDir}\marg{path to RGB color profiles}\\
@@ -1020,7 +1075,7 @@
 %  One can use either a macro |\MacOSColordir| which expands
 %  into the path for system-provided profiles:
 % \begin{decl}[]
-% |/System/Library/ColorSync/Profiles/|  
+% |/System/Library/ColorSync/Profiles/|
 % \end{decl}
 % or the macro |\MacOSLibraryColordir| expanding to:
 % \begin{decl}[]
@@ -1030,23 +1085,23 @@
 % \begin{decl}[]
 % |/Library/Application Support/Adobe/Color/Profiles/Recommended/|
 % \end{decl}
-% Under Windows an available macro is |\WindowsColordir| which expands to: 
+% Under Windows an available macro is |\WindowsColordir| which expands to:
 % \begin{decl}[]
 % |C:\Windows\System32\Spool\Drivers\Color/|
 % \end{decl}
 % being the common location for color profiles.
-% Use these within the \verb|.xmpdata| file as, e.g., 
+% Use these within the \verb|.xmpdata| file as, e.g.,
 % \begin{decl}[]
 %  |\pdfxSetCMYKcolorProfileDir{\AdobeMacOSdir}|
 % \end{decl}
 % Authors may change the paths to suit their own circumstances, either
-% \emph{before} loading |pdfx.sty| or within the \verb|.xmpdata| file. 
+% \emph{before} loading |pdfx.sty| or within the \verb|.xmpdata| file.
 %
 % PDF/A and PDF/E usually need an RGB profile, while PDF/X and PDF/VT
-% require a CMYK profile. It is possible to use a CMYK profile with PDF/A 
+% require a CMYK profile. It is possible to use a CMYK profile with PDF/A
 % or PDF/E by specifying |\setRGBcolorprofile{}{}{}{}| in the \verb|.xmpdata| file.
 % Beware however, that with PDF/A any coloured hyperlink annotations can
-% cause a validation problem, as these are interpreted as RGB colours 
+% cause a validation problem, as these are interpreted as RGB colours
 % even when 4 components are given. This may be a bug in validators,
 % as PDF specifies that the number of components should match the color space.
 %
@@ -1070,37 +1125,37 @@
 % \end{decl}
 %  which uses a profile that accompanies the \texttt{pdfaPilot} software from
 %  Callas Software Gmbh~\cite{pdfaPilot}.
-%  The macro |\CallasMacOSpdfaPilotdir|, defined in the file \texttt{CallasColorProfiles.tex}, 
+%  The macro |\CallasMacOSpdfaPilotdir|, defined in the file \texttt{CallasColorProfiles.tex},
 %  specifies the directory where this Custom profile is located, when installed under MacOS.
 %  One needs to |\input CallasColorProfiles.tex| \emph{before} loading the |pdfx| package.
-%  Macros for other directories are also defined in this file. 
+%  Macros for other directories are also defined in this file.
 %
 % \subsection{Notes on the internal representation of metadata}
-%                    
+% 
 % Within the PDF file, metadata is deposited in two places: some data
 % goes into the native PDF |/Info| dictionary, and some data goes into
 % an XMP packet stored separately within the file. XMP is Adobe's
-% Extensible Metadata Platform~\cite{XMP-spec,XMP-ISO}, and is an XML-based format. 
+% Extensible Metadata Platform~\cite{XMP-spec,XMP-ISO}, and is an XML-based format.
 % See \href{http://www.adobe.com/devnet/xmp/}{Adobe XMP Development Center}
-% for more exhaustive information about XMP.  
+% for more exhaustive information about XMP.
 % An XMP Toolkit SDK which supports the GNU/Linux, Macintosh and Windows operating
 % systems is also available under modified BSD licence.
 %
 % Some of the metadata, such as the author, title, and keywords, can be
-% stored \emph{both} in the XMP packet and in the |/Info| dictionary. 
-% For the resulting file to be standards-compliant, the two copies of the data 
+% stored \emph{both} in the XMP packet and in the |/Info| dictionary.
+% For the resulting file to be standards-compliant, the two copies of the data
 % must be identical. This is taken care of automatically by the |pdfx| package,
 % except when |\sep| is used to handle multiple entries, as discussed above
-% in \S\ref{sssec-info}. In such cases the string is not included within the |/Info| 
+% in \S\ref{sssec-info}. In such cases the string is not included within the |/Info|
 % dictionary. Note that this is in accordance with the PDF 2.0 specification~\cite{PDF20},
 % which deprecates use of the |/Info| dictionary for such metadata.
-% 
-% In principle, users can resort to alternate ways to create an XMP file 
-% for inclusion in PDF. In this case, one should create a customised template 
+%
+% In principle, users can resort to alternate ways to create an XMP file
+% for inclusion in PDF. In this case, one should create a customised template
 % file |pdfa.xmp| or |pdfx.xmp| or |pdfe.xmp| (etc., depending on the PDF flavor)
-% containing the pre-defined data. This can be done by modifying the ones supplied 
-% with the |pdfx| package. However, this is an error-prone process and is 
-% \emph{not} recommended for most users. 
+% containing the pre-defined data. This can be done by modifying the ones supplied
+% with the |pdfx| package. However, this is an error-prone process and is
+% \emph{not} recommended for most users.
 % If there is a particular field of metadata that you need and that is not currently
 % supported, please contact the package authors.
 %
@@ -1107,7 +1162,7 @@
 % |pdfx| makes use of the |xmpincl| package to include XMP data into
 % the PDF.  The documentation of |xmpincl| package may help interested
 % users to understand the process of XMP data inclusion.
-% 
+%
 % \subsection{Tutorials and technical notes}
 %
 % A tutorial with step-by-step instructions for generating PDF/A files
@@ -1120,8 +1175,8 @@
 % \url{http://support.river-valley.com/wiki/index.php?title=Generating_PDF/A_compliant_PDFs_from_pdftex}.
 %  Be aware that this is based on use of an earlier version of the |pdfx| package,
 %  so some of the advice may have been superseded.
-% 
 %
+%
 % \section[Installing]{Installing}
 % The |pdfx.dtx| package is available on CTAN as usual, via
 %  \url{http://ctan.org/pkg/pdfx}. It is also included in
@@ -1131,24 +1186,24 @@
 % For those wishing to do a manual installation, here are some notes.
 % The file |pdfx.dtx| is a composite document of program code and
 % documentation in \LaTeX{} format, in the tradition of \emph{literate
-% programming}. After having installed the package, 
+% programming}. After having installed the package,
 % to get the documentation that you are reading now,
-% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|. 
+% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|.
 % The resulting PDF should be valid as PDF/A-2u.
 % Or better, use the included |Makefile|, which will also regenerate the index.
 %
 % To install the package, first extract the program code; i.e., the
-% file |pdfx.sty|, by running \LaTeX{} or \TeX{} on the file |pdfx.ins|. 
+% file |pdfx.sty|, by running \LaTeX{} or \TeX{} on the file |pdfx.ins|.
 % Create a directory named |pdfx| under |$TEXMF/tex/latex| and copy the files
-%  |pdfx.sty|, |8bit.def|, |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| as well 
+%  |pdfx.sty|, |8bit.def|, |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| as well
 % as the other |*.tex|, |l8u*-penc.def| and |*.xmp| files, into it. Then update
 % \TeX's file database using the appropriate command for your distribution
 % and operating system (such as |texhash| or |mktexlsr|, or similar).
-% 
+%
 % \subsection{Limitations and dependencies}
-% 
-% The |pdfx.sty| package works with \pdftex\ and also Lua\TeX\ and Xe\TeX\ 
-% with some minor limitations.  
+%
+% The |pdfx.sty| package works with \pdftex\ and also Lua\TeX\ and Xe\TeX\
+% with some minor limitations.
 % It further depends on the following other packages.
 % \begin{enumerate}
 %  \item |xmpincl|  for insertion of metadata into PDF.
@@ -1159,28 +1214,28 @@
 %   hyperlinking, bookmarks, etc.
 %  \item |xcolor| for ensuring consistent use of the color model
 %    appropriate the PDF variant, within text and hyperlinks (when allowed).
-%  \item |glyphtounicode.tex| (not Xe\LaTeX) maps glyph names 
+%  \item |glyphtounicode.tex| (not Xe\LaTeX) maps glyph names
 %   to corresponding Unicode code-points.
 %  \item |ifluatex|  allowing coding specific to Lua\LaTeX.
 %  \item |ifxetex|  allowing coding specific to Xe\LaTeX.
-%  \item |luatex85| or |pdftexcmds| (Lua\TeX\ only) for access 
+%  \item |luatex85| or |pdftexcmds| (Lua\TeX\ only) for access
 %   to primitive commands using \pdftex\ macro names.
-%  \item |stringenc| used to help generate proper bookmarks with transliterated input; 
+%  \item |stringenc| used to help generate proper bookmarks with transliterated input;
 %    e.g., with |\textLGR| or |\textARM| --- see Section~\ref{sssec-arm}.
 % \end{enumerate}
 % Other files and packages are loaded as sub-packages or as
-% configuration files for these. Since some of these packages 
-% may be loaded by existing documents we provide here advice on 
+% configuration files for these. Since some of these packages
+% may be loaded by existing documents we provide here advice on
 % how to deal with potential loading and option conflicts.
 %
 % Firstly, it is best if |pdfx| is the first package loaded; e.g.,
-% directly after the |\documentclass| line. This is not a strict requirement, 
+% directly after the |\documentclass| line. This is not a strict requirement,
 % but it is worthwhile to deal with the metadata at the top of your \LaTeX\ source,
 % allowing correct options to be loaded to cope with validation aspects.
 %
 % Secondly, replace |\usepackage[<options>]{hyperref}| with |\hypersetup{<options>}|.
-% This deals with most loading issues with the |hyperref| package. 
-% Note that PDF/X is a format intended for printing. 
+% This deals with most loading issues with the |hyperref| package.
+% Note that PDF/X is a format intended for printing.
 % It forbids inclusion of hyperlinks and other actions, including via bookmarks.
 % To produce a validating PDF/X document, |pdfx| overrides internal macros
 % while keeping colors associated with link anchors.
@@ -1191,23 +1246,23 @@
 % Furthermore, options to set metadata components (such as |pdfauthor|,
 % |pdftitle|, |pdfsubject|, |pdfkeywords|, etc.) are disabled, since
 % |pdfx| has already taken care of this information.
-% 
+%
 % Thirdly, conflicts with other packages may be dealt with by simply
 % changing |\usepackage| to |\RequirePackage| within the document's
-% preamble. But this may not be possible when the |\usepackage| 
+% preamble. But this may not be possible when the |\usepackage|
 % or |\RequirePackage| command occurs within another package, or with
-% a specific set of options, thereby causing processing to stop. 
-% Few packages have a command analogous to |\hypersetup|. 
+% a specific set of options, thereby causing processing to stop.
+% Few packages have a command analogous to |\hypersetup|.
 % Instead |\PassOptionsToPackage{<options>}{<package>}| can help.
 % For |<options>| specify the ones associated with the loading yet to come.
 % This can give a smooth processing run, but you'll need to check whether
 % the results from those options have actually taken effect.
-% Some examples of this can be seen later, in Figures~\ref{koi8-code} 
+% Some examples of this can be seen later, in Figures~\ref{koi8-code}
 % and \ref{tldoc-pol}.
 %
 % \subsubsection{Limitations using Xe\LaTeX}\label{sssec-xetex}
 %
-% To process a file using Xe\LaTeX, to produce a document that can 
+% To process a file using Xe\LaTeX, to produce a document that can
 % validate to a particular PDF standard, one need to use a command
 % to run the \TeX\ engine, as follows.
 % \begin{decl}[]
@@ -1214,23 +1269,23 @@
 %   |xelatex -shell-escape -output-driver="xdvipdfmx -z 0" <filename>.tex |
 % \end{decl}
 % The |-shell-escape| option allows a command-line task to be run,
-% which writes the creation-date \& time of the running job into 
-% a small file on disk. This data, written in a specific format, is then 
+% which writes the creation-date \& time of the running job into
+% a small file on disk. This data, written in a specific format, is then
 % read by the job for inclusion into several metadata fields.
 % This emulates the result of \pdftex's |\pdfcreationdate| primitive.
 % As there are security implications in allowing arbitrary commands to be run,
-% this need for |-shell-escape| must be viewed as imposing a limitation on the 
+% this need for |-shell-escape| must be viewed as imposing a limitation on the
 % work-flows in which this can be safely used.
 %
-% The |-output-driver="xdvipdfmx -z 0"| suppresses compression, which 
+% The |-output-driver="xdvipdfmx -z 0"| suppresses compression, which
 %  is not allowed for the XMP metadata packet. Without this, the resulting PDF
-%  may fail to pass validation tests. 
+%  may fail to pass validation tests.
 %
 % Xe\TeX\ is designed for processing UTF-8 input only. When presented
-% with \LaTeX\ source using a legacy encoding, such as |latin2| or |koi8-r|, 
-% the input is accepted and a PDF produced. Yet there will be garbage 
+% with \LaTeX\ source using a legacy encoding, such as |latin2| or |koi8-r|,
+% the input is accepted and a PDF produced. Yet there will be garbage
 % characters corresponding to each character entered from the upper range
-% (128--255). This is evident in the PDF content and bookmarks; 
+% (128--255). This is evident in the PDF content and bookmarks;
 % yet |pdfx| produces the correct XMP metadata packet.
 % So while the techniques explained later in Section~\ref{ssec-multi} are
 % valid, the PDF itself does not contain correct content.
@@ -1237,7 +1292,7 @@
 %
 % Not all fonts, in particular Open-Type fonts (OTF), naturally come with
 % mappings of the glyphs to Unicode code points. This is a requirement
-% with PDF/A, PDF/E and PDF/UA standards. 
+% with PDF/A, PDF/E and PDF/UA standards.
 % Use of such fonts can result in validation errors, such as:
 % \begin{itemize}
 % \item
@@ -1245,7 +1300,7 @@
 % \item
 %  Type 2 CID font: CIDToGID map is invalid or missing.
 % \end{itemize}
-% 
+%
 % If one has access to Adobe's |Acrobat Pro| software, then its |Preflight|
 % utility can rewrite the uncompressed output from Xe\LaTeX\ into a valid
 % PDF standard, using compression of the contents but not of the XMP packet.
@@ -1256,7 +1311,7 @@
 %
 % Lua\LaTeX\ can handle the OTF font issues mentioned for Xe\LaTeX,
 % so can produce valid PDF/A documents where Xe\LaTeX\ fails.
-% However, since Lua\TeX\ expects all input source to be UTF8-encoded,  
+% However, since Lua\TeX\ expects all input source to be UTF8-encoded,
 % it cannot work at all with documents using older legacy encodings.
 % Instead one gets error messages such as:
 %\begin{decl}
@@ -1299,15 +1354,15 @@
 % \item |l8uheb-penc.def| --- input macro declarations for Hebrew alphabet.
 % \item |l8ulat-penc.def| --- input macro declarations for Latin 1--9 encodings.
 % \item |l8umath-penc.def| --- input macro declarations for mathematical symbols.
-% \item |glyphtounicode-cmr.tex|,  |glyphtounicode-ntx.tex| --- maps glyph names 
+% \item |glyphtounicode-cmr.tex|,  |glyphtounicode-ntx.tex| --- maps glyph names
 %  to corresponding Unicode for Computer Modern and other \TeX-specific fonts.
 % \item |AdobeColorProfiles.tex| --- macros for inclusion of Adobe-supplied color profiles.
 % \item |AdobeExternalProfiles.tex| --- macros for use of external color profiles.
 % \item |CallasColorProfiles.tex| --- macros for profiles included with Callas pdfaPilot software.
 % \end{itemize}
-% 
+%
 % \subsubsection{Documentation \& Examples}
-% 
+%
 % \begin{itemize}
 % \item |README| --- usual top-level information.
 % \item |manifest.txt| --- file list.
@@ -1315,9 +1370,9 @@
 % \item |sample.tex|, |sample.xmpdata| --- a sample file with sample metadata.
 % \item |small2e-pdfx.tex| --- sample file with included metadata.
 % \end{itemize}
-% 
+%
 % \subsubsection{Sources}
-% 
+%
 % \begin{itemize}
 % \item |src/pdfx.dtx| --- composite package and documentation.
 % \item |src/pdfx.ins| --- installer batch file.
@@ -1326,10 +1381,10 @@
 % \item |src/Makefile| --- a Makefile for building the documentation.
 % \item |src/MANIFEST| --- list of files in this directory.
 % \item |src/text89.def| --- used with Figure\,\ref{ex-arm} in the documentation.
-% \item |src/{arm-start,koi8-example,koi8-example2,latin2-example}.tex| 
+% \item |src/{arm-start,koi8-example,koi8-example2,latin2-example}.tex|
 %   --- used in the documentation with figures showing example coding.
 % \item |src/{TL-POL-meta,TL-RU-LICRs,TL-RU-metadata,TL-RU-toc,Armenian-example-UTF8,|\\
-% |armtex-meta,usage-meta,math-assign5}.png| --- screenshot images showing multilingual 
+% |armtex-meta,usage-meta,math-assign5}.png| --- screenshot images showing multilingual
 %  and other metadata.
 % \end{itemize}
 %
@@ -1337,9 +1392,9 @@
 %
 % The package is released under the \LaTeX{} Project Public
 % Licence. Bug reports, suggestions, feature requests, etc., may be
-% sent to the original authors at 
+% sent to the original authors at
 % \href{mailto:cvr at river-valley.org}{\ttfamily cvr at river-valley.org}
-% and/or 
+% and/or
 % \href{mailto:thanh at river-valley.org}{\ttfamily thanh at river-valley.org},
 % or to the more recent contributors at
 % \href{mailto:ross.moore at mq.edu.au}{\ttfamily ross.moore at mq.edu.au}
@@ -1348,9 +1403,9 @@
 %
 %
 % \section[Multilingual and Technical Considerations]{Multilingual and Technical Considerations}\label{sec-meta}
-% 
-% \TeX\ and \LaTeX\ have an on-going practice of including metadata within 
-% the source files and package documentation. Usually this is done as comments 
+%
+% \TeX\ and \LaTeX\ have an on-going practice of including metadata within
+% the source files and package documentation. Usually this is done as comments
 % at the beginning of the file; such as the following from the English
 % language version of the 2015 \TeX\ Live documentation\footnote{%
 % found at |/usr/local/texlive/2016/texmf-dist/doc/texlive/texlive-en/|.}.
@@ -1360,10 +1415,10 @@
 % |Michel Goossens, now maintained by Karl Berry and others.|\\
 % |Public domain.|
 % \end{decl}
-% This provides information, ideally suited for copyright metadata 
-% fields, as in Section~\ref{sssec-copy}, as well as for |\Subject| 
-% and |\CoverDate| from Section~\ref{sssec-publ}. 
-% 
+% This provides information, ideally suited for copyright metadata
+% fields, as in Section~\ref{sssec-copy}, as well as for |\Subject|
+% and |\CoverDate| from Section~\ref{sssec-publ}.
+%
 % Also near the top of the file one finds front-matter content
 % \begin{decl}[]
 % |\title{%|\\
@@ -1374,7 +1429,7 @@
 % |      }|\\
 % |\date{May 2015}|
 % \end{decl}
-% which supplies metadata information for the commands |\Title|, |\Author|, 
+% which supplies metadata information for the commands |\Title|, |\Author|,
 % |\CoverDisplayDate| also from Section~\ref{sssec-publ}, and |\CopyrightURL|.
 %
 % Most of the hundreds of thousands, if not millions of documents prepared
@@ -1384,14 +1439,14 @@
 % requirement, for PDFs to satisfy a standard that requires inclusion
 % of metadata. This is especially so for government agencies and institutions
 % receiving government funding, in several countries around the world.
-% 
+%
 % It is an aim of the |pdfx| to simplify the process of capturing and
-% including metadata within \LaTeX-produced PDFs, from both the author's 
-% view and that of archivists. The extra features introduced with version 
-% 1.5.8 take a large step in that direction. 
+% including metadata within \LaTeX-produced PDFs, from both the author's
+% view and that of archivists. The extra features introduced with version
+% 1.5.8 take a large step in that direction.
 % This includes the ability, described in the next subsection, to reliably
 % include data presented in different text encodings, rather than being
-% restricted to UTF-8 only. It is a role of the software to make the 
+% restricted to UTF-8 only. It is a role of the software to make the
 % conversion, rather than rely on some 3rd party for a translation.
 %
 %
@@ -1400,40 +1455,40 @@
 % A cursory search of the documentation (|.../texmf-dist/doc|) subtree
 % of the forthcoming \TeX\,Live 2016 release reveals more than 730 different
 % |.tex| or |.dtx| document sources which specify an input encoding,
-% via the |\usepackage[...]{inputenc}| command. Roughly 380 (a bit more 
-% than half) declare UTF-8 as the input encoding. 
-% Of the remainder there are $\approx 20$ other encodings specified, 
-% covering a range of languages for at least part of their content. 
+% via the |\usepackage[...]{inputenc}| command. Roughly 380 (a bit more
+% than half) declare UTF-8 as the input encoding.
+% Of the remainder there are $\approx 20$ other encodings specified,
+% covering a range of languages for at least part of their content.
 % At some point in time, these documents may be required to have accurate
-% accompanying metadata, as part of conformance to a designated PDF 
-% (or other) standard. There are libraries and archives that already must 
+% accompanying metadata, as part of conformance to a designated PDF
+% (or other) standard. There are libraries and archives that already must
 % meet such standards.
 %
-% We have shown above, in Section~\ref{ssec-metadata}, how the |.xmpdata| 
-% file can be inserted into the document source, which then ensures that 
+% We have shown above, in Section~\ref{ssec-metadata}, how the |.xmpdata|
+% file can be inserted into the document source, which then ensures that
 % metadata is reliably transferred along with the source itself.
 % This seems a good strategy, but are there any problems with it,
 % especially in a multi-lingual context?
-% 
-% Modern editing software can require an encoding to be associated 
-% with each file. This is what allows the correct characters to be shown, 
-% from what is otherwise just a sequence of 8-bit bytes. The flip-side 
-% is that arbitrary editing is not permitted. Add some UTF-8 data into 
-% a file that is encoded as Latin-2 then try to save it. You may be asked 
+%
+% Modern editing software can require an encoding to be associated
+% with each file. This is what allows the correct characters to be shown,
+% from what is otherwise just a sequence of 8-bit bytes. The flip-side
+% is that arbitrary editing is not permitted. Add some UTF-8 data into
+% a file that is encoded as Latin-2 then try to save it. You may be asked
 % to specify a new encoding, or the application may even crash out entirely.
-% Maybe this happens \emph{accidentally}. It is not hard for a curly quote 
-% (`) or endash (--) to be included; many editors have settings which can 
+% Maybe this happens \emph{accidentally}. It is not hard for a curly quote
+% (`) or endash (--) to be included; many editors have settings which can
 % do this with normal ascii input. Turn \emph{off} such settings.
 %
 % The approach that we advocate is that when editing to add metadata,
-% best is to: 
+% best is to:
 % \begin{enumerate}
-% \item 
-%  use the \emph{same encoding} as is specified for the file itself, 
+% \item
+%  use the \emph{same encoding} as is specified for the file itself,
 %  if known (as is usually the case);
-% \item 
-%  even if 1. is not possible, use Copy/Paste \emph{within} the document source 
-%  (e.g., for authors' names, addresses, affiliations, etc.) and from comments, 
+% \item
+%  even if 1. is not possible, use Copy/Paste \emph{within} the document source
+%  (e.g., for authors' names, addresses, affiliations, etc.) and from comments,
 %  as in Section~\ref{sec-meta} above;
 % \item
 %  avoid typing new characters, especially quotes and dashes, and be extra
@@ -1470,7 +1525,7 @@
 % as could be produced for the Russian language version of the \TeX\ Live documentation,
 % from coding as shown in Figure\,\ref{koi8-code}.
 % The source file itself is actually encoded for KOI8-R, as indicated by the presence
-% of the code line |\usepackage[koi8-r]{inputenc}|, 
+% of the code line |\usepackage[koi8-r]{inputenc}|,
 % but is deliberately shown here encoded as |T1|~\cite[p.\,449]{LC2}.
 % This difference is immaterial for checking the validity of the metadata.
 % For example, the stream of upper (accents, etc.) characters within
@@ -1480,17 +1535,17 @@
 % in the document, and from early subsection titles.
 %
 % It is the `parser' command/macro |\textKOI{ ... }| that indicates that the upper range
-% characters (having byte codes 128--255) are to be treated as KOI8-R characters, 
+% characters (having byte codes 128--255) are to be treated as KOI8-R characters,
 % rather than as part of UTF-8 byte sequences. It works by examining each byte in sequence,
-% and returning the appropriate UTF-8 2-byte sequence for the required cyrillic character. 
-% This happens during the processing of data from |\jobname.xmpdata| for fleshing-out 
+% and returning the appropriate UTF-8 2-byte sequence for the required cyrillic character.
+% This happens during the processing of data from |\jobname.xmpdata| for fleshing-out
 % the XMP metadata packet to be included within the final PDF/A document.
 %
 % The `parser' macros defined for various encodings, are given in Figure\,\ref{parsers}.
-% In Section\,\ref{ssec-xmplang} the package options are given 
+% In Section\,\ref{ssec-xmplang} the package options are given
 % for loading the appropriate support for desired languages or alphabets.
 % Support for other encodings can be added, if there proves to be a need.
-% 
+%
 %\begin{figure}[ht]
 % \centering
 % \begin{tabular}{lll}\hline
@@ -1519,13 +1574,13 @@
 % \caption{How to see LICRs in the \texttt{.log} window.}\label{koi8-LICR}
 % \end{figure}
 %
-% With encoded characters marked in this way with a `parser' macro, 
+% With encoded characters marked in this way with a `parser' macro,
 % it is actually possible to mix UTF-8 metadata with other bytes;
 % provided, of course, you have an editor that allows such a file
 % to be created and saved. On the other hand, if you are unhappy with mixing
 % content having different encodings, then there is another way, based upon
-% \LaTeX's LICR macros~\cite[\S\,7.11]{LC2} for representing accented 
-% and non-latin characters. 
+% \LaTeX's LICR macros~\cite[\S\,7.11]{LC2} for representing accented
+% and non-latin characters.
 % These are normally hidden away (`I $=$ Internal') but in fact can be seen
 % within auxiliary files, such as |.aux| and |.toc|, |.lof| and |.lot|.
 % This is how \LaTeX\ stores the knowledge of such characters for use in
@@ -1548,20 +1603,20 @@
 % \caption{How to get desired LICRs into the \texttt{.toc} file.}\label{koi8-toc}
 % \end{figure}
 %
-% Figure~\ref{koi8-LICR} shows how to see this. 
+% Figure~\ref{koi8-LICR} shows how to see this.
 % The document source in the lower portion clearly shows the cyrillic
 % input, whereas the |.log| messages in a command-line window above
 % reveal the LICR representation. A command |\showLICRs| is available
 % with |pdfx.sty| version 1.5.8, specifically to allow this.
-% Now the LICR representation can be copied directly from the |.log| file, 
+% Now the LICR representation can be copied directly from the |.log| file,
 % modulo slight difficulties due to the way long lines are broken.
 % As this representation is entirely with ASCII characters, it should not
 % cause any conflict with any UTF-8 metadata that you want within the same file.
 % The |.xmpdata| file might now look as in Figure~\ref{koi8-code2}.
 % Although very verbose, this should be resistant to any corruption due to
-% character encodings, and produces the same result within the PDF, 
+% character encodings, and produces the same result within the PDF,
 % as in Figure~\ref{koi8-meta}.
-% 
+%
 % Alternatively one can exploit the |.toc| file, using \LaTeX's command
 % |\addtocontents|, as shown in Figure~\ref{koi8-toc}.
 % After processing the file, you can copy the LICR representations out
@@ -1570,24 +1625,24 @@
 %
 % Of course once you have harvested the metadata in this format, remove
 % or comment-out those extra |\showLICRs| to get uninterrupted processing.
-% Similarly comment-out the extra |\addtocontents| lines, else the real 
+% Similarly comment-out the extra |\addtocontents| lines, else the real
 % Table-of-Contents will become corrupted with unwanted entries.
 % A couple more \LaTeX\ processing runs should restore the PDF to the
 % way you want it.
 %
 % \subsubsection[Metadata with Polish]{Metadata with Polish}\label{sssec-pol}
-% 
-% The next example has upper-range bytes intended to represent Latin-2 encoded 
-% characters, as used in Polish. 
-% With the \LaTeX\ source starting as in Figure~\ref{tldoc-pol}, 
+%
+% The next example has upper-range bytes intended to represent Latin-2 encoded
+% characters, as used in Polish.
+% With the \LaTeX\ source starting as in Figure~\ref{tldoc-pol},
 % the resulting metadata is shown in Figure~\ref{tlmeta-pol}.
-% 
+%
 %\begin{figure}[htb]
 % \centering
 % \includegraphics[scale=.45]{TL-POL-meta}
 %\caption{Metadata generated from the coding shown in Figure~\ref{tldoc-pol}
-% for the Polish version of \TeX\ Live 2015 documentation, showing Latin-2 encoded 
-% characters. The document is valid for PDF/A-2, after having been processed with 
+% for the Polish version of \TeX\ Live 2015 documentation, showing Latin-2 encoded
+% characters. The document is valid for PDF/A-2, after having been processed with
 % pdf-\LaTeX.}\label{tlmeta-pol}
 %\end{figure}
 %
@@ -1597,13 +1652,13 @@
 % \input{latin2-example}
 %\end{decl}
 % }%
-%\caption{Start of the \LaTeX\ source for the Polish version of \TeX\ Live 
-% documentation. Although Latin-2 encoded, the bytes are shown here using 
+%\caption{Start of the \LaTeX\ source for the Polish version of \TeX\ Live
+% documentation. Although Latin-2 encoded, the bytes are shown here using
 % \LaTeX's \texttt{T1} encoding \cite[p.\,449]{LC2}.}\label{tldoc-pol}
 %\end{figure}
 %
 % Here the `parser macro' is |\textLII|, which can be seen in Figure~\ref{tldoc-pol}
-% to surround either complete metadata entries, or just those parts containing 
+% to surround either complete metadata entries, or just those parts containing
 % polish accented (or other) characters in entries that also contain english words.
 % The macro |\textLF| provides a line-feed character for the UTF-8 output.
 %
@@ -1619,31 +1674,31 @@
 % Let's understand better how this example was created. There are three files involved.
 %\begin{itemize}
 % \item |pdfx.dtx|, the source for this documentation, open in an editor with
-% encoding declared as UTF-8; 
+% encoding declared as UTF-8;
 % \item |texlive-pl.tex| the Polish documentation for \TeX\ Live, open in the
 % same editor with Latin-2 encoding;
 % \item |latin2-example.tex| which starts life as an empty file on disk.
 %\end{itemize}
 % \noindent
-% This latter file must be opened in the editor, with encoding declared as 
+% This latter file must be opened in the editor, with encoding declared as
 % Latin-2 (ISO-8859-2).
 % Next the preamble is copied from |texlive-pl.tex| and pasted into |latin2-example.tex|
 % which is then saved to disk. Further editing is done to |latin2-example.tex| to
 % add verbatim markers (\texttt{$\vert$...$\vert$}) and adjust line lengths for display
-% within Figure~\ref{tldoc-pol}. This file's contents is included as part of the 
-% documentation via |\input{latin2-example}| within an environment that handles 
+% within Figure~\ref{tldoc-pol}. This file's contents is included as part of the
+% documentation via |\input{latin2-example}| within an environment that handles
 % presentation aspects, and (since 2018) declares |\UseRawInputEncoding|.
 %
 % What \emph{cannot} be done is to paste the preamble content directly into |pdfx.dtx|.
-% Consider what would then happen, using `t{\l}umaczy' (`translators', on line 10 
-% following `UWAGA'). This word shows correctly in the Latin-2 encoded files. 
-% It was typeset here using |\l| for the `\l' letter, having Unicode code-point 
-% |Ux0142| (so UTF-8 byte pair |"C5|\,|"82|). 
-% However, it occurs at slot |"B3| within Latin-2 encoding. 
-% In the |T1| font encoding \cite[p.\,449]{LC2} the character glyph name 
-% for slot |"B3| is |/scedilla|, which is what shows in Figure~\ref{tldoc-pol}. 
-% When the `\l' is pasted directly into a UTF-8 file and shown verbatim, 
-% the result is the pair of glyphs |"C5| (|/Aring|) and |"82| (|/Cacute|); 
+% Consider what would then happen, using `t{\l}umaczy' (`translators', on line 10
+% following `UWAGA'). This word shows correctly in the Latin-2 encoded files.
+% It was typeset here using |\l| for the `\l' letter, having Unicode code-point
+% |Ux0142| (so UTF-8 byte pair |"C5|\,|"82|).
+% However, it occurs at slot |"B3| within Latin-2 encoding.
+% In the |T1| font encoding \cite[p.\,449]{LC2} the character glyph name
+% for slot |"B3| is |/scedilla|, which is what shows in Figure~\ref{tldoc-pol}.
+% When the `\l' is pasted directly into a UTF-8 file and shown verbatim,
+% the result is the pair of glyphs |"C5| (|/Aring|) and |"82| (|/Cacute|);
 % \emph{viz.} {\UseRawInputEncoding |tłumaczy|}.
 %
 % As with Figure~\ref{koi8-code} it is not important that the correct characters
@@ -1650,8 +1705,8 @@
 % are shown here, but that the metadata in |\jobname.xmpdata| corresponds to what
 % is used on the titlepage of the PDF; e.g., the contents of |\Title| and |\title|,
 % |\Author| and |\author|, etc.
-% 
 %
+%
 % \subsubsection[Metadata with Greek]{Metadata with Greek}\label{sssec-grk}
 %
 %\begin{figure}[!hb]
@@ -1674,7 +1729,7 @@
 %|% ... |\\
 %| |\\
 %|\providecommand{\pdfxopts}{a-2u,LGRxmp,LATxmp}|\\
-%|\begin{filecontents*}{\jobname.xmpdata}|\\
+%|\begin{filecontents}[force]{\jobname.xmpdata}|\\
 %|\Title{Writing Greek with the "greek" option of the "babel" package}|\\
 %{\color{verbcolor}\texttt{\string\Author\{Apostolos Syropoulos\string\sep\ G\"unter Milde\}}}\\
 %|\Subject{This document describes the use of the Latin transliteration for Greek that is |\\
@@ -1690,11 +1745,11 @@
 %|  \textaristerikeraia\textAlpha\textSampi\textQoppa\textZeta\textdexiakeraia}}|\\
 %|\CoverDate{1997-10-15}|\\
 %|\CoverDisplayDate{October 15, 1997}|\\
-%|\Copyright{This file is part of the Babel system.\textLF This file may be distributed and/or|\\ 
+%|\Copyright{This file is part of the Babel system.\textLF This file may be distributed and/or|\\
 %| modified under the conditions of the LaTeX Project Public License, either version 1.3 |\\
 %| of this license or (at your option) any later version.}|\\
 %|\CopyrightURL{http://www.latex-project.org/lppl.txt}|\\
-%|\end{filecontents*}|\\
+%|\end{filecontents}|\\
 %|%|\\
 %|\documentclass[11pt]{article}|\\
 %|\usepackage[\pdfxopts]{pdfx}[2016/04/13]|\\
@@ -1725,36 +1780,36 @@
 %
 % Prior to proper support for UTF-8 input, a method for preparing document source
 % for the modern Greek language (and also for polytonic Greek), involved the use
-% of LGR encoded fonts. Such a font has Greek (instead of Latin) letters in the 
+% of LGR encoded fonts. Such a font has Greek (instead of Latin) letters in the
 % slots for |a-zA-Z|, see~\cite[\S9.4.2]{LC2}. Thus ordinary ASCII letters are used
 % to produce the Greek characters; the mapping of ASCII to Greek is referred to as
-% a `transliteration' scheme. It serves as \emph{both} an input encoding, and as 
-% a font encoding. Accents and diacritic marks are provided through ligatures 
-% built-in to the fonts. Various documents can be found on the web\footnote{e.g., 
+% a `transliteration' scheme. It serves as \emph{both} an input encoding, and as
+% a font encoding. Accents and diacritic marks are provided through ligatures
+% built-in to the fonts. Various documents can be found on the web\footnote{e.g.,
 % \url{http://milde.users.sourceforge.net/LGR/}} and
 % within \TeX\ Live distributions\footnote{%
-% TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/babel-greek/}}}. 
+% TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/babel-greek/}}}.
 %
 % Indeed the current maintainer G\"unther Milde states
 % ``The LGR transliteration does not work for PDF metadata''.
 % This is because there is no translation of LGR input into \LaTeX\ LICRs,
 % as happens with say |\usepackage[utf8]{inputenc}| for UTF-8 input,
-% or when upper 8-bit characters are present using |\usepackage[iso-8859-7]{inputenc}|.  
-% With these, LICRs such as |\textAlpha|, |\textOmicron|, \dots, |\textomega| 
+% or when upper 8-bit characters are present using |\usepackage[iso-8859-7]{inputenc}|.
+% With these, LICRs such as |\textAlpha|, |\textOmicron|, \dots, |\textomega|
 % are produced, which result in the correct characters for metadata and bookmarks,
 % perhaps employing Unicode `combining' characters for accented letters.
 % Using |pdfx| the UTF-8 characters can be put directly into the |.xmpdata| file;
 % LICRs are interpreted provided the |grkxmp| loading option has been specified.
-% 
-% Using the methods of |pdfx| the metadata difficulty is remedied, as can be seen in 
-% Figure~\ref{greek-meta} using coding as shown in Figure~\ref{greek-code}. This requires 
-% the |LGRxmp| option and |\textLGR| `parser' macro. The original document source, 
+%
+% Using the methods of |pdfx| the metadata difficulty is remedied, as can be seen in
+% Figure~\ref{greek-meta} using coding as shown in Figure~\ref{greek-code}. This requires
+% the |LGRxmp| option and |\textLGR| `parser' macro. The original document source,
 % called |usage.tex|, can be found in the directory specified in the footnote below.
 % As this document is essentially an English description of how to use LGR for Greek,
-% we have used the `Keywords' field to provide examples of such usage. 
-% Since a macro |\textgreek| can be used for greek portions within such documents, 
+% we have used the `Keywords' field to provide examples of such usage.
+% Since a macro |\textgreek| can be used for greek portions within such documents,
 % this macro name is aliased to |\textLGR| within the context where metadata is processed.
-% Furthermore, parsing using |\textLGR| generates correct pre-composed characters 
+% Furthermore, parsing using |\textLGR| generates correct pre-composed characters
 % for letters with accents or diacritics. Bookmarks can also be generated from
 % LGR input, using a technique described in Section~\ref{sssec-arm}.
 %
@@ -1761,34 +1816,34 @@
 % \bigskip\noindent
 % The features available with different loading options are summarised here.
 % \begin{itemize}
-% \item 
+% \item
 %  no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII)
 % \item
-%  |grkxmp|: LICRs can be present; e.g. |\textAlpha|, |\textOmega|, etc. 
+%  |grkxmp|: LICRs can be present; e.g. |\textAlpha|, |\textOmega|, etc.
 % \item
 %  |LGRxmp|: supports LGR-encoded input and |ISO-8859-7| upper range characters,
-%    using the |\textLGR| `parser' macro.         
+%    using the |\textLGR| `parser' macro.
 % \end{itemize}
-% With |LGRxmp| specified, the features of |grkxmp| are also available; so any 
+% With |LGRxmp| specified, the features of |grkxmp| are also available; so any
 % lower-listed option allows data to be mixed with that for higher-listed ones.
 %
 %
 % The final piece to get validation for PDF/A from LGR input, is to specify
-% a Unicode point for the `|v|' used only in the strong `|sv|' ligature to obtain 
-% a non-final `sigma' typeset in isolation. 
+% a Unicode point for the `|v|' used only in the strong `|sv|' ligature to obtain
+% a non-final `sigma' typeset in isolation.
 %\begin{decl}[]
 % |\pdfglyphtounicode{internalchar2}{200D}|
 %\end{decl}
 % This gives an interpretation as `zero-width joiner'.
 % There are two instances of this within |usage.tex|. Copy/Paste works as desired.
-% Using \pdftex\ the above command is done automatically. 
-% Drivers, such as Xe\LaTeX\ lacking an implementation of |\pdfglyphtounicode|, 
+% Using \pdftex\ the above command is done automatically.
+% Drivers, such as Xe\LaTeX\ lacking an implementation of |\pdfglyphtounicode|,
 % can fail to produce a valid PDF due to this rather minor deficiency.
-% 
+%
 % Greek numerals, using |\greeknumeral| or |\Greeknumeral| cannot work directly within
 % a |.xmpdata| file. However if such is desired, the following technique allows
-% correct LICRs to be found for use in the metadata. 
-% At any convenient place within the \LaTeX\ source; e.g., near where the required  
+% correct LICRs to be found for use in the metadata.
+% At any convenient place within the \LaTeX\ source; e.g., near where the required
 % number is used, insert coding such as:
 % \begin{decl}[]
 % |{\pdfxGreeknumeralsHack \textgreek{\edef\num{\greeknumeral{1997}}\show\num}}%|
@@ -1820,7 +1875,7 @@
 %
 % \def\ArmTeX{Arm\kern -0.15em\TeX}%
 % \subsubsection[Metadata with Armenian]{Metadata with Armenian}\label{sssec-arm}
-% 
+%
 % \begin{figure}[!htbp]
 % \centering
 % \includegraphics[scale=.42]{armtex-meta}
@@ -1840,21 +1895,21 @@
 % \caption{Enriched \LaTeX\ source for the Armenian version of the \ArmTeX\ manual,
 % with added metadata demonstrating the \ArmTeX\ transliteration scheme for \texttt{OT6} encoding.
 % Also shown is coding used to produce bookmarks from the transliteration.}\label{arm-code}
-% \end{figure} 
-% 
+% \end{figure}
+%
 % The \ArmTeX\ package\footnote{documentation: %
 %  TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/}}}
-% provides the method to typeset Armenian, with input being specified in various ways 
-% including a transliteration scheme from ASCII input. This transliteration is directed 
+% provides the method to typeset Armenian, with input being specified in various ways
+% including a transliteration scheme from ASCII input. This transliteration is directed
 % at the use of the |OT6| encoding, developed for this purpose.
 % Each way is supported by |pdfx.sty| with appropriate loading options, similar
-% to the support for Greek~(see Section~\ref{sssec-grk}). 
+% to the support for Greek~(see Section~\ref{sssec-grk}).
 % \begin{itemize}
-% \item 
-%  no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII)  
 % \item
-%   |armxmp|: using LICR-like macro names; e.g. |\armAyb|, |\armsha|, |\armfe| etc. 
+%  no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII)
 % \item
+%   |armxmp|: using LICR-like macro names; e.g. |\armAyb|, |\armsha|, |\armfe| etc.
+% \item
 %   |AR8xmp|: using the \ArmTeX\ (|OT6|) transliteration scheme or with upper-range
 %    characters in |ArmSCII8| encoding, using the `parser' macro |\textARM|.
 % \end{itemize}
@@ -1866,9 +1921,9 @@
 % implemented in the |OT6|-encoded font, or careful parsing of the input into
 % LICR-like macros.
 % \LaTeX\ source\footnote{TeXLive: %
-% \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/examples/latex/}}} 
-% for the \ArmTeX\ documentation is available in both English and Armenian. 
-% Figure~\ref{arm-meta} shows the result of enriching the Armenian version with relevant 
+% \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/examples/latex/}}}
+% for the \ArmTeX\ documentation is available in both English and Armenian.
+% Figure~\ref{arm-meta} shows the result of enriching the Armenian version with relevant
 %  metadata, using coding as shown in Figure~\ref{arm-code}.
 %
 % As in earlier examples, that metadata has come from the extensive comments at the head
@@ -1883,18 +1938,18 @@
 % process, as follows.
 % \begin{enumerate}
 % \item
-%  conversion of transliterated source into UTF-8. 
+%  conversion of transliterated source into UTF-8.
 %  This is done as the |.xmpdata| file is processed, using |\pdfxEnableCommands|
-%  to make global definitions; e.g, 
+%  to make global definitions; e.g,
 %\begin{decl}[]
-% |\xdef\sectAtitle{\textARM{Nerac'uthyun}}| 
+% |\xdef\sectAtitle{\textARM{Nerac'uthyun}}|
 %\end{decl}
 %  capturing the section title in the form supplied in the \LaTeX\ source.
-%  This can be seen in Figure~\ref{arm-code}, near the end of the |{filecontents*}|
+%  This can be seen in Figure~\ref{arm-code}, near the end of the |{filecontents}|
 %  environment, and at the bottom where the |\section| command would occur.
 % \item
 %  conversion of the UTF-8 representation into |UTF16-be|, suitable for bookmark
-%  strings within the PDF file. With \pdftex\ thishis is done using 
+%  strings within the PDF file. With \pdftex\ this is done using
 %  |\StringEncodingConvert| from Heiko Oberdiek's |stringenc.sty| package.
 %  Lua\LaTeX\ and Xe\LaTeX\ can use the UTF-8 representation directly.
 % \item
@@ -1909,8 +1964,8 @@
 % \end{decl}
 % Now |\pdfxBookmark| first checks that the macro passed as the 2nd argument
 % actually exists. If it does not, an error message is given and upon continuation
-% would just do |\section{Nerac'uthyun}| as normal. 
-% When it does exist, then step 2 is done (by \pdftex) storing the result as |\pdfx at temp|. 
+% would just do |\section{Nerac'uthyun}| as normal.
+% When it does exist, then step 2 is done (by \pdftex) storing the result as |\pdfx at temp|.
 % With Lua\TeX\ and Xe\TeX, |\pdfx at temp| stores a copy of the UTF-8 data.
 % Then the commands needing to be executed are essentially
 %\begin{decl}[]
@@ -1921,9 +1976,9 @@
 % so that the correct section heading is displayed on the page,
 % but when |\sectAtitle| is processed to create a bookmark it is replaced
 % by the pre-prepared contents of |\pdfx at temp|.
-% There are some technicalities\footnote{In fact a small change is made 
-% to how \textcolor{verbcolor}{\texttt{\string\@@writetorep}} is used.} 
-% to make this work cleanly, 
+% There are some technicalities\footnote{In fact a small change is made
+% to how \textcolor{verbcolor}{\texttt{\string\@@writetorep}} is used.}
+% to make this work cleanly,
 % as just doing these commands would interfere with other uses of |\pdfstringdef|.
 % In case a long sectioning command has an optional argument, or a $*$-variant
 % is needed, then include it this way.
@@ -1933,32 +1988,32 @@
 %
 %
 % \subsubsection[Other Languages]{Other Languages}\label{sssec-other}
-% 
+%
 % There is support for Metadata using characters from other languages,
-% with corresponding loading options, as follows. 
+% with corresponding loading options, as follows.
 % \begin{itemize}
-%  \item  |arbxmp| : Arabic; 
+%  \item  |arbxmp| : Arabic;
 % via LICRs |\textarabicalef|, |\textarabicqaf|,\\ |\textarabicaleflowerhamza|, etc.
-%  \item  |devxmp| : Devanagari; 
+%  \item  |devxmp| : Devanagari;
 % via LICRs |\textdevanagaria|, |\textdevanagarivocalicr|,\\ |\textdevanagaricandrabindu|, etc.
 %  \item  |hebxmp| : Hebrew;
 % via LICRs |\hebalef|, |\hebsamekh|, |\hebfinalpe| and accent marks |\segol|, |\qubuts|, etc.
-%  \item  |vnmxmp| : Vietnamese; 
+%  \item  |vnmxmp| : Vietnamese;
 % via LICRs |\ABREVE|, |\OCIRCUMFLEX|, |\uhorn| etc. and the combinations of multiple accents
 %  applied as usual via |\'|, |\`|, |\^|, etc.
 % \end{itemize}
 % The LICRs include support mapping accented letters to precomposed glyphs, falling back on
 % `combining characters' only in unusual situations. Special input conventions or methods,
-% such as transliteration schemes, are \emph{not yet} supported. 
-% Indeed, these options are largely untested, so any difficulties encountered should 
+% such as transliteration schemes, are \emph{not yet} supported.
+% Indeed, these options are largely untested, so any difficulties encountered should
 % be reported to the package authors. Requests to support extra input methods or other
 % language blocks should also be directed to the authors, along with pointers to where
-% the desired input methods are fully described. 
+% the desired input methods are fully described.
 % Sample `real-world' documents would be greatly appreciated.
 %
 %
 % \subsection[L8U pseudo-encoding]{L8U pseudo-encoding}\label{ssec-L8U}
-%  
+%
 % To understand how |pdfx| handles the translation into UTF-8 of input that is not already
 % in that format, we'll briefly discuss \LaTeX's font-encoding mechanism, which is the
 % basis for LICR macros~\cite[\S\,7.11]{LC2}. As an example, consider the macro |\textgamma|
@@ -1973,12 +2028,12 @@
 % |ucs/data/uni-3.def:\uc at dclc{947}{default}{\textgamma}%|
 % \end{decl}
 % Here the |\uc at dclc| commands associate UTF-8 input of |Ux0263| (IPA small letter gamma)
-% and |Ux03B3| (Greek small letter gamma) internally with |\textgamma|, 
+% and |Ux03B3| (Greek small letter gamma) internally with |\textgamma|,
 % whereas the others deal with output formats\footnote{Whereas {\color{verbcolor}\texttt{ucs.sty}}
-% handles UTF-8 input, mapping it to LICRs, with {\color{verbcolor}\texttt{pdfx.sty}} 
+% handles UTF-8 input, mapping it to LICRs, with {\color{verbcolor}\texttt{pdfx.sty}}
 % we need the reverse mapping into UTF-8, not just from LICRs but also from legacy
-% 8-bit encodings and transliteration schemes.}. 
-% In four of these examples there is a number, which refers to a position in an `encoding vector' 
+% 8-bit encodings and transliteration schemes.}.
+% In four of these examples there is a number, which refers to a position in an `encoding vector'
 % for the particular font used to place the character onto the printable page.
 % For example |LGR| refers to greek fonts, encoded as explained in Section~\ref{sssec-grk}.
 % IPA phonetics use the |T3| encoding, so |\textgamma| refers to a character
@@ -1985,20 +2040,20 @@
 % from a different Unicode block.
 %
 % With two of these cases there is no specific font.
-% For example, |PU| is used to create bookmark strings, 
-% and other PDF string inclusions, using |\pdfstringdef| from the |hyperref| package. 
-% With |greek-euenc.def| designed for Xe\TeX\ and Lua\TeX, the encoding can be variable, 
-% with the output bytes being those for the UTF-8 encoding of $\gamma$, namely |^^ce^^b3|, 
-% shown here as the |T1|-encoded pair |γ|. 
-% The term `pseudo-encoding' has been coined by the \LaTeX\ team. 
-% Although there is no actual font to determine the encoding, to an author there is essentially 
-% no difference in how corresponding macros can be used to get a character placed into 
-% an appropriate structure within the PDF. 
+% For example, |PU| is used to create bookmark strings,
+% and other PDF string inclusions, using |\pdfstringdef| from the |hyperref| package.
+% With |greek-euenc.def| designed for Xe\TeX\ and Lua\TeX, the encoding can be variable,
+% with the output bytes being those for the UTF-8 encoding of $\gamma$, namely |^^ce^^b3|,
+% shown here as the |T1|-encoded pair |γ|.
+% The term `pseudo-encoding' has been coined by the \LaTeX\ team.
+% Although there is no actual font to determine the encoding, to an author there is essentially
+% no difference in how corresponding macros can be used to get a character placed into
+% an appropriate structure within the PDF.
 %
 % Thus there are 4 output forms for this character,
 % and we've not even considered how $\gamma$ is used in mathematics!
 % To handle these concurrently, one has internally-defined control-sequence names
-% \begin{decl}[] 
+% \begin{decl}[]
 %  |\LGR\textgamma=\char"67| \qquad where $6\times 16 + 7 = 103$\\
 %  |\T3\textgamma=\char"47| \qquad where $4\times 16 + 7 = 71$\\
 %  |\PU\textgamma=\long macro:->\83\263|\\
@@ -2006,12 +2061,12 @@
 % \end{decl}
 % where the 2nd `\textbackslash' is part of the name\footnote{%
 % obtained using {\color{verbcolor}%
-% \texttt{\string\csname\space LGR\string\string\string\textgamma\string\endcsname}}.}. 
+% \texttt{\string\csname\space LGR\string\string\string\textgamma\string\endcsname}}.}.
 % The latter macro is explained below.
 % To use the specific version of the macro, \LaTeX\ maintains a `font-encoding'
 % parameter, set using |\fontencoding{...}| local to the surrounding environment grouping.
 %
-% To the above declarations of |\textgamma|, to deal with conversion to UTF-8, 
+% To the above declarations of |\textgamma|, to deal with conversion to UTF-8,
 % the |pdfx| package adds the following declarations when the |LGRxmp| option is used.
 % \begin{decl}[]
 % |pdfx/l8ugrk.def:\DeclareTextCommand{\textgamma}{L8U}{γ}|\\
@@ -2019,11 +2074,11 @@
 % |pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{g}{γ} |\\
 % |pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{^^e3}{γ}|
 % \end{decl}
-% The pseudo-encoding name |L8U| indicates \textbf{L}ocal conversion into UTF-\textbf{8} \textbf{U}nicode, 
-% as required for metadata, using |pdfx.sty|. Currently this pseudo-encoding is used in one place only; 
+% The pseudo-encoding name |L8U| indicates \textbf{L}ocal conversion into UTF-\textbf{8} \textbf{U}nicode,
+% as required for metadata, using |pdfx.sty|. Currently this pseudo-encoding is used in one place only;
 % during the interpretation of information supplied through the |\jobname.xmpdata| file.
 % This happens as part of the |pdfx| package, \emph{before} it uses |xmpincl.sty|.
-% Such specificity justifies being called a `Local' encoding. 
+% Such specificity justifies being called a `Local' encoding.
 % However, other tasks may emerge requiring on-the-fly conversion to UTF-8.
 % In this case all the functionality of this pseudo-encoding could be shifted into a separate package,
 % and the name changed to reflect this more general usage.
@@ -2031,7 +2086,7 @@
 % is possibly a sufficient reason to have a separate package. Another possibility is to
 % generate on-the-fly creation of UTF-8 strings, to be sent to Xe\TeX\ or Lua\TeX\ running
 % as a slave process to generate images of string using OTF fonts, which \pdftex\ currently
-% cannot handle. The result would then be imported back into the running job as an image. 
+% cannot handle. The result would then be imported back into the running job as an image.
 % The authors invite suggestions of how this |L8U| pseudo-encoding functionality can be put to
 % good use.
 %
@@ -2041,7 +2096,7 @@
 % |\DeclareTextComposite{\`}{T1}{A}{192}|
 %\end{decl}
 % to get the pre-composed `\`A', rather than a composite built from \`{} and `A'.
-% The last parameter is an index into a font; however the |\DeclareTextCompositeCommand| 
+% The last parameter is an index into a font; however the |\DeclareTextCompositeCommand|
 % variant allows arbitrary coding as that final parameter, so can be the bytes for the
 % UTF-8 representation of a character.
 % In the above code lines, macros are defined as follows
@@ -2067,7 +2122,7 @@
 % | ...  \textLGRenc{#1}\textgreekLGR at i #2\@empty | \quad if |#2| has more tokens\\
 % |\textgreekLGR at i #1->\textgreekLGR at ii #1|
 %\end{decl}
-% Thus |\textLGRenc| is called on each token in the argument of |\textLGR|. 
+% Thus |\textLGRenc| is called on each token in the argument of |\textLGR|.
 % Now |\textLGRenc|, which is applicable only when |L8U| pseudo-encoding is in effect,
 % has a default expansion of just passing the character through unchanged; \emph{viz.}
 %\begin{decl}[]
@@ -2074,11 +2129,11 @@
 % |\DeclareTextCommand{\textLGRenc}{L8U}[1]{#1}|
 %\end{decl}
 % but by using |\DeclareTextCompositeCommand{\textLGRenc}{L8U}{...}{...}|,
-% alternate expansions apply with specific arguments, as shown above. 
+% alternate expansions apply with specific arguments, as shown above.
 % In particular, that final argument can include coding that `looks ahead' to find the next
 % character. This is used, for example, with diacritics in Greek, multi-letter sequences
 % for Armenian letters, and other special cases related to ligatures and punctuation symbols.
-% To illustrate this Figure~\ref{ex-arm} (below) follows the conversion of a specific word, 
+% To illustrate this Figure~\ref{ex-arm} (below) follows the conversion of a specific word,
 % given in the transliteration for Armenian~(see Section~\ref{sssec-arm}).
 % This conversion occurs using only \TeX's macro-expansion ability.
 % Some details relevant to this example are explained there.
@@ -2117,26 +2172,26 @@
 %\end{decl}
 % The macro |\armen at en| (named for \textbf{e}mpty or \textbf{n}ext),
 % looks ahead to see if the 5th-next argument token is |\@empty|,
-% signifying that there is nothing left of the original input. 
-% (A closed bracing |{...}| counts as a single argument.) If |\@empty| the tokens in 
+% signifying that there is nothing left of the original input.
+% (A closed bracing |{...}| counts as a single argument.) If |\@empty| the tokens in
 % the 2nd bracing are substituted, otherwise those in the 3rd bracing.
-% Similarly |\armen at nc| (named for \textbf{n}ext \textbf{c}haracter) 
+% Similarly |\armen at nc| (named for \textbf{n}ext \textbf{c}haracter)
 % looks to see whether that 5th argument token matches with the character in the
 % 1st bracing. If so, the 2nd bracing's tokens are substituted, else those of the 3rd bracing.
-% This is how to cope with `Sh' or `SH', implemented as ligatures in an |OT6| encoded font, 
-% denoting a different letter from a single `S'. The macro |\armuh| is used here 
+% This is how to cope with `Sh' or `SH', implemented as ligatures in an |OT6| encoded font,
+% denoting a different letter from a single `S'. The macro |\armuh| is used here
 % to \emph{prevent} a ligature from |ev| that would otherwise occur.
-% One writes |e\armuh v| to get the separate letters. As the space becomes an active token, 
-% we need |\textarmgobblespace| to restart parsing appropriately. 
-% Of course |\textarmenARM at i| behaves like |\textgreekLGR at i| 
-% as explained earlier, with a test for |\@empty| as the 2nd token. 
+% One writes |e\armuh v| to get the separate letters. As the space becomes an active token,
+% we need |\textarmgobblespace| to restart parsing appropriately.
+% Of course |\textarmenARM at i| behaves like |\textgreekLGR at i|
+% as explained earlier, with a test for |\@empty| as the 2nd token.
 % At the end, any remaining |\@empty| expand into nothing.
 %
 % \caption{Partial tracing of the conversion of an Armenian word, indicated by the red oval
 % in Figure~\ref{arm-meta}, from {\color{verbcolor}\texttt{OT6}} transliterated form into UTF-8 bytes.
-% In each line, \TeX\ expansion occurs at the position of the left-most `\textbackslash'. 
-% The resulting bytes are shown here in {\color{verbcolor}\texttt{T1}} encoding, 
-% as in previous examples, with {\color{verbcolor}\texttt{?}} indicating an invisible character 
+% In each line, \TeX\ expansion occurs at the position of the left-most `\textbackslash'.
+% The resulting bytes are shown here in {\color{verbcolor}\texttt{T1}} encoding,
+% as in previous examples, with {\color{verbcolor}\texttt{?}} indicating an invisible character
 % in the byte range {\color{verbcolor}\texttt{Ox80}--\texttt{Ox9f}}.
 % See Figure\,\ref{src-arm} for how this source appears with UTF-8 encoding.
 % }\label{ex-arm}
@@ -2147,8 +2202,8 @@
 % to an LICR called |\textarmuh|. Since |\armuh| is already defined, not as an LICR,
 % it cannot be declared to be one without creating problems.
 % Instead, within the environment grouping where |L8U| pseudo-encoding is specified,
-% one uses |\let\armuh\textarmuh| within a `rebinding' macro command 
-%  |\LIIXUmaparmenianletters|\footnote{The start of the macro name is derived from pseudo-Roman 
+% one uses |\let\armuh\textarmuh| within a `rebinding' macro command
+%  |\LIIXUmaparmenianletters|\footnote{The start of the macro name is derived from pseudo-Roman
 % numerals: IX = 9, IIX = 8}
 % to get LICR functionality from user-commands.
 %\begin{decl}[]
@@ -2161,7 +2216,7 @@
 % |   \def\armbf{}%|\\
 % |  ... }|
 %\end{decl}
-% As well as rebinding each command for a letter, the font style-switching commands 
+% As well as rebinding each command for a letter, the font style-switching commands
 % are aliased to do nothing, as these are not relevant to creating UTF-8 output.
 % Being localised by the |L8U| grouping, this causes no problem elsewhere within the document.
 % These are similar to macros |\psdaliasnames| and |\psdmapshortnames| from |hyperref.sty|,
@@ -2169,7 +2224,7 @@
 %
 % \begin{figure}[htb]
 %  \includegraphics[scale=.625]{Armenian-example-UTF8.png}
-%  \caption{Image of part of the source coding for Figure~\ref{ex-arm}, 
+%  \caption{Image of part of the source coding for Figure~\ref{ex-arm},
 %  viewed as UTF-8 encoded, within editing software.}\label{src-arm}
 % \end{figure}
 %
@@ -2186,10 +2241,10 @@
 % \item |\LIIXUmaplatinchars| and |\LIIXUcancelfontswitches| with |LATxmp|
 % \item |\LIIXUmapmathletterlikes| always defined
 % \item |\LIIXUmapmathspaces| always defined
-% \item |\LIIXUmapmath...| with |mathxmp| --- see Section~\ref{ssec-math} below. 
+% \item |\LIIXUmapmath...| with |mathxmp| --- see Section~\ref{ssec-math} below.
 %\end{itemize}
 % It may well be that more macro names can be added to some of these commands,
-% to allow macro usage within the metadata. 
+% to allow macro usage within the metadata.
 % Suggestions for such additions should be sent to the |pdfx| package authors, along
 % with example documents. Similarly support for more languages can be requested.
 %
@@ -2199,9 +2254,9 @@
 % Macro commands for many mathematical symbols can be used directly in metadata without extra
 % support; e.g., basic arithmetic operations, letter-like symbols, spacing commands.
 % Super- and subscripted letters and numerals can use |\textsuperscript| and |\textsubscript|
-% when there is an appropriate Unicode character (digits, comma, $+$/$-$/$=$, parentheses, 
+% when there is an appropriate Unicode character (digits, comma, $+$/$-$/$=$, parentheses,
 % many letters but not all).
-% 
+%
 % When the |mathxmp| loading option is specified, many more symbols become available,
 % using `rebinding' macros. These are necessary, as the macros for mathematical symbols
 % are generally \emph{not} defined as LICRs, but use |\mathchar|. Thus new LICRs are needed,
@@ -2243,8 +2298,8 @@
 % where |\liixu at mathreorder| uses some \TeX\ pattern-matching to allow the |\textmathrmstring|
 % parser macro to work on the argument to |\mathrm| before allowing |\textmathnormal| parsing
 % to continue afterwards. We refer to this as `nested parsing'.
-% 
-% Similarly `nested parsing' can be used with superscripts and subscripts using |^{...}| and |_{...}| 
+%
+% Similarly `nested parsing' can be used with superscripts and subscripts using |^{...}| and |_{...}|
 % and to specify linebreaks, and even super-/subscripts within styles; viz.
 %\begin{decl}[]
 % |\Declar...CompositeCommand{\textmathnormal}{L8U}{^}{\liixu at mathreorder\textsuperstring}|\\
@@ -2259,7 +2314,7 @@
 % is required to uncover cases which may require special handling.
 % An ultimate aim is to be able to just copy the \LaTeX\ source for the `Abstract' of a technical
 % paper into the |\Subject{...}| field of the |.xmpdata| file, with a large expectation that
-% it will `just work', or need only trivial edits to make it so. 
+% it will `just work', or need only trivial edits to make it so.
 %
 %
 % \subsection[Metadata in a Production Workflow]{Metadata in a Production Workflow}\label{ssec-wflow}
@@ -2273,8 +2328,8 @@
 % \noindent
 % At Macquarie University, the Mathematics Department produces personalised topmatter
 % or coversheets for student assignments and tutorial papers using \LaTeX, incorporating
-% information that has been stored in a database. This is done by writing extra definitions 
-% at the top of a copy of the \LaTeX\ source as prepared by the lecturers. 
+% information that has been stored in a database. This is done by writing extra definitions
+% at the top of a copy of the \LaTeX\ source as prepared by the lecturers.
 % For example information analogous to the following
 %\begin{decl}[]
 % |\def\thestudentname{\utext{Moore} Ross}|\\
@@ -2286,7 +2341,7 @@
 % |\def\theduedate{09/05 2016}|\\
 % |...|
 %\end{decl}
-% is prepended to the file shown in Figure~\ref{math-wflow}, 
+% is prepended to the file shown in Figure~\ref{math-wflow},
 % for each student downloading their personalised assignment paper.
 % The \LaTeX\ source makes use of this information, including recording some of it
 % within the Metadata.
@@ -2301,7 +2356,7 @@
 % |\def\assigntopics{orbits, stabilisers, groups of matrices}|\\
 % |\providecommand{\pdfxopts}{a-1b}|\\
 % |%% XMP metadata for PDF/A conformance|\\
-% |\begin{filecontents*}{\jobname.xmpdata}|\\
+% |\begin{filecontents}[force]{\jobname.xmpdata}|\\
 % |\Title{\theunitcode\ \theoffering: Assignment \theassignmentnumber}|\\
 % |\Author{\assignLecturer}|\\
 % |\Copyright{Macquarie University, Mathematics Department}|\\
@@ -2310,7 +2365,7 @@
 % |\Keywords{\assigntopics}|\\
 % |\Creator{pdfTeX + pdfx.sty with \pdfxopts\space option}|\\
 % |\pdfxEnableCommands{\def\utext#1{#1,}}|\\
-% |\end{filecontents*}|\\
+% |\end{filecontents}|\\
 % ||\\
 % |\documentclass[a4paper,11pt]{article}|\\
 % |\RequirePackage{assignments}|\\
@@ -2332,7 +2387,7 @@
 % Another way that jobs can be customised using essentially the same \LaTeX\ source,
 % is via the command used to initiate the job. For example the file |sample.tex|,
 % accompanying the |pdfx| distribution, can be used to test the loading options to create
-% PDFs conforming to the various flavours of PDF/A, PDF/E and PDF/X. 
+% PDFs conforming to the various flavours of PDF/A, PDF/E and PDF/X.
 % Consider a shell script containing the following (Unix/Linux) commands.
 %\begin{decl}[]
 % |pdflatex "\def\pdfxopt{a-2b}\input sample.tex"|\\
@@ -2348,11 +2403,11 @@
 % from the same \LaTeX\ source, named according to each particular variant.
 % A default |\providecommand{\pdfxopt}{a-1b}| at the start of |sample.tex| catches the case
 % of normal typesetting, doing nothing when |\pdfxopt| already has an expansion value.
-% 
+%
 % \goodbreak
 % \subsection[Further Developments]{Further Developments}\label{ssec-further}
 %
-% Prospects for further development of the |pdfx| package are as follows, 
+% Prospects for further development of the |pdfx| package are as follows,
 % listed not necessarily in order of perceived importance.
 % \begin{itemize}
 %  \item
@@ -2363,7 +2418,7 @@
 %    Conformance to multiple PDF standards; e.g. both PDF/A and PDF/E,
 %     both PDF/A and PDF/X with RGB or CMYK color profile, other combinations.
 %  \item
-%    Explore delaying the processing of metadata until |\begin{document}|, 
+%    Explore delaying the processing of metadata until |\begin{document}|,
 %    thereby allowing some fields to be set automatically from other information
 %    supplied within the document preamble.
 %  \item
@@ -2384,7 +2439,6 @@
 %   Support emerging standards based on PDF 2.0~\cite{PDF20}.
 % \end{itemize}
 %
-%
 % \section[Bibliography]{Bibliography}%
 % {\let\newpage\relax
 % \begin{thebibliography}{999}
@@ -2396,28 +2450,35 @@
 %
 % \bibitem{XMP-spec}Adobe Systems Inc.;
 %  XMP Specification, Adding Intelligence to Media. September 2005.
-% Also available as ISO 16684-1:2012\,\cite{XMP-ISO}.\\
+% Also available as ISO 16684-1:2012\,\cite{XMP-ISO}. %\\
 % \url{http://www.adobe.com/devnet/xmp/}.
 %
 % \bibitem{PDFUA1} ANSI\,/\,AIIM\,/\,ISO\,14289-1:2012;
 % Document management applications --- Electronic document file format enhancement for accessibility
 % --- Part 1: Use of ISO\,32000-1\,(PDF/UA-1);
-% Technical Committee ISO/TC\,171/SC\,2 (July 2012).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=54564}.\\
-% Revised as ISO\,14289-1:2014 (December 2014): 
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=64599}.\\
-% Available from ANSI at \url{https://webstore.ansi.org/Standards/ISO/ISO142892014}.
+% Technical Committee ISO/TC\,171/SC\,2 (July 2012 -- withdrawn). %\\
+% Revised as ISO\,14289-1:2014 (Dec. 2014):
+% \url{https://www.iso.org/standard/64599.html}.\\
+% Available from ANSI at \url{https://webstore.ansi.org/standards/iso/iso142892014}.
 %
-% \bibitem{PDFUABSI} BS,/\,ISO\,14289-1:2014; Document Management Applications. 
-% Electronic Document File Format Enhancement For Accessibility. Use Of ISO 32000-1 (PDF/UA-1) (British Standard)
-% \url{https://webstore.ansi.org/Standards/BSI/BSISO142892014}.
+% \bibitem{PDFUA2} ISO\,14289-2:2024;
+% Document management applications --- Electronic document file format enhancement for accessibility
+% --- Part 2: Use of ISO\,32000-2\,(PDF/UA-2);\\
+% Technical Committee ISO/TC\,171/SC\,2 WG9 (March 2024).
+% \href{https://pdfa.org/iso-14289-2-pdfua-2/}%
+%  {\UrlFont https://pdfa.org/iso-\penalty-20 14289-2-pdfua-2/}
 %
-%  \bibitem{pdfaPilot} Callas Software Gmbh.; 
+% \bibitem{PDFUABSI} BS,/\,ISO\,14289-1:2014; Document Management Applications.
+% Electronic Document File Format Enhancement For Accessibility. 
+% Use Of ISO 32000-1 (PDF/UA-1) (British Standard)
+% \url{https://webstore.ansi.org/standards/bsi/bsiso142892014}.
+%
+%  \bibitem{pdfaPilot} Callas Software Gmbh.;
 %  \texttt{pdfaPilot}, plug-in or desktop software for PDF/A versions.
 %  \url{https://www.callassoftware.com/en/products/pdfapilot}.
 %
 % \bibitem{DC}
-% Dublin Core Metadata Element Set, Version 1.1, October 2010\\ 
+% Dublin Core Metadata Element Set, Version 1.1, October 2010\\
 % \url{http://dublincore.org/documents/dces/}.
 %
 % \bibitem{BCP47}IETF; Best Current Practice \#47: Tags for Identifying Languages.
@@ -2425,115 +2486,157 @@
 %  \url{https://tools.ietf.org/pdf/bcp47.pdf}.
 %
 % \bibitem{PDFX}ISO\,15930-1:2001;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 1: 
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 1:
 % Complete exchange using CMYK data (PDF/X-1 and PDF/X-1a).
 % Technical Committee ISO/TC\,130 (December 2001).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=29061}.
+% \url{https://www.iso.org/standard/29061.html}.
 %
 % \bibitem{PDFX3}ISO\,15930-3:2002;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 3: 
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 3:
 % Complete exchange suitable for colour-managed workflows (PDF/X-3).
 % Technical Committee ISO/TC\,130 (September 2002).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=34941}.
+% \url{https://www.iso.org/standard/34941.html}.
 %
 % \bibitem{PDFX1a}ISO\,15930-4:2003;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 4: 
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 4:
 % Complete exchange of CMYK and spot colour printing data using PDF 1.4 (PDF/X-1a).
 % Technical Committee ISO/TC\,130 (December 2003).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=39938}.
+% \url{https://www.iso.org/standard/39938.html}.
 %
 % \bibitem{PDFX3a}ISO\,15930-6:2003;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 6: 
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 6:
 % Complete exchange of printing data suitable for colour-managed workflows using PDF 1.4 (PDF/X-3).
 % Technical Committee ISO/TC\,130 (December 2003).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=39940}.
+% \url{https://www.iso.org/standard/39940.html}.
 %
 % \bibitem{PDFX4}ISO\,15930-7:2010;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 7: 
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 7:
 % Complete exchange of printing data (PDF/X-4) and partial exchange of printing data with external profile reference (PDF/X-4p) using PDF 1.6.
 % Technical Committee ISO/TC\,130 (July 2010).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55843}.
+% \url{https://www.iso.org/standard/55843.html}.
 %
 % \bibitem{PDFX5}ISO\,15930-8:2010;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 8: 
-% Partial exchange of printing data using PDF 1.6 (PDF/X-5). \hfil
-% Technical Committee ISO/TC\,130 (July 2010). \hfil
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55844}.
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 8:
+% Partial exchange of printing data using PDF 1.6 (PDF/X-5). 
+% Technical Committee ISO/TC\,130 (July 2010). 
+% \url{https://www.iso.org/standard/55844.html}.
 % Revision via Corrigendum: ISO\,15930-8:2010/Cor\,1:2011 (August 2011);
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=60210}.
+% \url{https://www.iso.org/standard/60210.html}.
 %
+% \bibitem{PDFX6}ISO\,15930-9:2020;
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 9:
+% Complete exchange of printing data (PDF/X-6) and partial exchange of printing data
+% with external profile reference (PDF/X-6p and PDF/X-6n) using PDF 2.0
+% Technical Committee ISO/TC\,130 (November 2020). 
+% \url{https://www.iso.org/standard/77103.html}.
+%
+%
 % \bibitem{PDFVT}ISO\,16612-2:2010;
-% Graphic technology\,---\,Variable data exchange\,---\,Part 2:\hfil
-% Using PDF/X-4 \penalty-5000 and PDF/X-5 (PDF/VT-1 and PDF/VT-2).
-% Technical Committee ISO/TC\,130 (December 2005). \hfil
-% \href{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=38013}%
-%  {{\small\tt http://www.iso.org/iso/home/store/catalogue\_tc/catalogue\_detail.htm?\penalty-200csnumber=38013}}.
+% Graphic technology\,---\,Variable data exchange---Part\,2: 
+% Using PDF/X-4\penalty-5000\ and PDF/X-5 (PDF/VT-1 and PDF/VT-2).
+% Technical Committee ISO/TC\,130 (December 2005). 
+% \url{https://www.iso.org/standard/38013.html}.%
 %
+%
+% \bibitem{PDFVT3}ISO\,16612-3:2020;
+% Graphic technology\,---\,Variable data exchange---Part\,3: 
+% Using PDF/X-6\penalty-5000\ (PDF/VT-3).
+% Technical Committee ISO/TC\,130 (Edition1, 2020). 
+% \url{https://www.iso.org/standard/75218.html}.%
+%
 % \bibitem{XMP-ISO}ISO\,16684-1:2012;
-% Graphic technology --- Extensible metadata platform (XMP) specification --- Part 1: 
+% Graphic technology --- Extensible metadata platform (XMP) specification --- Part 1:
 % Data model, serialization and core properties.
-% Technical Committee ISO/TC\,130 (February 2012).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=57421}.
+% Technical Committee ISO/TC\,130 (February 2012 -- withdrawn).
+% Revised as ISO\,16684-1:2019; (Edition 2, 2019).
+% \url{https://www.iso.org/standard/75163.html}.
 %
-% \bibitem{PDFA}ISO\,19005-1:2005; 
+% \bibitem{PDFA}ISO\,19005-1:2005;
 % Document Management --- Electronic document file format for long term preservation
 % --- Part 1: Use of PDF\,1.4\,(PDF/A-1);
 % Technical Committee ISO/TC\,171/SC\,2  (Sept. 2005).
-% Revisions via Corrigenda: ISO\,19005-1:2005/Cor\,1:2007 (March 2007); 
-% ISO\,19005-1:2005/Cor\,2:2011 (Dec. 2011). \\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=38920}.
+% Revisions via Corrigenda: ISO\,19005-1:2005/Cor\,1:2007 (March 2007);
+% ISO\,19005-1:2005/Cor\,2:2011 (Dec. 2011). 
+% \url{https://www.iso.org/standard/38920.html}.
 %
 % \bibitem{PDFA2}ISO\,19005-2:2011;
 % Document Management --- Electronic document file format for long term preservation
 % --- Part 2: Use of ISO\,32000-1\,(PDF/A-2); \hfill
-% Technical Committee ISO/\penalty-200 TC\,171/SC\,2 (June 2011).\\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=50655}. 
+% Technical Committee ISO/\penalty-200 TC\,171/SC\,2 (June 2011).
+% \url{https://www.iso.org/standard/50655.html}.
 %
 % \bibitem{PDFA3}ISO\,19005-3:2012;
 % Document Management --- Electronic document file format for long term preservation
 % --- Part 3: Use of ISO\,32000-1 with support for embedded files (PDF/A-3);
-% Technical Committee ISO/TC\,171/SC\,2 (October 2012).\\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=57229}. 
+% Technical Committee ISO/TC\,171/SC\,2 (October 2012).
+% \url{https://www.iso.org/standard/57229.html}.
 %
+% \bibitem{PDFA4}ISO\,19005-4:2020;
+% Document Management --- Electronic document file format for long term preservation
+% --- Part 4: Use of ISO\,32000-2 (PDF/A-4);
+% Technical Committee ISO/TC\,171/SC\,2 (Edition 1, 2020).
+% \url{https://www.iso.org/standard/71832.html}.
+%
+% \bibitem{PDFDecl} PDF Declarations. A use of ISO\,32000.
+% PDF Association, Berlin, Germany (2019).
+% \url{https://pdfa.org/resource/pdf-declarations/}
+%
 % \bibitem{PDFE}ISO\,24517-1:2008;
-% Document Management --- Engineering document format using PDF --- Part 1: 
+% Document Management --- Engineering document format using PDF --- Part 1:
 % Use of PDF 1.6 (PDF/E-1);
 % Technical Committee ISO/TC\,171/SC\,2 (May 2008).\\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=42274}. 
+% \url{https://www.iso.org/standard/42274.html}.
 %
 % \bibitem{ISO32000}ISO\,32000-1:2008;
 % Document management\,---\,Portable document format\,(PDF\,1.7);
-% Technical Committee ISO/TC\,171/SC\,2 (July 2008). 
+% Technical Committee ISO/TC\,171/SC\,2 (July 2008).
 % Also available as \cite{PDF17}.\\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=51502}.
+% \url{https://www.iso.org/standard/51502.html}.
 %
 % \bibitem{PDF20}ISO\,32000-2:2017;
 % Document management --- Portable document format --- Part~2: PDF\,2.0;
-% Technical Committee ISO/TC\,171/SC\,2 Document file formats, EDMS systems 
-% and authenticity of information. (July 2017)\\
-% \url{https://www.iso.org/standard/63534.html}.
+% Technical Committee ISO/TC\,171/SC\,2 Document file formats, EDMS systems
+% and authenticity of information. (July 2017 --- withdrawn)
+% Revised as ISO\,32000-2:2020; (Edition 2, 2020)
+% \url{https://www.iso.org/standard/75839.html}.\\
+% Sponsored access available since 5 April 2023, from
+% \href{https://www.pdfa-inc.org/product/iso-32000-2-pdf-2-0-bundle-sponsored-access/}{PDF Association}.
 %
 % \bibitem{LC2} F.\,Mittelbach, M.\,Goossens with J.\,Braams, D.\,Carlisle, C.\,Rowley;
 % The \LaTeX\ Companion --- 2nd edition. Addison--Wesley (now Pearson Education Inc.), 2004.
 % ISBN 0-201-36299-6 (paperback).
 %
-% \bibitem{TN0009}PDF/A Competence Centre;
-% TechNote 0009: XMP Extension Schemas in PDF/A-1. (March 2008)
+% \bibitem{PDF-LaTeX} \LaTeX\ Project Working Group, PDF Association.
+% \url{https://pdfa.org/community/latex-project-lwg/}
+%
+% \bibitem{LaTeXPDF} \LaTeX\ Tagged PDF\,---\,A blueprint for a large project.
+% Frank Mittelbach, Chris Rowley; TUGboat, Volume 41 (2020), No 3.
+% \url{https://tug.org/TUGboat/tb41-3/tb129mitt-tagpdf.pdf}. 
+% Project website \url{https://www.latex-project.org/};
+% \href{https://www.latex-project.org/publications/2020-FMi-TUB-tb129mitt-tagpdf.pdf}{Preprint}.
+%
+% \bibitem{TN0009}PDF/A Competence Centre;\,
+% TechNote\,0009: XMP Extension Schemas in PDF/A-1.\penalty-2000\ (March 2008) \ \ 
 % \href{https://www.pdfa.org/publication/technical-note-tn-0009-xmp-extension-schemas-in-pdfa-1/}%
-% {\small\tt https://www.pdfa.org/publication/technical-note-tn-0009-xmp-extension\penalty-200 -schemas-in-pdfa-1/}.
+% {\UrlFont https://www.pdfa.org/publication/technical-note-tn-0009-xmp-\penalty-20 extension-schemas-in-pdfa-1/}.
 %
 % \bibitem{PDF-UA}
-% PDF/UA Technical Implementation Guide: Understanding ISO\,14289-1 (PDF/UA-1). \penalty-200
-% AIIM Global Community of Information Professionals. \hfil
+% PDF/UA Technical Implementation Guide: Understanding ISO\,14289-1\penalty-2000\ (PDF/UA-1).
+% AIIM Global Community of Information Professionals. 
 % \href{http://www.aiim.org/Research-and-Publications/standards/committees/PDFUA/Technical-Implementation-Guide}%
-% {\small\tt http://www.aiim.org/Re\penalty-200 search-and-Publications/standards/committees/PDFUA/Technical-Implementation\penalty-200 -Guide}.
+% {\UrlFont http://\penalty-20 www.aiim.org/Research-and-Publications/standards/committees/PDFUA/Technical\penalty-200 -Implementation-Guide}.
 %
-% \bibitem{colorp} N.\,Preining; 
+% \bibitem{WTPDF} Well-Tagged PDF (WTPDF);
+% Using Tagged PDF for Accessibility and Reuse in PDF 2.0.
+% PDF Association; PDF Reuse TWG \& PDF/UA TWG. Version 1.0.0, February 2024.
+% \url{https://pdfa.org/wtpdf/}
+%
+% \bibitem{colorp} N.\,Preining;
 % \texttt{colorprofiles} \textemdash\ Collection of free ICC profiles.
-%  \TeX\ and \LaTeX\ package (by R.\,Moore), distributed with \TeX{}Live. (November 2018)\\
+%  \TeX\ and \LaTeX\ package (by R.\,Moore), distributed with \TeX{}Live. (Nov. 2018)
 %  \url{https://ctan.org/pkg/colorprofiles}.
 %
-% \bibitem{PRISM}PRISM; Publishing Requirements for Industry Standard Metadata. 
+% \bibitem{PRISM}PRISM; Publishing Requirements for Industry Standard Metadata.
 %  PRISM Metadata Initiative; Idealliance Working Group.
 % \url{http://www.idealliance.org/specifications/prism-metadata-initiative/prism}
 %
@@ -2541,16 +2644,24 @@
 % Generation of PDF/X- and PDF/A-compliant PDFs with \pdftex --- \texttt{pdfx.sty}.
 % TUGboat Vol.\,36, No.\,2; TUG 2015 Conference Proceedings. \TeX\ Users Group, 2015; pp.\,136--142.
 %
-% \bibitem{veraPDF} veraPDF. Industry Supported PDF/A Validation. 
-% Software, dual-licensed under the GNU General Public License v3 or later (GPLv3+) 
+% \bibitem{tagpdf} |tagpdf| -- Tools for experimenting with tagging using pdf\LaTeX\ and Lua\LaTeX.
+% Ulrike Fischer. Available via CTAN repository.
+% \url{https://ctan.org/pkg/tagpdf}.
+%
+% \bibitem{tpdf} |tpdf|; Ross Moore. Unpublished.
+% \LaTeX\ package and macro suite for producing `real-world' standards-conforming PDF documents.
+% Examples available at \url{http://maths.mq.edu.au/~ross/TaggedPDF/}.
+%
+% \bibitem{veraPDF} veraPDF. Industry Supported PDF/A Validation.
+% Software, dual-licensed under the GNU General Public License v3 or later (GPLv3+)
 % and Mozilla Public License v2 or later (MPLv2+). \url{https://verapdf.org}.
 % Wiki: \url{https://github.com/veraPDF/veraPDF-validation-profiles/wiki}
 %
-% \bibitem{RDF} World Wide Web Consortium (W3C); 
+% \bibitem{RDF} World Wide Web Consortium (W3C);
 % Resource Description Format: RDF 1.1 XML Syntax. W3C Recommendation. (February 2014)
 % \url{https://www.w3.org/TR/rdf-syntax-grammar/}.
-% 
-% \bibitem{wikiPDF}Wikipedia; 
+%
+% \bibitem{wikiPDF}Wikipedia;
 % PDF/A: \url{https://en.wikipedia.org/wiki/PDF/A}\newline
 % PDF/E: \url{https://en.wikipedia.org/wiki/PDF/E}\newline
 % PDF/VT: \url{https://en.wikipedia.org/wiki/PDF/VT}\newline
@@ -2560,7 +2671,7 @@
 % \end{thebibliography}
 % }\goodbreak
 % \section[Implementation]{Implementation}
-% 
+%
 % \iffalse
 %<*package>
 % \fi \hfuzz=2.5pt%
@@ -2575,7 +2686,7 @@
 }{}%
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{pdfx}
-  [2019/02/27 v1.6.3 PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
+ [2024/06/24 v1.6.5f PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
 
 \newif\ifpdfx at noBOM \pdfx at noBOMfalse   % use a BOM in the XMP packet
 \newif\ifpdfx at x \pdfx at xfalse   % PDF/X mode
@@ -2594,13 +2705,28 @@
 \def\xmp at ReleaseDate{2005}     % 2001 for PDF/X-1, 2005 for PDF/A-1,
                                % 2010 for PDF/A-2, 2012 for PDF/A-3.
 
+%%  with Beamer  pgf  will have written Resource objects already
+\newif\ifpdfx at luacheck@needed
+\@ifpackageloaded{pgfcore}{\pdfx at luacheck@neededtrue}{}
+%%  thanks to Ryutaroh Matsumoto for reporting this issue
+
 \newcount\pdfx at minorversion
+\newcount\pdfx at majorversion
+\expandafter\ifx\csname pdfmajorversion\endcsname\relax
+%% RRM: 20240614  LuaLaTeX may not have this defined
+ \newcount\pdfmajorversion
+ \pdfmajorversion=1\relax
+\fi
 \expandafter\ifx\csname pdfminorversion\endcsname\relax
-\else
- \global\pdfx at minorversion=\the\pdfminorversion
+%% RRM: 20240614  this could be set in luatex85 package
+ \newcount\pdfminorversion
+ \pdfminorversion=3\relax
 \fi
+%% options can change these from the defaults
+\global\pdfx at majorversion=\the\pdfmajorversion
+\global\pdfx at minorversion=\the\pdfminorversion
 
-\def\pdfx at ErrorWarning#1#2#3#4{%
+\def\pdfx at ErrorWarning #1#2#3#4{%
  \ifpdfx at noerr \PackageWarning{pdfx}{#1.^^J  #2#3.^^J}%
  \else \PackageError{pdfx}{#1}{#2#4.^^J
     Use option 'noerr' to avoid this message.^^J}%
@@ -2781,6 +2907,9 @@
 \DeclareOption{pdf15}{\global\pdfx at minorversion=5 }%  2005  Acrobat 6
 \DeclareOption{pdf16}{\global\pdfx at minorversion=6 }%  2006  Acrobat 7 (ISBN 0-321-30474-8)
 \DeclareOption{pdf17}{\global\pdfx at minorversion=7 }%  2008  ISO 32000-1:2008
+\DeclareOption{pdf20}{%  2020  ISO 32000-2:2020
+ \global\pdfx at majorversion=2 \relax
+ \global\pdfx at minorversion=0 }%
 
 %% inhibits writing the XMP byte-order marker
 \DeclareOption{noBOM}{\pdfx at noBOMtrue}
@@ -2845,6 +2974,13 @@
 \ExecuteOptions{noBOM,a-1b}
 \ProcessOptions
 
+\RequirePackage{ifluatex}
+\ifpdfx at luacheck@needed
+ \ifluatex
+  \RequirePackage{luatex85}
+ \fi
+\fi
+
 \ifpdfx at ua\ifpdfx at x\else
  \expandafter\if\xmp at Conformance A\else
  \pdfx at ErrorWarning{PDF/UA requires 'Tagged PDF' for any structure.^^J
@@ -2857,19 +2993,23 @@
 
 \expandafter\ifx\csname pdflastobj\endcsname\relax
 \else
- \ifnum\pdflastobj >\z@ % pdftex  has already written objects
+ \ifnum\pdflastobj >\z@ % pdf/luatex  has already written objects
+  %  e.g. by  pgfcore ,  called from Beamer or other class
   \ifnum\pdfx at minorversion=\pdfminorversion\else
    \PackageError{pdfx}%
     {^^J(pdfx)    Cannot change the \string\pdfminorversion^^J%
-     (pdfx)   PDF version remains at 1.\the\pdfminorversion.^^J%
-     (pdfx)   Use \string\pdfminorversion=\the\pdfx at minorversion\space 
+     (pdfx)   PDF version remains at \the\pdfmajorversion.\the\pdfminorversion.^^J%
+     (pdfx)   Use \string\pdfmajorversion=\the\pdfx at majorversion\space^^J%
+      and \string\pdfminorversion=\the\pdfx at minorversion\space
       before \string\documentclass}%
     {(pdfx)   Another package or document-class has written objects into the PDF.^^J%
-     (pdfx)   Hit return to continue with PDF version 1.\the\pdfminorversion.%
-    }%
+     (pdfx)   Hit return to continue with PDF version %
+       \the\pdfmajorversion.\the\pdfminorversion.}%
+   \global\pdfx at majorversion=\the\pdfmajorversion
    \global\pdfx at minorversion=\the\pdfminorversion
   \fi
  \else
+  \global\pdfmajorversion\pdfx at majorversion
   \global\pdfminorversion\pdfx at minorversion
  \fi
 \fi
@@ -2877,6 +3017,7 @@
 \expandafter\ifx\csname thepdfminorversion\endcsname\relax
  \expandafter\ifx\csname pdfminorversion\endcsname\relax
  \else
+  \xdef\thepdfmajorversion{\the\pdfmajorversion}
   \xdef\thepdfminorversion{\the\pdfminorversion}
 \fi\fi
 
@@ -2885,17 +3026,22 @@
  \def\pdf at minorversion@xetex=#1{\gdef\thepdfminorversion{#1}}%
  \let\pdfminorversion\pdf at minorversion@xetex
 \else
- \ifnum\pdfminorversion < 4\relax
-  \ifpdfx at x
-    % more testing needed with PDF/X
+ \ifnum\pdfmajorversion > 1\relax
+  \pdfminorversion=3\relax
+  %% else some JPG graphics with DCT encoding will fail
+ \else
+  \ifnum\pdfminorversion < 4\relax
+   \ifpdfx at x
+     % more testing needed with PDF/X
+   \else
+    \pdfminorversion=4\relax %  assumed for PDF/A ;  options may change this for  PDF/X
+    \gdef\thepdfminorversion{4}%
+   \fi
   \else
-   \pdfminorversion=4\relax %  assumed for PDF/A ;  options may change this for  PDF/X
-   \gdef\thepdfminorversion{4}%
+   \ifnum\pdfminorversion<\thepdfminorversion\relax
+    \global\pdfminorversion=\thepdfminorversion\relax
+   \fi
   \fi
- \else
-  \ifnum\pdfminorversion<\thepdfminorversion\relax
-   \global\pdfminorversion=\thepdfminorversion\relax
-  \fi
  \fi
 \fi
 \expandafter\ifx\csname pdfresetpageorigin\endcsname\relax\else
@@ -2902,7 +3048,8 @@
  \pdfresetpageorigin=0
 \fi
 
-\expandafter\ifx\csname pdfomitcharset\endcsname\relax\else
+\expandafter\ifx\csname pdfomitcharset\endcsname\relax
+\else
  \ifpdfx at omitcharset
   \pdfomitcharset = 1 %
   %%  do not create /Charset listings of font glyphs;
@@ -2940,8 +3087,10 @@
 
 \RequirePackage{iftex}
 \RequirePackage{ifpdf}
+%\expandafter\show\csname ifpdf\endcsname
 %% Support for pdfTeX primitives when using XeTeX:
 \RequirePackage{ifxetex}
+%\expandafter\show\csname ifpdf\endcsname
 \ifxetex
  \def\pdfx at pages@xetex#1{\special{pdf:put @pages <<#1>>}}
  \def\pdfx at pageattr@xetex#1{\special{pdf:put @thispage <<#1>>}}
@@ -2971,7 +3120,10 @@
  }%
  \RequirePackage{pdftexcmds}%
  \let\pdfx at mdfivesum\pdf at mdfivesum
- \let\pdfescapestring\pdf at escapestring
+% \let\pdfescapestring\pdf at escapestring
+ \long\def\pdf at escapestring@byte #1{%
+  \directlua {oberdiek.pdftexcmds.escapestring("\luaescapestring {#1}", "byte")}}%
+  %\let\pdf at escapestring\pdf at escapestring@byte
 \else
  \ifxetex
   \expandafter\ifx\csname mdfivesum\endcsname\relax
@@ -3021,6 +3173,13 @@
   \pdfgeninterwordspace=0 \relax
  \fi
  \begingroup
+  \expandafter\ifx\csname stockwidth\endcsname\relax\else
+   \ifdim\stockwidth=\z@ %% 20240528
+   \else
+   %% 20231023 support for memoir's stockwidth/height
+    \let\paperwidth\stockwidth
+    \let\paperheight\stockheight
+  \fi \fi
   \dimen0=0.996264009963\paperwidth\relax
   \edef\pdfx at mwidth{\strip at pt\dimen0}%
   \advance\dimen0 -25\p@
@@ -3049,7 +3208,7 @@
    \expandafter\immediate\pdfx at pageattr@xetex{\pdfx at everypage@xetex}}%
   \EveryShipout{%
    \expandafter\immediate\pdfx at pageattr@xetex{\pdfx at everypage@xetex}}%
- \else 
+ \else
    \EveryShipout{%
     \expandafter\ifx\expandafter\relax\the\pdfpageattr\relax
      \immediate\pdfpageattr\expandafter{\the\pdfpagesattr}%
@@ -3068,7 +3227,8 @@
 \else
  \ifnum\thepdfminorversion >3 \relax
   \expandafter\ifx\csname pdfsuppresswarningdupmap\endcsname\relax
-   \expandafter\ifx\csname pdfmapline\endcsname\relax\else
+   \expandafter\ifx\csname pdfmapline\endcsname\relax
+   \else
     \pdfmapline{+dummy-space <dummy-space.pfb}
    \fi
   \else
@@ -3098,16 +3258,46 @@
 \@namedef{M at L8U}{}%
 
 %% adjust to LaTeX's 2018 change to the default encoding
+\def\pdfx at utfencodingname{utf8}%
+\def\pdfx at RawInputEncoding{%
+% \begingroup
+%  \@tempcnta=0
+%  % print out the catcodes of chars < 32
+%  \loop
+%   \typeout{\the\@tempcnta: \expandafter\the\catcode\@tempcnta}%
+%   \advance\@tempcnta\@ne
+%   \ifnum\@tempcnta<32
+%  \repeat
+% \endgroup
+ \UseRawInputEncoding
+}
 \expandafter\ifx\csname inputencodingname\endcsname\relax
 \else
  \def\pdfx at restoreencoding#1{%
-   \@tempcnta=128
+   \@tempcnta=1\relax
    \loop
-    \catcode\@tempcnta=13
+%    \catcode\@tempcnta=13\relax
     \advance\@tempcnta\@ne
+   \ifnum\@tempcnta<8\relax
+   \repeat
+   \catcode11=13 \relax
+   \@tempcnta=14\relax
+   \loop
+%    \catcode\@tempcnta=13\relax
+    \advance\@tempcnta\@ne
+   \ifnum\@tempcnta<31 \relax
+   \repeat
+   \@tempcnta=128\relax
+   \loop
+%    \catcode\@tempcnta=13\relax
+    \advance\@tempcnta\@ne
    \ifnum\@tempcnta<256
    \repeat
-  \inputencoding{#1}%
+%   {\tracingall
+%  \ifx\inputencodingname\pdfx at utfencodingname\else
+   \let\inputencodingname\relax %% kill previous
+%  \fi
+  \inputencoding{#1}%}%
   \let\LastDeclaredEncoding\pdfx at LastDeclaredEncoding
   \let\DeclareFontEncoding@\pdfx at DeclareFontEncoding@
   \let\DeclareUnicodeCharacter\pdfx at DeclareUnicodeCharacter
@@ -3116,7 +3306,18 @@
   \let\pdfx at inputencodingname\inputencodingname
   \global\let\pdfx at DeclareUnicodeCharacter\DeclareUnicodeCharacter
   \global\let\pdfx at DeclareFontEncoding@\DeclareFontEncoding@
-  \UseRawInputEncoding
+% \@tempcnta=0
+% \loop
+%  \typeout{\the\@tempcnta: \expandafter\the\catcode\@tempcnta}%
+%% \expandafter\showthe\catcode\@tempcnta
+%  \advance\@tempcnta\@ne
+%  \ifnum\@tempcnta<32
+% \repeat
+%\show\UseRawInputEncoding
+%%   if the encoding is  utf8  then don't change it here – wrong!
+% \ifx\inputencodingname\pdfx at utfencodingname\else
+% \expandafter\expandafter
+ \expandafter\pdfx at RawInputEncoding %\fi
 \fi
 \InputIfFileExists{\pdfx at encodingfile}{}{}
 \expandafter\ifx\csname pdfx at inputencodingname\endcsname\relax
@@ -3243,6 +3444,10 @@
  \ifx\relax#1\relax\else\gdef\xmp at lang@Identifier{#1}\fi
  \def\afterxmp at parse{\let\Identifier\pdfx at extraIdentifier}%
  \xmp at parse{\global\let\xmp at Identifier\@this}}
+\newcommand{\pdfx at Nickname}[1][]{%
+ \ifx\relax#1\relax\else\gdef\xmp at lang@Nickname{#1}\fi
+% \def\afterxmp at parse{\let\Identifier\pdfx at extraNickname}%
+ \xmp at parse{\global\let\xmp at Nickname\@this}}
 \newcommand{\pdfx at Thumbnails}{%
  \def\afterxmp at parse{\let\Thumbnails\pdfx at extraThumbnails}%
  \xmp at parse{\global\let\xmp at Thumbnails\@this}}
@@ -3443,6 +3648,28 @@
  \xmp at parse{\global\let\xmp at extraIdentifier\@this}%
  }%
 
+%%  Nickname only supports a single usage, for  PDF/X
+%\newcommand{\pdfx at extraNickname}[1][]{%
+% \ifx\relax#1\relax
+%  \expandafter\expandafter\expandafter\gdef
+%   \expandafter\expandafter\expandafter\xmp at Nickname
+%    \expandafter\expandafter\expandafter{%
+%     \expandafter\xmp at Nickname\pdfx at insert@sep}%
+% \else
+%  \expandafter\expandafter\expandafter\gdef
+%   \expandafter\expandafter\expandafter\xmp at Nickname
+%    \expandafter\expandafter\expandafter{%
+%     \expandafter\xmp at Nickname\pdfx at insert@sep[#1]}%
+% \fi
+% \def\afterxmp at parse{%
+%  \expandafter\expandafter\expandafter\gdef
+%   \expandafter\expandafter\expandafter\xmp at Nickname
+%   \expandafter\expandafter\expandafter{%
+%    \expandafter\xmp at Nickname\xmp at extraNickname}%
+%   }%
+% \xmp at parse{\global\let\xmp at extraNickname\@this}%
+% }%
+
 \newcommand{\pdfx at extraThumbnails}[1][]{%
  \ifx\relax#1\relax
   \expandafter\expandafter\expandafter\gdef
@@ -3737,7 +3964,7 @@
  %\let\sep\pdfx at sep
 %% Note: '\ ', \&, \copyright are already predefined by hyperref.
 %% allow LICRs to expand into PDF strings
- \def\cf at encoding{PU}% 
+ \def\cf at encoding{PU}%
  \def\9##1{\ifcase##1\string\0\or\string\1\or\string\2\or\string\3\fi}%
  \def\8{\string\00}%
  \def\0{\string\0}\def\1{\string\1}\def\2{\string\2}\def\3{\string\3}%
@@ -3798,6 +4025,9 @@
 %%----------------------------------------------------------------------
 %%  Alternative way to get the CreationDate using Lua  for XeTeX
 \ifdefined\pdfcreationdate\else
+  \ifdefined\creationdate %% added to XeTeX in 2019
+   \let\pdfcreationdate\creationdate
+  \else
  \begingroup  %% ensure correct catcodes, not done by \dospecials
  \catcode`\:=12 \catcode`\.=12
 \begin{filecontents*}{creationdate.lua}
@@ -3833,7 +4063,7 @@
    \def\noexpand\pdfcreationdate{\string D:20181028075445+10'00'}}%
    \x
  \fi
-\fi
+\fi \fi
 
 %%----------------------------------------------------------------------
 \def\pdfx at findUUID#1{\edef\pdfx at tmpstring{\pdfx at mdfivesum{#1}}
@@ -4004,7 +4234,7 @@
    \fi\fi
  }%
 \fi\fi
-\hypersetup{pdfencoding=auto}%  unicode
+%\hypersetup{pdfencoding=auto}%  2019-12-08   No; this writes 8-bit bookmarks.
 \expandafter\ifx\csname KV at Hyp@psdextra\endcsname\relax\else
  \hypersetup{psdextra}
 \fi
@@ -4370,7 +4600,7 @@
 
 %% ----------------------------------------------------------------------
 \begingroup
- \catcode`\_ 12 \catcode`\" 12 \catcode`\' 12 
+ \catcode`\_ 12 \catcode`\" 12 \catcode`\' 12
  \catcode`\< 12 \catcode`\> 12 \catcode`\/ 12 \catcode`\[ 12 \catcode`\] 12
  \edef\@pctchar{\expandafter\@gobble\string\%}
  \edef\@bchar{\expandafter\@gobble\string\\}
@@ -4733,6 +4963,7 @@
 \fi
 }% end of \catcode
 
+
 %% ----------------------------------------------------------------------
 %% \pdfx at topdfstring\toka\tokb: Convert the string in \tokb to a format
 %% appropriate for PDF /Info strings, i.e., PDFDoc encoding or UTF-16
@@ -4739,8 +4970,9 @@
 %% encoding, and store the result in \toka As a special case, if \tokb
 %% is \@empty, set \toka to \@empty.
 
-\def\pdfx at topdfstring#1#2{%
- \ifx#2\@empty
+\RequirePackage{stringenc}% prevent it loading later inside a group
+\def\pdfx at topdfstring #1#2{%
+ \ifx #2\@empty
   \global\let#1\empty
  \else
   \begingroup
@@ -4747,8 +4979,8 @@
    \ifluatex\else\ifxetex\else
     \inputencoding{utf8}%
    \fi\fi
-   \hypersetup{pdfencoding=auto}%
-   \pdfstringdef#1{#2}%
+   \@ifl at t@r\fmtversion{2022/06/01}{}{\hypersetup{pdfencoding=auto}}%
+   \pdfstringdef #1{#2}%
   \endgroup
  \fi
 }
@@ -4858,7 +5090,7 @@
 \RequirePackage{stringenc}%
 \begingroup
  \catcode`\| 0
- \catcode `\\ 12 
+ \catcode `\\ 12
  |gdef |pdfx at parsebackslash#1{%
   |begingroup
    |def |pdfx at parsemacro{#1}%
@@ -4873,7 +5105,7 @@
    |edef |pdfx at parseout{|pdfx at parseout \\}%
    |def |next{|pdfx at doparsebackslash#2|pdfx at endparse}%
   |fi |next
-  } 
+  }
 |endgroup
 \def\pdfx at parseend{%
  \edef\next{\endgroup\def\expandafter\noexpand\pdfx at parsemacro{\pdfx at parseout}}%
@@ -5018,7 +5250,7 @@
  \spacefactor\accent at spacefactor
 }
 %% same for named accents in math-mode
-\def\pdfx at mathaccentV#1#2#3#4#5{%
+\def\pdfx at mathaccentV #1#2#3#4#5{%
  #5{\mathsurround=\z@\relax
   \everymath{}%
   \mathchoice
@@ -5027,12 +5259,74 @@
    {\setbox\z@\hbox{$\scriptstyle #5$}\kern-\wd\z@}%
    {\setbox\z@\hbox{$\scriptscriptstyle #5$}\kern-\wd\z@}%
  }%
+% \pdfx at AMS@mathaccentV{#1}{#2}{#3}{#4}{#5}%
  \AMS at mathaccentV{#1}{#2}{#3}{#4}{\phantom{#5}}%
 }
+
+%%%  the original AMS coding:
+%%\mathaccentV=macro: #1#2#3#4#5->\ifmmode
+%% \gdef \macc at tmp {\macc at depth \@ne }%
+%% \setbox \z@ \hbox {\let\mathaccentV \macc at test
+%% \let \use at mathgroup \@gobbletwo
+%% \let \select at group \@gobblethree \frozen at everymath {}$#5$}\macc at tmp
+%% \ifnum \macc at depth =\@ne
+%%  \global \let \macc at nucleus \@empty
+%%  \mathaccent "\accentclass@
+%%  \else \@xp \macc at nested
+%%  \fi #2#3#4{#5}\macc at nucleus
+%% \else
+%%  \@xp \nonmatherr@ \csname #1\endcsname \fi .
+
+\def\pdfx at AMS@mathaccentV #1#2#3#4#5{%
+ \ifmmode
+  \gdef \macc at tmp {\macc at depth \@ne }%
+  \setbox \z@ \hbox {\let\mathaccentV \macc at test
+  \let \use at mathgroup \@gobbletwo
+  \let \select at group \@gobblethree \frozen at everymath {}$\phantom{#5}$}\macc at tmp
+  \ifnum \macc at depth =\@ne
+   \global \let \macc at nucleus \@empty
+   \mathaccent "\accentclass@
+  \else \@xp \macc at nested
+  \fi #2#3#4{#5}\macc at nucleus
+ \else
+  \@xp \nonmatherr@ \csname #1\endcsname
+ \fi
+}
+
+
+%%  code supplied by  Yuwsuke Kieda,  7 May 2019 :
+%%   https://gist.github.com/yuw/a31936370647d0044eeb4e47f3ae913f
+%%
+\@ifpackageloaded{amsmath}{%
+ \def\pdfx at macc@a #1#2{%
+  \begingroup
+   \let\macc at style#1\relax
+   \def\macc at palette ##1{##1\macc at style}%
+   \advance\macc at depth\m at ne
+   \ifnum\macc at depth=\z@
+    \gdef\macc at nucleus{\phantom{#2}}%% <<<   here
+    \setbox\z@\hbox{$#1#2\@empty{}\macc at skewchar$}%
+    \setbox\tw@\hbox{$#1#2\@empty\macc at skewchar$}%
+    \dimen@\tw@\wd\tw@ \advance\dimen at -\tw@\wd\z@
+    \xdef\macc at kerna{\the\dimen@\relax}%
+    \setbox4\hbox{$#1#2\acc at check\@empty$}%
+    \global\setbox\@ne\hbox to\wd4{}%
+    \ht\@ne\ht4 \dp\@ne\dp4
+    \xdef\macc at kernb{\the\wd4\relax}%
+    \mathaccent\macc at code{\box\@ne\kern\macc at kerna}%
+   \else
+     \mathaccent\macc at code{\let\macc at adjust\@empty #1#2\@empty}%
+     \macc at adjust
+   \fi
+  \endgroup
+ }}\relax
+%
 \AtBeginDocument{%
  \@ifpackageloaded{amsmath}{%
   \let\AMS at mathaccentV\mathaccentV
-  \let\mathaccentV\pdfx at mathaccentV}%
+%  \let\mathaccentV\pdfx at mathaccentV
+%  \let\macc at a\pdfx at macc@a
+  }%
 }%
 
 %% How to support XeTeX here ?
@@ -5284,10 +5578,25 @@
 %%  it should be loaded outside the grouping, else  biblatex  may barf
 %%
 \RequirePackage{ifthen}
+
+%%  2024-04-05: from July 2024 LaTeX will not allow packages to load
+%%              within a grouping, so reorganise a bit.
+%%
+%% override the \ifpdf  check of  xmpincl  package, inside the grouping
+%% after saving its current value:
+\let\pdfx at ifpdf\ifpdf
+\pdftrue
+%% now load the packages, then enter the grouping:
+\RequirePackage{xmpincl}
+%%
 \begingroup
-%% override the \ifpdf  check of  xmpincl  package, inside the grouping
- \pdftrue
- \RequirePackage{xmpincl}
+%%% 20240405 revert the value of \ifpdf ...
+\pdfx at ifpdf
+\else
+ %% 20240624 ... outside the grouping
+ \aftergroup\pdffalse
+\fi
+
 %% combine coding from  xmpincl  and  hyperxml to support XeTeX
 \def\pdfx at xmpincl@xetex#1{%
  \IfFileExists{#1.xmp}{%
@@ -5343,6 +5652,13 @@
 
 %%----------------------------------------------------------------------
 \begingroup
+%% 20210706  we need a pointer to unexpandable \par
+ \expandafter\ifx\csname tex_par:D\endcsname \relax
+  \let\pdfx at par\par
+ \else
+%%  using LaTeX 2021-06 or later
+  \expandafter\let\expandafter\pdfx at par\csname tex_par:D\endcsname
+ \fi
  \ifpdfx at x
   \ifpdfx at vt
    \def\xmp at template{pdfvt}%
@@ -5396,9 +5712,11 @@
 %% beware 128 space characters -- for padding end of XMP packet
  \gdef\paddingline{                                                                                                                                }%
  \typeout{Using XMP template file: \xmp at template.xmp}%
+ %% 20210706   ensure  \par  is unexpandable
+ \let\par\pdfx at par
  \includexmp{\xmp at template}%
 \endgroup
-
+%%%
 %%
 %% revert active characters to previous encoding
 %%
@@ -5462,13 +5780,27 @@
 %%
 %% controls the color model and conversions with  xcolor  package
 %%
+\def\pdfx at selectcolormodel@doing #1{%% Warning
+ \PackageWarning{pdfx}{Setting all color commands to #1,^^J%
+   consistent with the Color Model for PDF/%
+  \ifpdfx at x X \else \ifpdfx at e E \else A \fi\fi}%
+ }%% 20240528  inhibit any changes
+\def\pdfx at selectcolormodel@done #1{%% Warning
+ \PackageWarning{pdfx}{Color Model already set for PDF/%
+  \ifpdfx at x X\else \ifpdfx at e E\else A\fi\fi,^^Jcannot change to #1 }%
+ }%% 20240528  inhibit any changes
+%%
 \ifpdfx at cmyk
  %
  % this will have been done already for PDF/X
  %
  \PassOptionsToPackage{cmyk,hyperref}{xcolor}
- \def\pdfx at handlexcolor{\def\@@mod{cmyk}\selectcolormodel{cmyk}%
-   \convertcolorsUtrue\convertcolorsDtrue}
+ \def\pdfx at handlexcolor{\def\@@mod{cmyk}%
+   \pdfx at selectcolormodel@doing{cmyk}%
+   \selectcolormodel{cmyk}%
+   \convertcolorsUtrue\convertcolorsDtrue
+   \let\selectcolormodel\pdfx at selectcolormodel@done
+   }
  \ifpdfx at x
  \else
 %%  \AtBeginDocument{%
@@ -5491,8 +5823,12 @@
  \fi
 \else
  \PassOptionsToPackage{rgb,hyperref}{xcolor}
- \def\pdfx at handlexcolor{\def\@@mod{rgb}\selectcolormodel{rgb}%
-   \convertcolorsUtrue\convertcolorsDtrue}
+ \def\pdfx at handlexcolor{\def\@@mod{rgb}%
+   \pdfx at selectcolormodel@doing{rgb}%
+   \selectcolormodel{rgb}%
+   \convertcolorsUtrue\convertcolorsDtrue
+   \let\selectcolormodel\pdfx at selectcolormodel@done
+   }
 \fi
 \@ifpackageloaded{xcolor}{\pdfx at handlexcolor
  \ifpdfx at cmyk\else\color{black}\fi}{%
@@ -5628,7 +5964,9 @@
 %</package>
 % \fi
 % \Finale
-% \let\newpage\relax
 % \PrintIndex
+% \let\realGlossaryParms\GlossaryParms \let\realsubitem\subitem 
+% \long\def\GlossaryParms{\realGlossaryParms \def\hdpindex ##1##2{}%
+%  \long\def\subitem ##1:\ ##2\pfill{\par\hangindent 30pt\hspace*{15pt}##2\hfil}}%
 % \PrintChanges
 % \endinput

Modified: trunk/Master/texmf-dist/source/latex/pdfx/pdfx.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/pdfx/pdfx.ins	2024-07-01 20:49:35 UTC (rev 71680)
+++ trunk/Master/texmf-dist/source/latex/pdfx/pdfx.ins	2024-07-01 20:49:52 UTC (rev 71681)
@@ -4,9 +4,9 @@
 
 \preamble
                                                                
- Copyright (c) 2019, CV Radhakrishnan <cvr at river-valley.org>,
+ Copyright (c) 2019-2024, CV Radhakrishnan <cvr at river-valley.org>,
    Han The Thanh <thanh at river-valley.org>,
-   Ross Moore <ross.moore at mq.edu.au>,
+   Ross Moore <ozross at icloud.com> - primary contact,
    Peter Selinger <selinger at mathstat.dal.ca>
                      
  This file may be distributed and/or modified under the conditions

Modified: trunk/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pdfx/pdfx.sty	2024-07-01 20:49:35 UTC (rev 71680)
+++ trunk/Master/texmf-dist/tex/latex/pdfx/pdfx.sty	2024-07-01 20:49:52 UTC (rev 71681)
@@ -6,9 +6,9 @@
 %%
 %% pdfx.dtx  (with options: `package')
 %% 
-%%  Copyright (c) 2019, CV Radhakrishnan <cvr at river-valley.org>,
+%%  Copyright (c) 2019-2024, CV Radhakrishnan <cvr at river-valley.org>,
 %%    Han The Thanh <thanh at river-valley.org>,
-%%    Ross Moore <ross.moore at mq.edu.au>,
+%%    Ross Moore <ozross at icloud.com> - primary contact,
 %%    Peter Selinger <selinger at mathstat.dal.ca>
 %% 
 %%  This file may be distributed and/or modified under the conditions
@@ -31,7 +31,7 @@
 }{}%
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{pdfx}
-  [2019/02/27 v1.6.3 PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
+ [2024/06/24 v1.6.5f PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
 
 \newif\ifpdfx at noBOM \pdfx at noBOMfalse   % use a BOM in the XMP packet
 \newif\ifpdfx at x \pdfx at xfalse   % PDF/X mode
@@ -50,13 +50,28 @@
 \def\xmp at ReleaseDate{2005}     % 2001 for PDF/X-1, 2005 for PDF/A-1,
                                % 2010 for PDF/A-2, 2012 for PDF/A-3.
 
+%%  with Beamer  pgf  will have written Resource objects already
+\newif\ifpdfx at luacheck@needed
+\@ifpackageloaded{pgfcore}{\pdfx at luacheck@neededtrue}{}
+%%  thanks to Ryutaroh Matsumoto for reporting this issue
+
 \newcount\pdfx at minorversion
+\newcount\pdfx at majorversion
+\expandafter\ifx\csname pdfmajorversion\endcsname\relax
+%% RRM: 20240614  LuaLaTeX may not have this defined
+ \newcount\pdfmajorversion
+ \pdfmajorversion=1\relax
+\fi
 \expandafter\ifx\csname pdfminorversion\endcsname\relax
-\else
- \global\pdfx at minorversion=\the\pdfminorversion
+%% RRM: 20240614  this could be set in luatex85 package
+ \newcount\pdfminorversion
+ \pdfminorversion=3\relax
 \fi
+%% options can change these from the defaults
+\global\pdfx at majorversion=\the\pdfmajorversion
+\global\pdfx at minorversion=\the\pdfminorversion
 
-\def\pdfx at ErrorWarning#1#2#3#4{%
+\def\pdfx at ErrorWarning #1#2#3#4{%
  \ifpdfx at noerr \PackageWarning{pdfx}{#1.^^J  #2#3.^^J}%
  \else \PackageError{pdfx}{#1}{#2#4.^^J
     Use option 'noerr' to avoid this message.^^J}%
@@ -237,6 +252,9 @@
 \DeclareOption{pdf15}{\global\pdfx at minorversion=5 }%  2005  Acrobat 6
 \DeclareOption{pdf16}{\global\pdfx at minorversion=6 }%  2006  Acrobat 7 (ISBN 0-321-30474-8)
 \DeclareOption{pdf17}{\global\pdfx at minorversion=7 }%  2008  ISO 32000-1:2008
+\DeclareOption{pdf20}{%  2020  ISO 32000-2:2020
+ \global\pdfx at majorversion=2 \relax
+ \global\pdfx at minorversion=0 }%
 
 %% inhibits writing the XMP byte-order marker
 \DeclareOption{noBOM}{\pdfx at noBOMtrue}
@@ -301,6 +319,13 @@
 \ExecuteOptions{noBOM,a-1b}
 \ProcessOptions
 
+\RequirePackage{ifluatex}
+\ifpdfx at luacheck@needed
+ \ifluatex
+  \RequirePackage{luatex85}
+ \fi
+\fi
+
 \ifpdfx at ua\ifpdfx at x\else
  \expandafter\if\xmp at Conformance A\else
  \pdfx at ErrorWarning{PDF/UA requires 'Tagged PDF' for any structure.^^J
@@ -313,19 +338,23 @@
 
 \expandafter\ifx\csname pdflastobj\endcsname\relax
 \else
- \ifnum\pdflastobj >\z@ % pdftex  has already written objects
+ \ifnum\pdflastobj >\z@ % pdf/luatex  has already written objects
+  %  e.g. by  pgfcore ,  called from Beamer or other class
   \ifnum\pdfx at minorversion=\pdfminorversion\else
    \PackageError{pdfx}%
     {^^J(pdfx)    Cannot change the \string\pdfminorversion^^J%
-     (pdfx)   PDF version remains at 1.\the\pdfminorversion.^^J%
-     (pdfx)   Use \string\pdfminorversion=\the\pdfx at minorversion\space
+     (pdfx)   PDF version remains at \the\pdfmajorversion.\the\pdfminorversion.^^J%
+     (pdfx)   Use \string\pdfmajorversion=\the\pdfx at majorversion\space^^J%
+      and \string\pdfminorversion=\the\pdfx at minorversion\space
       before \string\documentclass}%
     {(pdfx)   Another package or document-class has written objects into the PDF.^^J%
-     (pdfx)   Hit return to continue with PDF version 1.\the\pdfminorversion.%
-    }%
+     (pdfx)   Hit return to continue with PDF version %
+       \the\pdfmajorversion.\the\pdfminorversion.}%
+   \global\pdfx at majorversion=\the\pdfmajorversion
    \global\pdfx at minorversion=\the\pdfminorversion
   \fi
  \else
+  \global\pdfmajorversion\pdfx at majorversion
   \global\pdfminorversion\pdfx at minorversion
  \fi
 \fi
@@ -333,6 +362,7 @@
 \expandafter\ifx\csname thepdfminorversion\endcsname\relax
  \expandafter\ifx\csname pdfminorversion\endcsname\relax
  \else
+  \xdef\thepdfmajorversion{\the\pdfmajorversion}
   \xdef\thepdfminorversion{\the\pdfminorversion}
 \fi\fi
 
@@ -341,17 +371,22 @@
  \def\pdf at minorversion@xetex=#1{\gdef\thepdfminorversion{#1}}%
  \let\pdfminorversion\pdf at minorversion@xetex
 \else
- \ifnum\pdfminorversion < 4\relax
-  \ifpdfx at x
-    % more testing needed with PDF/X
+ \ifnum\pdfmajorversion > 1\relax
+  \pdfminorversion=3\relax
+  %% else some JPG graphics with DCT encoding will fail
+ \else
+  \ifnum\pdfminorversion < 4\relax
+   \ifpdfx at x
+     % more testing needed with PDF/X
+   \else
+    \pdfminorversion=4\relax %  assumed for PDF/A ;  options may change this for  PDF/X
+    \gdef\thepdfminorversion{4}%
+   \fi
   \else
-   \pdfminorversion=4\relax %  assumed for PDF/A ;  options may change this for  PDF/X
-   \gdef\thepdfminorversion{4}%
+   \ifnum\pdfminorversion<\thepdfminorversion\relax
+    \global\pdfminorversion=\thepdfminorversion\relax
+   \fi
   \fi
- \else
-  \ifnum\pdfminorversion<\thepdfminorversion\relax
-   \global\pdfminorversion=\thepdfminorversion\relax
-  \fi
  \fi
 \fi
 \expandafter\ifx\csname pdfresetpageorigin\endcsname\relax\else
@@ -358,7 +393,8 @@
  \pdfresetpageorigin=0
 \fi
 
-\expandafter\ifx\csname pdfomitcharset\endcsname\relax\else
+\expandafter\ifx\csname pdfomitcharset\endcsname\relax
+\else
  \ifpdfx at omitcharset
   \pdfomitcharset = 1 %
   %%  do not create /Charset listings of font glyphs;
@@ -427,7 +463,9 @@
  }%
  \RequirePackage{pdftexcmds}%
  \let\pdfx at mdfivesum\pdf at mdfivesum
- \let\pdfescapestring\pdf at escapestring
+ \long\def\pdf at escapestring@byte #1{%
+  \directlua {oberdiek.pdftexcmds.escapestring("\luaescapestring {#1}", "byte")}}%
+  %\let\pdf at escapestring\pdf at escapestring@byte
 \else
  \ifxetex
   \expandafter\ifx\csname mdfivesum\endcsname\relax
@@ -477,6 +515,13 @@
   \pdfgeninterwordspace=0 \relax
  \fi
  \begingroup
+  \expandafter\ifx\csname stockwidth\endcsname\relax\else
+   \ifdim\stockwidth=\z@ %% 20240528
+   \else
+   %% 20231023 support for memoir's stockwidth/height
+    \let\paperwidth\stockwidth
+    \let\paperheight\stockheight
+  \fi \fi
   \dimen0=0.996264009963\paperwidth\relax
   \edef\pdfx at mwidth{\strip at pt\dimen0}%
   \advance\dimen0 -25\p@
@@ -524,7 +569,8 @@
 \else
  \ifnum\thepdfminorversion >3 \relax
   \expandafter\ifx\csname pdfsuppresswarningdupmap\endcsname\relax
-   \expandafter\ifx\csname pdfmapline\endcsname\relax\else
+   \expandafter\ifx\csname pdfmapline\endcsname\relax
+   \else
     \pdfmapline{+dummy-space <dummy-space.pfb}
    \fi
   \else
@@ -554,16 +600,31 @@
 \@namedef{M at L8U}{}%
 
 %% adjust to LaTeX's 2018 change to the default encoding
+\def\pdfx at utfencodingname{utf8}%
+\def\pdfx at RawInputEncoding{%
+ \UseRawInputEncoding
+}
 \expandafter\ifx\csname inputencodingname\endcsname\relax
 \else
  \def\pdfx at restoreencoding#1{%
-   \@tempcnta=128
+   \@tempcnta=1\relax
    \loop
-    \catcode\@tempcnta=13
     \advance\@tempcnta\@ne
+   \ifnum\@tempcnta<8\relax
+   \repeat
+   \catcode11=13 \relax
+   \@tempcnta=14\relax
+   \loop
+    \advance\@tempcnta\@ne
+   \ifnum\@tempcnta<31 \relax
+   \repeat
+   \@tempcnta=128\relax
+   \loop
+    \advance\@tempcnta\@ne
    \ifnum\@tempcnta<256
    \repeat
-  \inputencoding{#1}%
+   \let\inputencodingname\relax %% kill previous
+  \inputencoding{#1}%}%
   \let\LastDeclaredEncoding\pdfx at LastDeclaredEncoding
   \let\DeclareFontEncoding@\pdfx at DeclareFontEncoding@
   \let\DeclareUnicodeCharacter\pdfx at DeclareUnicodeCharacter
@@ -572,7 +633,9 @@
   \let\pdfx at inputencodingname\inputencodingname
   \global\let\pdfx at DeclareUnicodeCharacter\DeclareUnicodeCharacter
   \global\let\pdfx at DeclareFontEncoding@\DeclareFontEncoding@
-  \UseRawInputEncoding
+%% \expandafter\showthe\catcode\@tempcnta
+%%   if the encoding is  utf8  then don't change it here – wrong!
+ \expandafter\pdfx at RawInputEncoding %\fi
 \fi
 \InputIfFileExists{\pdfx at encodingfile}{}{}
 \expandafter\ifx\csname pdfx at inputencodingname\endcsname\relax
@@ -699,6 +762,9 @@
  \ifx\relax#1\relax\else\gdef\xmp at lang@Identifier{#1}\fi
  \def\afterxmp at parse{\let\Identifier\pdfx at extraIdentifier}%
  \xmp at parse{\global\let\xmp at Identifier\@this}}
+\newcommand{\pdfx at Nickname}[1][]{%
+ \ifx\relax#1\relax\else\gdef\xmp at lang@Nickname{#1}\fi
+ \xmp at parse{\global\let\xmp at Nickname\@this}}
 \newcommand{\pdfx at Thumbnails}{%
  \def\afterxmp at parse{\let\Thumbnails\pdfx at extraThumbnails}%
  \xmp at parse{\global\let\xmp at Thumbnails\@this}}
@@ -899,6 +965,8 @@
  \xmp at parse{\global\let\xmp at extraIdentifier\@this}%
  }%
 
+%%  Nickname only supports a single usage, for  PDF/X
+
 \newcommand{\pdfx at extraThumbnails}[1][]{%
  \ifx\relax#1\relax
   \expandafter\expandafter\expandafter\gdef
@@ -1254,6 +1322,9 @@
 %%----------------------------------------------------------------------
 %%  Alternative way to get the CreationDate using Lua  for XeTeX
 \ifdefined\pdfcreationdate\else
+  \ifdefined\creationdate %% added to XeTeX in 2019
+   \let\pdfcreationdate\creationdate
+  \else
  \begingroup  %% ensure correct catcodes, not done by \dospecials
  \catcode`\:=12 \catcode`\.=12
 \begin{filecontents*}{creationdate.lua}
@@ -1289,7 +1360,7 @@
    \def\noexpand\pdfcreationdate{\string D:20181028075445+10'00'}}%
    \x
  \fi
-\fi
+\fi \fi
 
 %%----------------------------------------------------------------------
 \def\pdfx at findUUID#1{\edef\pdfx at tmpstring{\pdfx at mdfivesum{#1}}
@@ -1460,7 +1531,6 @@
    \fi\fi
  }%
 \fi\fi
-\hypersetup{pdfencoding=auto}%  unicode
 \expandafter\ifx\csname KV at Hyp@psdextra\endcsname\relax\else
  \hypersetup{psdextra}
 \fi
@@ -2195,8 +2265,9 @@
 %% encoding, and store the result in \toka As a special case, if \tokb
 %% is \@empty, set \toka to \@empty.
 
-\def\pdfx at topdfstring#1#2{%
- \ifx#2\@empty
+\RequirePackage{stringenc}% prevent it loading later inside a group
+\def\pdfx at topdfstring #1#2{%
+ \ifx #2\@empty
   \global\let#1\empty
  \else
   \begingroup
@@ -2203,8 +2274,8 @@
    \ifluatex\else\ifxetex\else
     \inputencoding{utf8}%
    \fi\fi
-   \hypersetup{pdfencoding=auto}%
-   \pdfstringdef#1{#2}%
+   \@ifl at t@r\fmtversion{2022/06/01}{}{\hypersetup{pdfencoding=auto}}%
+   \pdfstringdef #1{#2}%
   \endgroup
  \fi
 }
@@ -2474,7 +2545,7 @@
  \spacefactor\accent at spacefactor
 }
 %% same for named accents in math-mode
-\def\pdfx at mathaccentV#1#2#3#4#5{%
+\def\pdfx at mathaccentV #1#2#3#4#5{%
  #5{\mathsurround=\z@\relax
   \everymath{}%
   \mathchoice
@@ -2485,10 +2556,67 @@
  }%
  \AMS at mathaccentV{#1}{#2}{#3}{#4}{\phantom{#5}}%
 }
+
+%%%  the original AMS coding:
+%%\mathaccentV=macro: #1#2#3#4#5->\ifmmode
+%% \gdef \macc at tmp {\macc at depth \@ne }%
+%% \setbox \z@ \hbox {\let\mathaccentV \macc at test
+%% \let \use at mathgroup \@gobbletwo
+%% \let \select at group \@gobblethree \frozen at everymath {}$#5$}\macc at tmp
+%% \ifnum \macc at depth =\@ne
+%%  \global \let \macc at nucleus \@empty
+%%  \mathaccent "\accentclass@
+%%  \else \@xp \macc at nested
+%%  \fi #2#3#4{#5}\macc at nucleus
+%% \else
+%%  \@xp \nonmatherr@ \csname #1\endcsname \fi .
+
+\def\pdfx at AMS@mathaccentV #1#2#3#4#5{%
+ \ifmmode
+  \gdef \macc at tmp {\macc at depth \@ne }%
+  \setbox \z@ \hbox {\let\mathaccentV \macc at test
+  \let \use at mathgroup \@gobbletwo
+  \let \select at group \@gobblethree \frozen at everymath {}$\phantom{#5}$}\macc at tmp
+  \ifnum \macc at depth =\@ne
+   \global \let \macc at nucleus \@empty
+   \mathaccent "\accentclass@
+  \else \@xp \macc at nested
+  \fi #2#3#4{#5}\macc at nucleus
+ \else
+  \@xp \nonmatherr@ \csname #1\endcsname
+ \fi
+}
+
+%%  code supplied by  Yuwsuke Kieda,  7 May 2019 :
+%%   https://gist.github.com/yuw/a31936370647d0044eeb4e47f3ae913f
+%%
+\@ifpackageloaded{amsmath}{%
+ \def\pdfx at macc@a #1#2{%
+  \begingroup
+   \let\macc at style#1\relax
+   \def\macc at palette ##1{##1\macc at style}%
+   \advance\macc at depth\m at ne
+   \ifnum\macc at depth=\z@
+    \gdef\macc at nucleus{\phantom{#2}}%% <<<   here
+    \setbox\z@\hbox{$#1#2\@empty{}\macc at skewchar$}%
+    \setbox\tw@\hbox{$#1#2\@empty\macc at skewchar$}%
+    \dimen@\tw@\wd\tw@ \advance\dimen at -\tw@\wd\z@
+    \xdef\macc at kerna{\the\dimen@\relax}%
+    \setbox4\hbox{$#1#2\acc at check\@empty$}%
+    \global\setbox\@ne\hbox to\wd4{}%
+    \ht\@ne\ht4 \dp\@ne\dp4
+    \xdef\macc at kernb{\the\wd4\relax}%
+    \mathaccent\macc at code{\box\@ne\kern\macc at kerna}%
+   \else
+     \mathaccent\macc at code{\let\macc at adjust\@empty #1#2\@empty}%
+     \macc at adjust
+   \fi
+  \endgroup
+ }}\relax
 \AtBeginDocument{%
  \@ifpackageloaded{amsmath}{%
   \let\AMS at mathaccentV\mathaccentV
-  \let\mathaccentV\pdfx at mathaccentV}%
+  }%
 }%
 
 %% How to support XeTeX here ?
@@ -2740,10 +2868,25 @@
 %%  it should be loaded outside the grouping, else  biblatex  may barf
 %%
 \RequirePackage{ifthen}
+
+%%  2024-04-05: from July 2024 LaTeX will not allow packages to load
+%%              within a grouping, so reorganise a bit.
+%%
+%% override the \ifpdf  check of  xmpincl  package, inside the grouping
+%% after saving its current value:
+\let\pdfx at ifpdf\ifpdf
+\pdftrue
+%% now load the packages, then enter the grouping:
+\RequirePackage{xmpincl}
+%%
 \begingroup
-%% override the \ifpdf  check of  xmpincl  package, inside the grouping
- \pdftrue
- \RequirePackage{xmpincl}
+%%% 20240405 revert the value of \ifpdf ...
+\pdfx at ifpdf
+\else
+ %% 20240624 ... outside the grouping
+ \aftergroup\pdffalse
+\fi
+
 %% combine coding from  xmpincl  and  hyperxml to support XeTeX
 \def\pdfx at xmpincl@xetex#1{%
  \IfFileExists{#1.xmp}{%
@@ -2799,6 +2942,13 @@
 
 %%----------------------------------------------------------------------
 \begingroup
+%% 20210706  we need a pointer to unexpandable \par
+ \expandafter\ifx\csname tex_par:D\endcsname \relax
+  \let\pdfx at par\par
+ \else
+%%  using LaTeX 2021-06 or later
+  \expandafter\let\expandafter\pdfx at par\csname tex_par:D\endcsname
+ \fi
  \ifpdfx at x
   \ifpdfx at vt
    \def\xmp at template{pdfvt}%
@@ -2852,9 +3002,11 @@
 %% beware 128 space characters -- for padding end of XMP packet
  \gdef\paddingline{                                                                                                                                }%
  \typeout{Using XMP template file: \xmp at template.xmp}%
+ %% 20210706   ensure  \par  is unexpandable
+ \let\par\pdfx at par
  \includexmp{\xmp at template}%
 \endgroup
-
+%%%
 %%
 %% revert active characters to previous encoding
 %%
@@ -2918,13 +3070,27 @@
 %%
 %% controls the color model and conversions with  xcolor  package
 %%
+\def\pdfx at selectcolormodel@doing #1{%% Warning
+ \PackageWarning{pdfx}{Setting all color commands to #1,^^J%
+   consistent with the Color Model for PDF/%
+  \ifpdfx at x X \else \ifpdfx at e E \else A \fi\fi}%
+ }%% 20240528  inhibit any changes
+\def\pdfx at selectcolormodel@done #1{%% Warning
+ \PackageWarning{pdfx}{Color Model already set for PDF/%
+  \ifpdfx at x X\else \ifpdfx at e E\else A\fi\fi,^^Jcannot change to #1 }%
+ }%% 20240528  inhibit any changes
+%%
 \ifpdfx at cmyk
  %
  % this will have been done already for PDF/X
  %
  \PassOptionsToPackage{cmyk,hyperref}{xcolor}
- \def\pdfx at handlexcolor{\def\@@mod{cmyk}\selectcolormodel{cmyk}%
-   \convertcolorsUtrue\convertcolorsDtrue}
+ \def\pdfx at handlexcolor{\def\@@mod{cmyk}%
+   \pdfx at selectcolormodel@doing{cmyk}%
+   \selectcolormodel{cmyk}%
+   \convertcolorsUtrue\convertcolorsDtrue
+   \let\selectcolormodel\pdfx at selectcolormodel@done
+   }
  \ifpdfx at x
  \else
 %%  \AtBeginDocument{%
@@ -2947,8 +3113,12 @@
  \fi
 \else
  \PassOptionsToPackage{rgb,hyperref}{xcolor}
- \def\pdfx at handlexcolor{\def\@@mod{rgb}\selectcolormodel{rgb}%
-   \convertcolorsUtrue\convertcolorsDtrue}
+ \def\pdfx at handlexcolor{\def\@@mod{rgb}%
+   \pdfx at selectcolormodel@doing{rgb}%
+   \selectcolormodel{rgb}%
+   \convertcolorsUtrue\convertcolorsDtrue
+   \let\selectcolormodel\pdfx at selectcolormodel@done
+   }
 \fi
 \@ifpackageloaded{xcolor}{\pdfx at handlexcolor
  \ifpdfx at cmyk\else\color{black}\fi}{%



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