From dc3e0bc45fa068ea0640402f61df774dd612285f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 20 Feb 2023 21:00:04 +0000 Subject: hyperxmp (20feb23) git-svn-id: svn://tug.org/texlive/trunk@65980 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/hyperxmp/einstein-xmp.tex | 1 - .../source/latex/hyperxmp/hyperxmp-stds.tex | 2 +- .../texmf-dist/source/latex/hyperxmp/hyperxmp.dtx | 294 ++++++++++++--------- .../texmf-dist/source/latex/hyperxmp/hyperxmp.ins | 4 +- 4 files changed, 177 insertions(+), 124 deletions(-) (limited to 'Master/texmf-dist/source/latex/hyperxmp') diff --git a/Master/texmf-dist/source/latex/hyperxmp/einstein-xmp.tex b/Master/texmf-dist/source/latex/hyperxmp/einstein-xmp.tex index 7fad01f38a7..323937cc4a6 100644 --- a/Master/texmf-dist/source/latex/hyperxmp/einstein-xmp.tex +++ b/Master/texmf-dist/source/latex/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/Master/texmf-dist/source/latex/hyperxmp/hyperxmp-stds.tex b/Master/texmf-dist/source/latex/hyperxmp/hyperxmp-stds.tex index e236b8a6b37..2b77c2703d6 100644 --- a/Master/texmf-dist/source/latex/hyperxmp/hyperxmp-stds.tex +++ b/Master/texmf-dist/source/latex/hyperxmp/hyperxmp-stds.tex @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 2011-2020 by Scott Pakin +%% Copyright (C) 2011-2023 by 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/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx b/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx index 4fad6b29d0a..ea0d5334298 100644 --- a/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx +++ b/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2011-2020 by Scott Pakin +% Copyright (C) 2011-2023 by Scott Pakin % -------------------------------------------------------------- % % This file may be distributed and/or modified under the @@ -22,7 +22,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\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] % % %<*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} % % \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^^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^^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^^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^^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^^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^^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^^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^^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^^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^^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^^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 @@ ______^^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 @@ ______________________^^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 @@ __^^J% << /Type /Metadata /Subtype /XML - /Length \the\@tempcnta + /Length \the\@hyxmp@count >> stream^^J\hyxmp@xml endstream% }% @@ -7191,7 +7245,7 @@ __^^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 @@ __^^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 @@ __^^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 @@ __^^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/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.ins b/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.ins index 81db9d155a9..80abd7b3c31 100644 --- a/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.ins +++ b/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.ins @@ -1,5 +1,5 @@ %% -%% Copyright (C) 2011-2020 by Scott Pakin +%% Copyright (C) 2011-2023 by 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 @@ -21,7 +21,7 @@ This is a generated file. -Copyright (C) 2011-2020 by Scott Pakin +Copyright (C) 2011-2023 by 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 -- cgit v1.2.3