summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hyperxmp
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/hyperxmp')
-rw-r--r--macros/latex/contrib/hyperxmp/README2
-rw-r--r--macros/latex/contrib/hyperxmp/einstein-xmp.tex1
-rwxr-xr-xmacros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl2
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.dtx294
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.ins4
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.pdfbin1555235 -> 1272020 bytes
6 files changed, 178 insertions, 125 deletions
diff --git a/macros/latex/contrib/hyperxmp/README b/macros/latex/contrib/hyperxmp/README
index 93a2733315..22a0b26a9a 100644
--- a/macros/latex/contrib/hyperxmp/README
+++ b/macros/latex/contrib/hyperxmp/README
@@ -47,7 +47,7 @@ Building hyperxmp.pdf is a little more involved:
Copyright and license
=====================
-Copyright (C) 2011-2020 Scott Pakin
+Copyright (C) 2011-2023 Scott Pakin
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/macros/latex/contrib/hyperxmp/einstein-xmp.tex b/macros/latex/contrib/hyperxmp/einstein-xmp.tex
index 7fad01f38a..323937cc4a 100644
--- a/macros/latex/contrib/hyperxmp/einstein-xmp.tex
+++ b/macros/latex/contrib/hyperxmp/einstein-xmp.tex
@@ -21,7 +21,6 @@
xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"
xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"
xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"
- xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"
xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"
xmlns:jav="http://www.niso.org/schemas/jav/1.0/"
xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl b/macros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl
index 8d965a63f5..d3fb7e59b1 100755
--- a/macros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl
+++ b/macros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl
@@ -8,7 +8,7 @@ use warnings;
# hyperxmp-add-bytecount #
# Adds/updates byteCount specification in XMP packet in pdf file(s) #
# made by hyperxmp, with byteCount = file size. #
-# Copyright (C) 2020 John Collins <jcc8@psu.edu> #
+# Copyright (C) 2020-2022 John Collins <jcc8@psu.edu> #
# and Scott Pakin, <scott+hyxmp@pakin.org> #
# #
# This program may be distributed and/or modified under the conditions #
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.dtx b/macros/latex/contrib/hyperxmp/hyperxmp.dtx
index 4fad6b29d0..ea0d533429 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.dtx
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2011-2020 by Scott Pakin <scott+hyxmp@pakin.org>
+% Copyright (C) 2011-2023 by Scott Pakin <scott+hyxmp@pakin.org>
% --------------------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{hyperxmp}
%<*package>
- [2020/11/22 v5.9 Store hyperref metadata in XMP format]
+ [2022/10/16 v5.11 Store hyperref metadata in XMP format]
%</package>
%
%<*driver>
@@ -76,7 +76,7 @@
pdftitle={The hyperxmp package},
pdfsubject={LaTeX2e support for XMP metadata},
pdfkeywords={LaTeX, embedded metadata, XMP, PDF, copyright, license, comments},
- pdfcopyright={Copyright (C) 2011-2020, Scott Pakin},
+ pdfcopyright={Copyright (C) 2011-2023, Scott Pakin},
pdflicenseurl={http://www.latex-project.org/lppl/},
pdfcaptionwriter={Scott Pakin},
pdfcontactemail={scott+hyxmp@pakin.org},
@@ -98,25 +98,40 @@
bookmarksnumbered
}
+% Redefine \changes to properly sort v5.10 *after* v5.9.
+\makeatletter
+\let\orig@changes=\changes
+\def\discard@suffix#1\relax{}
+\def\pad@minor@ver v#1.#2\relax{%
+ \afterassignment\discard@suffix
+ \@tempcnta=#2\relax
+ \edef\new@change@ver{%
+ v#1.%
+ \ifnum\@tempcnta<10
+ 0#2
+ \else
+ #2
+ \fi
+ }%
+}
+\renewcommand{\changes}[2]{%
+ \pad@minor@ver#1\relax
+ \orig@changes{\new@change@ver=#1}{#2}%
+}
+\makeatother
+
\begin{document}
\DocInput{hyperxmp.dtx}
\Needspace{10\baselineskip}
- \phantomsection\addcontentsline{toc}{section}{Change History}
+ \renewcommand*{\glossaryname}{Change History}
\PrintChanges
- \makeatletter
- \let\orig@index@prologue=\index@prologue
- \def\index@prologue{%
- \phantomsection\addcontentsline{toc}{section}{Index}
- \orig@index@prologue
- }%
- \makeatother
\Needspace{12\baselineskip}
\PrintIndex
\end{document}
%</driver>
% \fi
%
-% \CheckSum{2836}
+% \CheckSum{2844}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -203,11 +218,12 @@
% \DoNotIndex{\@ifpackageloaded,\@ifundefined,\@nil,\@secondoftwo}
% \DoNotIndex{\@tempcnta,\@tempcntb,\MessageBreak,\advance,\afterassignment}
% \DoNotIndex{\aftergroup,\begin,\begingroup,\bgroup,\catcode,\csname,\def}
-% \DoNotIndex{\divide,\edef,\egroup,\else,\end,\endcsname,\endgroup}
-% \DoNotIndex{\expandafter,\fi,\futurelet,\g@addto@macro,\gdef,\global,\if}
-% \DoNotIndex{\ifcase,\ifnum,\ifx,\immediate,\lccode,\let,\loop,\lowercase}
-% \DoNotIndex{\multiply,\newcommand,\noexpand,\or,\relax,\repeat,\space}
-% \DoNotIndex{\string,\the,\toks,\uccode,\uppercase,\usepackage,\xdef}
+% \DoNotIndex{\divide,\do,\edef,\egroup,\else,\end,\endcsname,\endgroup}
+% \DoNotIndex{\expandafter,\fi,\futurelet,\g@addto@macro,\gdef,\global}
+% \DoNotIndex{\hbox,\if,\ifcase,\ifnum,\ifx,\immediate,\lccode,\let,\loop}
+% \DoNotIndex{\lowercase,\multiply,\newcommand,\noexpand,\or,\relax,\repeat}
+% \DoNotIndex{\space,\string,\the,\toks,\uccode,\uppercase,\usepackage}
+% \DoNotIndex{\xdef}
%
% ^^A Define a few logical styles.
% \DeclareRobustCommand{\term}[1]{#1\SortIndex{#1}{#1}}
@@ -1114,21 +1130,23 @@
% \item \pdfLaTeX
% \item \LuaLaTeX
% \item \XeLaTeX
-% \item \LaTeX~$+$ Dvipdfm
+% \item \LaTeX~$+$ \term{Dvipdfm}
+% \item \LaTeX~$+$ \Dvips~$+$ \term{Ghostscript}
% \item \LaTeX~$+$ \Dvips~$+$ Adobe Acrobat Distiller
% \end{itemize}
%
% \noindent
-% Unfortunately, the \LaTeX~$+$ \Dvips~$+$ \term{Ghostscript} path
-% doesn't work.
-% \href{http://bugs.ghostscript.com/show_bug.cgi?id=690066}{Ghostscript
-% bug report~\#690066}, closed with ``\textsc{wontfix}'' status on
-% 2012-05-28, explains that \term{Ghostscript} doesn't honor the
-% \pdfterm{Metadata} tag needed to inject a custom \acro{XMP} packet.
-% Instead, \term{Ghostscript} fabricates an \acro{XMP} packet of its own
-% based on the metadata it finds in the \acro{PDF} file's \pdfterm{Info}
-% dictionary (\pdfterm{Author}, \pdfterm{Title}, \pdfterm{Subject}, and
-% \pdfterm{Keywords}).
+% The \LaTeX~$+$ \Dvips~$+$ \term{Ghostscript} path stores the
+% \acro{XMP} packet in a compressed stream, which implies that a
+% \acro{PDF} reader is needed to access it. Ideally, \acro{XMP}
+% metadata should be stored uncompressed so it can be extracted as
+% ordinary text. Unfortunately, as of 2022-10-07, Ghostscript has no
+% plans to support uncompressed metadata streams
+% (\href{https://bugs.ghostscript.com/show_bug.cgi?id=705962}{Ghostscript
+% bug report~\#705962}). It is possible to leave \emph{all} streams
+% uncompressed by passing |-dCompressStreams=false| to \term{Ghostscript}
+% (e.g.,~via the \progname{ps2pdf} wrapper script), but this leads to
+% larger file sizes.
%
% \bigskip
%
@@ -1742,6 +1760,19 @@ sub mycmd {
% \subsection{Initial preparation}
% \label{sec:initial-prep}
%
+% \changes{v5.11}{2022/10/02}{Disable \protect\pkgname{hyperxmp} if
+% \LaTeX3 document metadata is available. Document metadata implies
+% the presence of PDF management, which completely breaks
+% \protect\pkgname{hyperxmp}}
+% \begin{macrocode}
+\IfDocumentMetadataTF{%
+ \PackageWarning
+ {hyperxmp}
+ {Disabling hyperxmp because it is incompatible with PDF management}
+}{}
+\IfDocumentMetadataTF{\endinput}{}
+% \end{macrocode}
+%
% \changes{v1.2}{2011/04/17}{Made the package compatible with \pkgname{ngerman}.
% Thanks to Tobias Mueller for the bug report.}
%
@@ -1772,12 +1803,19 @@ sub mycmd {
% \protect\tex\ back ends that provide it. Thanks to Nelson Posse
% Lago for pointing out why \protect\pkgname{atenddvi} is best avoided
% if possible}
-% \begin{macrocode}
-\@ifundefined{AtEndDocument}{%
- \RequirePackage{atenddvi}
- \let\hyxmp@at@end=\AtEndDvi
+% \changes{v5.11}{2022/10/16}{Use \protect\cs{AddToHook} when available.
+% This addresses a bug reported on \protect\TeX\ StackExchange by joHub
+% and solved by Ulrike Fischer}
+% \begin{macrocode}
+\@ifundefined{AddToHook}{%
+ \@ifundefined{AtEndDocument}{%
+ \RequirePackage{atenddvi}
+ \let\hyxmp@at@end=\AtEndDvi
+ }{%
+ \let\hyxmp@at@end=\AtEndDocument
+ }
}{%
- \let\hyxmp@at@end=\AtEndDocument
+ \def\hyxmp@at@end{\AddToHook{shipout/lastpage}}
}
% \end{macrocode}
% \end{macro}
@@ -2056,14 +2094,26 @@ sub mycmd {
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@hyxmp@count}
+% \changes{v5.11}{2022/10/02}{Added this macro to fix a bug with
+% \protect\optname{pdfapart}. Thanks to John H. Lienhard and
+% Kartik Singhal for their bug reports}
+% Define a temporary counter. The code previously used \cs{@tempcnta},
+% but this is no longer safe within \cs{pdfstringdef} as of more recent
+% versions of \pkgname{hyperref}.
+% \begin{macrocode}
+\newcount\@hyxmp@count
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@pdfapart}
% Prepare to store the \acro{PDF/A} part ID, which defaults to~``1''
% if \optname{pdfa} is passed to \pkgname{hyperref}.
% \begin{macrocode}
\def\@pdfapart{}
\define@key{Hyp}{pdfapart}{%
- \afterassignment\hyxmp@no@bad@parts\@tempcnta=0#1\relax
- \hyxmp@pdfstringdef\@pdfapart{\the\@tempcnta}%
+ \afterassignment\hyxmp@no@bad@parts\@hyxmp@count=0#1\relax
+ \hyxmp@pdfstringdef\@pdfapart{\the\@hyxmp@count}%
}
% \end{macrocode}
% \end{macro}
@@ -2085,8 +2135,8 @@ sub mycmd {
% \begin{macrocode}
\def\@pdfuapart{}
\define@key{Hyp}{pdfuapart}{%
- \afterassignment\hyxmp@no@bad@parts\@tempcnta=0#1\relax
- \hyxmp@pdfstringdef\@pdfuapart{\the\@tempcnta}%
+ \afterassignment\hyxmp@no@bad@parts\@hyxmp@count=0#1\relax
+ \hyxmp@pdfstringdef\@pdfuapart{\the\@hyxmp@count}%
}
% \end{macrocode}
% \end{macro}
@@ -2101,11 +2151,11 @@ sub mycmd {
%
% \begin{macro}{\hyxmp@set@pdfx@major@i}
% This is the first helper macro for |\hyxmp@set@pdfx@major|. It stores
-% the \acro{PDF/X} major version in |\@tempcnta|.
+% the \acro{PDF/X} major version in |\@hyxmp@count|.
% \begin{macrocode}
\def\hyxmp@set@pdfx@major@i PDF/X-{%
\afterassignment\hyxmp@set@pdfx@major@ii
- \@tempcnta=%
+ \@hyxmp@count=%
}
% \end{macrocode}
% \end{macro}
@@ -2113,12 +2163,12 @@ sub mycmd {
% \begin{macro}{\hyxmp@set@pdfx@major@ii}
% \begin{macro}{\hyxmp@pdfx@major}
% This is the second helper macro for |\hyxmp@set@pdfx@major|. It
-% copies the \acro{PDF/X} major version from |\@tempcnta| to
+% copies the \acro{PDF/X} major version from |\@hyxmp@count| to
% |\@hyxmp@pdfx@major| and discards the rest of the \acro{PDF/X}
% standard string.
% \begin{macrocode}
\def\hyxmp@set@pdfx@major@ii#1!{%
- \edef\hyxmp@pdfx@major{\the\@tempcnta}%
+ \edef\hyxmp@pdfx@major{\the\@hyxmp@count}%
}
% \end{macrocode}
% \end{macro}
@@ -2719,6 +2769,9 @@ sub mycmd {
%
% \begin{macro}{\hyxmp@ProcessKeyvalOptions}
% \changes{v2.0}{2012/09/05}{Added this macro}
+% \changes{v5.11}{2022/10/02}{Bug fix: Restore
+% \protect\cs{ProcessKeyvalOptions} after first use. Thanks to
+% Ulrike Fischer for the bug report}
% \begin{macro}{\ProcessKeyvalOptions}
% \changes{v2.0}{2012/09/05}{Added this macro}
% Redefine \pkgname{kvoptions}'s |\ProcessOptions| command to invoke
@@ -2726,6 +2779,7 @@ sub mycmd {
% \begin{macrocode}
\let\hyxmp@ProcessKeyvalOptions=\ProcessKeyvalOptions
\renewcommand*{\ProcessKeyvalOptions}{%
+ \global\let\ProcessKeyvalOptions=\hyxmp@ProcessKeyvalOptions
\hyxmp@redefine@Hyp
\hyxmp@ProcessKeyvalOptions
}
@@ -3183,17 +3237,6 @@ sub mycmd {
% \end{macrocode}
% \end{macro}
%
-% \pkgname{hyperxmp} can directly query the page count using
-% \LuaTeX\ features. When any other \TeX\ engine is used,
-% \pkgname{hyperxmp} employs the \pkgname{totpages} package to help
-% tally the total number of pages.
-% \begin{macrocode}
-\ifLuaTeX
-\else
- \RequirePackage{totpages}
-\fi
-% \end{macrocode}
-%
% Determine the size of the output file from the \emph{previous} run of
% \LuaLaTeX\@. This action has to be performed before the
% |\begin{document}| because at that point the size of the output file
@@ -3331,25 +3374,16 @@ end
% \begin{macrocode}
\newcommand*{\hyxmp@query@self}{%
% \end{macrocode}
-% \LuaTeX\ exposes via \texttt{status.total\_pages} the number of pages
-% written. We use this mechanism when available to assign
-% \cs{@pdfnumpages}. To finalize the page count we first issue a
-% \cs{clearpage}.
+% \LaTeX's |totalpages| counter tracks the number of pages written. We
+% use this mechanism to assign \cs{@pdfnumpages}.
+% \changes{v5.11}{2022/10/16}{Use \protect\cs{thetotalpages} to compute
+% the page count in an engine-independent manner. Thanks to Ulrike
+% Fischer for recommending this mechanism}
% \begin{macrocode}
- \ifLuaTeX
- \@if@def@and@nonempty{@pdfnumpages}{%
- }{%
- \clearpage
- \xdef\@pdfnumpages{\luadirect{tex.print(status.total_pages)}}%
- }%
- \else
-% \end{macrocode}
-% Without \LuaTeX\ we rely on the \pkgname{totpages} package to help
-% count the number of pages. This may require an additional run of
-% \LaTeX, but the user will be notified in that case.
-% \begin{macrocode}
- \pdfstringdef\@pdfnumpages{\ref*{TotPages}}%
- \fi
+ \@if@def@and@nonempty{@pdfnumpages}{%
+ }{%
+ \xdef\@pdfnumpages{\thetotalpages}%
+ }%
% \end{macrocode}
% If \optname{pdfbytes} hasn't been set, set it to the output file's size
% from the previous run.
@@ -4134,19 +4168,19 @@ end
% midnight or the timezone so we omit those fields when defining
% macro~|#1|.
% \begin{macrocode}
- \@tempcnta=\time
- \divide\@tempcnta by 60
- \ifnum\@tempcnta<10
- \xdef#1{#1T0\the\@tempcnta}%
+ \@hyxmp@count=\time
+ \divide\@hyxmp@count by 60
+ \ifnum\@hyxmp@count<10
+ \xdef#1{#1T0\the\@hyxmp@count}%
\else
- \xdef#1{#1T\the\@tempcnta}%
+ \xdef#1{#1T\the\@hyxmp@count}%
\fi
- \multiply\@tempcnta by -60
- \advance\@tempcnta by \time
- \ifnum\@tempcnta<10
- \xdef#1{#1:0\the\@tempcnta}%
+ \multiply\@hyxmp@count by -60
+ \advance\@hyxmp@count by \time
+ \ifnum\@hyxmp@count<10
+ \xdef#1{#1:0\the\@hyxmp@count}%
\else
- \xdef#1{#1:\the\@tempcnta}%
+ \xdef#1{#1:\the\@hyxmp@count}%
\fi
\xdef#1{#1Z}%
}
@@ -4923,14 +4957,14 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% \xmpprop{xmpMM:InstanceID} fields.
%
% \begin{macro}{\hyxmp@modulo@a}
-% Replace the contents of |\@tempcnta| with the contents modulo~|#1|.
+% Replace the contents of |\@hyxmp@count| with the contents modulo~|#1|.
% Note that |\@tempcntb| is overwritten in the process.
% \begin{macrocode}
\def\hyxmp@modulo@a#1{%
- \@tempcntb=\@tempcnta
+ \@tempcntb=\@hyxmp@count
\divide\@tempcntb by #1
\multiply\@tempcntb by #1
- \advance\@tempcnta by -\@tempcntb
+ \advance\@hyxmp@count by -\@tempcntb
}
% \end{macrocode}
% \end{macro}
@@ -4952,7 +4986,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% of text.
% \begin{macrocode}
\def\hyxmp@seed@rng#1{%
- \@tempcnta=\hyxmp@big@prime
+ \@hyxmp@count=\hyxmp@big@prime
\futurelet\hyxmp@one@token\hyxmp@seed@rng@i#1\@empty
}
% \end{macrocode}
@@ -4963,8 +4997,8 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% \begin{macro}{\hyxmp@one@token}
% \begin{macro}{\next}
% Do all of the work for |\hyxmp@seed@rng|. For each character code $c$
-% of the input text, assign $\mathtt{\string\@tempcnta} \leftarrow 3
-% \cdot \mathtt{\string\@tempcnta} + c
+% of the input text, assign $\mathtt{\string\@hyxmp@count} \leftarrow 3
+% \cdot \mathtt{\string\@hyxmp@count} + c
% \pmod{\mathtt{\string\hyxmp@big@prime}}$.
% \begin{macrocode}
\def\hyxmp@seed@rng@i{%
@@ -4972,8 +5006,8 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
\let\next=\relax
\else
\def\next##1{%
- \multiply\@tempcnta by 3
- \advance\@tempcnta by `##1
+ \multiply\@hyxmp@count by 3
+ \advance\@hyxmp@count by `##1
\hyxmp@modulo@a{\hyxmp@big@prime}%
\futurelet\hyxmp@one@token\hyxmp@seed@rng@i
}%
@@ -4991,15 +5025,15 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% sequence. Specifically, we assign $\mathtt{\string\hyxmp@rand@num}
% \leftarrow 3 \cdot \mathtt{\string\hyxmp@rand@num} +
% \mathtt{\string\hyxmp@big@prime@ii}
-% \pmod{\mathtt{\string\hyxmp@big@prime}}$. Note that both |\@tempcnta|
+% \pmod{\mathtt{\string\hyxmp@big@prime}}$. Note that both |\@hyxmp@count|
% and |\@tempcntb| are overwritten in the process.
% \begin{macrocode}
\def\hyxmp@set@rand@num{%
- \@tempcnta=\hyxmp@rand@num
- \multiply\@tempcnta by 3
- \advance\@tempcnta by \hyxmp@big@prime@ii
+ \@hyxmp@count=\hyxmp@rand@num
+ \multiply\@hyxmp@count by 3
+ \advance\@hyxmp@count by \hyxmp@big@prime@ii
\hyxmp@modulo@a{\hyxmp@big@prime}%
- \xdef\hyxmp@rand@num{\the\@tempcnta}%
+ \xdef\hyxmp@rand@num{\the\@hyxmp@count}%
}
% \end{macrocode}
% \end{macro}
@@ -5007,21 +5041,21 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
%
% \begin{macro}{\hyxmp@append@hex}
% Append a randomly selected hexadecimal digit to macro~|#1|. Note that
-% both |\@tempcnta| and |\@tempcntb| are overwritten in the process.
+% both |\@hyxmp@count| and |\@tempcntb| are overwritten in the process.
% \begin{macrocode}
\def\hyxmp@append@hex#1{%
\hyxmp@set@rand@num
- \@tempcnta=\hyxmp@rand@num
+ \@hyxmp@count=\hyxmp@rand@num
\hyxmp@modulo@a{16}%
- \ifnum\@tempcnta<10
- \xdef#1{#1\the\@tempcnta}%
+ \ifnum\@hyxmp@count<10
+ \xdef#1{#1\the\@hyxmp@count}%
\else
% \end{macrocode}
% There \emph{must} be a better way to handle the numbers~10--15 than
% with |\ifcase|.
% \begin{macrocode}
- \advance\@tempcnta by -10
- \ifcase\@tempcnta
+ \advance\@hyxmp@count by -10
+ \ifcase\@hyxmp@count
\xdef#1{#1a}%
\or\xdef#1{#1b}%
\or\xdef#1{#1c}%
@@ -5063,7 +5097,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% in which each ``\textit{x}'' is a lowercase hexadecimal digit and
% ``\textit{y}'' is one of ``|8|'', ``|9|'', ``|a|'', or~``|b|''. We
% assume that the random-number generator is already seeded. Note that
-% |\hyxmp@create@uuid| overwrites both |\@tempcnta| and |\@tempcntb|.
+% |\hyxmp@create@uuid| overwrites both |\@hyxmp@count| and |\@tempcntb|.
% \changes{v2.4}{2014/01/02}{Modified this macro to produce a proper
% version~4 (random or pseudorandom) \protect\acro{UUID}}
% \begin{macrocode}
@@ -5080,9 +5114,9 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% Randomly select one of ``|8|'', ``|9|'', ``|a|'', or~``|b|''.
% \begin{macrocode}
\hyxmp@set@rand@num
- \@tempcnta=\hyxmp@rand@num
+ \@hyxmp@count=\hyxmp@rand@num
\hyxmp@modulo@a{4}%
- \ifcase\@tempcnta
+ \ifcase\@hyxmp@count
\g@addto@macro#1{8}%
\or\g@addto@macro#1{9}%
\or\g@addto@macro#1{a}%
@@ -5109,7 +5143,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
\newcommand*{\hyxmp@def@DocumentID}{%
\edef\hyxmp@seed@string{\hyxmp@jobname:\@pdftitle:\@pdfauthor:}%
\expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
- \edef\hyxmp@rand@num{\the\@tempcnta}%
+ \edef\hyxmp@rand@num{\the\@hyxmp@count}%
\hyxmp@create@uuid\hyxmp@DocumentID
}
% \end{macrocode}
@@ -5138,7 +5172,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
\hyxmp@jobname:\@pdftitle:\@pdfauthor:\hyxmp@today@xmp:\hyxmp@seed@string
}%
\expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
- \edef\hyxmp@rand@num{\the\@tempcnta}%
+ \edef\hyxmp@rand@num{\the\@hyxmp@count}%
\hyxmp@create@uuid\hyxmp@InstanceID
}
% \end{macrocode}
@@ -5196,16 +5230,16 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% \begin{macrocode}
\newcommand*{\hyxmp@add@to@xml}[1]{%
\bgroup
- \@tempcnta=0
+ \@hyxmp@count=0
\ifhyxmp@unicodetex
\@tempcntb=65536%
\else
\@tempcntb=256%
\fi
\loop
- \lccode\@tempcnta=\@tempcnta
- \advance\@tempcnta by 1
- \ifnum\@tempcnta<\@tempcntb
+ \lccode\@hyxmp@count=\@hyxmp@count
+ \advance\@hyxmp@count by 1
+ \ifnum\@hyxmp@count<\@tempcntb
\repeat
\lccode`\_=`\ \relax
\lccode`\^^C=`\,\relax
@@ -6011,14 +6045,14 @@ ______</dc:#2>^^J%
% \changes{v5.0}{2020/02/26}{Added this macro}
% \begin{macrocode}
\newcommand*{\hyxmp@pdfx@id@schema}{%
- \@tempcnta=0\hyxmp@pdfx@major\relax
- \ifnum\@tempcnta=0
+ \@hyxmp@count=0\hyxmp@pdfx@major\relax
+ \ifnum\@hyxmp@count=0
\else
- \ifnum\@tempcnta=1
+ \ifnum\@hyxmp@count=1
\hyxmp@add@simple{pdfx:GTS_PDFXVersion}{PDF/X-1:2001}%
\hyxmp@add@simple{pdfx:GTS_PDFXConformance}{\@pdfxstandard}%
\else
- \ifnum\@tempcnta<4
+ \ifnum\@hyxmp@count<4
\hyxmp@add@simple{pdfx:GTS_PDFXVersion}{\@pdfxstandard}%
\else
\hyxmp@add@simple{pdfxid:GTS_PDFXVersion}{\@pdfxstandard}%
@@ -6629,8 +6663,8 @@ ______________________</rdf:li>^^J%
% \end{macrocode}
% Declare the schema used in \PDFstd{X}{4}{}{} and later versions.
% \begin{macrocode}
- \@tempcnta=0\hyxmp@pdfx@major\relax
- \ifnum\@tempcnta>3
+ \@hyxmp@count=0\hyxmp@pdfx@major\relax
+ \ifnum\@hyxmp@count>3
\hyxmp@begin@ext@decl
{PDF/X ID Schema}%
{pdfxid}%
@@ -6958,7 +6992,27 @@ _____________________xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEven
_____________________xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"^^J%
_____________________xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"^^J%
_____________________xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"^^J%
+ }%
+% \end{macrocode}
+% We make one exception to the rule of including every namespace we can
+% potentially use: We don't define the \texttt{pdfxid} namespace unless
+% the \acro{PDF/X} version (specified by the \optname{pdfxstandard})
+% option is~4 or greater. Otherwise, Adobe Acrobat---at least Adobe
+% Acrobat DC 2020---alters the way it displays color. (I believe it
+% renders color in a printer gamut instead of a screen gamut.)
+% \changes{v5.10}{2020/01/05}{Include the \string\texttt{pdfxid} namespace
+% only if the \protect\acro{PDF/X} version is~4 or greater. Thanks to
+% John Lienhard for the bug report}
+% \begin{macrocode}
+ \ifnum0\hyxmp@pdfx@major>3
+ \hyxmp@add@to@xml{%
_____________________xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"^^J%
+ }%
+ \fi
+% \end{macrocode}
+% Revert to ``include every namespace'' mode.
+% \begin{macrocode}
+ \hyxmp@add@to@xml{%
_____________________xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"^^J%
_____________________xmlns:jav="http://www.niso.org/schemas/jav/1.0/"^^J%
_____________________xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"^^J%
@@ -7177,7 +7231,7 @@ __</rdf:RDF>^^J%
<<
/Type /Metadata
/Subtype /XML
- /Length \the\@tempcnta
+ /Length \the\@hyxmp@count
>>
stream^^J\hyxmp@xml endstream%
}%
@@ -7191,7 +7245,7 @@ __</rdf:RDF>^^J%
% \end{macro}
%
% \begin{macro}{\hyxmp@string@len}
-% Set |\@tempcnta| to the number of characters in a given string~(|#1|).
+% Set |\@hyxmp@count| to the number of characters in a given string~(|#1|).
% The approach is first to tally the number of space characters then to
% tally the number of non-space characters. While this is rather
% sloppy I haven't found a better way to achieve the same effect,
@@ -7199,7 +7253,7 @@ __</rdf:RDF>^^J%
% assigned their category codes.
% \begin{macrocode}
\newcommand*{\hyxmp@string@len}[1]{%
- \@tempcnta=0
+ \@hyxmp@count=0
\expandafter\hyxmp@count@spaces#1 {} %
\expandafter\hyxmp@count@non@spaces#1{}%
}
@@ -7214,9 +7268,9 @@ __</rdf:RDF>^^J%
\def\hyxmp@count@spaces#1 {%
\def\hyxmp@one@token{#1}%
\ifx\hyxmp@one@token\@empty
- \advance\@tempcnta by -1
+ \advance\@hyxmp@count by -1
\else
- \advance\@tempcnta by 1
+ \advance\@hyxmp@count by 1
\expandafter\hyxmp@count@spaces
\fi
}
@@ -7233,7 +7287,7 @@ __</rdf:RDF>^^J%
\def\hyxmp@one@token{#1}%
\ifx\hyxmp@one@token\@empty
\else
- \advance\@tempcnta by 1
+ \advance\@hyxmp@count by 1
\expandafter\hyxmp@count@non@spaces
\fi
}
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.ins b/macros/latex/contrib/hyperxmp/hyperxmp.ins
index 81db9d155a..80abd7b3c3 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.ins
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2011-2020 by Scott Pakin <scott+hyxmp@pakin.org>
+%% Copyright (C) 2011-2023 by Scott Pakin <scott+hyxmp@pakin.org>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -21,7 +21,7 @@
This is a generated file.
-Copyright (C) 2011-2020 by Scott Pakin <scott+hyxmp@pakin.org>
+Copyright (C) 2011-2023 by Scott Pakin <scott+hyxmp@pakin.org>
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.pdf b/macros/latex/contrib/hyperxmp/hyperxmp.pdf
index f11adaee15..2374394e6b 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.pdf
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.pdf
Binary files differ