summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-04-28 21:42:33 +0000
committerKarl Berry <karl@freefriends.org>2016-04-28 21:42:33 +0000
commit74fc752cdb92fa64774c1cf73162fb237254cf93 (patch)
tree6d837dc132af0ff0425977cd99abe1b79f8e2041
parent421666a3551c85693aa8880d01fa24d9a0ec5dd9 (diff)
hyperxmp (28apr16)
git-svn-id: svn://tug.org/texlive/trunk@40805 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/hyperxmp/README10
-rw-r--r--Master/texmf-dist/doc/latex/hyperxmp/hyperxmp.pdfbin563870 -> 569023 bytes
-rw-r--r--Master/texmf-dist/source/latex/hyperxmp/einstein-xmp.tex30
-rw-r--r--Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx187
-rw-r--r--Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty84
5 files changed, 221 insertions, 90 deletions
diff --git a/Master/texmf-dist/doc/latex/hyperxmp/README b/Master/texmf-dist/doc/latex/hyperxmp/README
index 590a6d44247..14c9a1552fb 100644
--- a/Master/texmf-dist/doc/latex/hyperxmp/README
+++ b/Master/texmf-dist/doc/latex/hyperxmp/README
@@ -23,11 +23,11 @@ for specifying PDF metadata. The current version of hyperxmp can
embed the following metadata as XMP: authors, base URL, contact
telephone number/postal address/email address/URL, copyright
statement, creation date, document identifier, document instance
-identifier, file format, keywords, language, LaTeX file name, license
-URL, metadata writer, PDF version, PDF-generating tool, PDF/A
-compliance level and version, primary author's position or title,
-subject/summary, and title. hyperxmp is compatible with pdflatex,
-latex+dvips+ps2pdf, latex+dvipdfm, xelatex, and lualatex.
+identifier, document type, file format, keywords, language, LaTeX file
+name, license URL, metadata writer, PDF version, PDF-generating tool,
+PDF/A compliance level and version, primary author's position or
+title, subject/summary, and title. hyperxmp is compatible with
+pdflatex, latex+dvips+ps2pdf, latex+dvipdfm, xelatex, and lualatex.
Installation
diff --git a/Master/texmf-dist/doc/latex/hyperxmp/hyperxmp.pdf b/Master/texmf-dist/doc/latex/hyperxmp/hyperxmp.pdf
index f8752df3317..084764a63b0 100644
--- a/Master/texmf-dist/doc/latex/hyperxmp/hyperxmp.pdf
+++ b/Master/texmf-dist/doc/latex/hyperxmp/hyperxmp.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/hyperxmp/einstein-xmp.tex b/Master/texmf-dist/source/latex/hyperxmp/einstein-xmp.tex
index cb116336515..59190765d09 100644
--- a/Master/texmf-dist/source/latex/hyperxmp/einstein-xmp.tex
+++ b/Master/texmf-dist/source/latex/hyperxmp/einstein-xmp.tex
@@ -76,7 +76,12 @@
<rdf:Bag>
<rdf:li>\metavalue{en}</rdf:li>
</rdf:Bag>
- </dc:language>
+ </dc:language>
+ <dc:type>
+ <rdf:Bag>
+ <rdf:li>\metavalue{Text}</rdf:li>
+ </rdf:Bag>
+ </dc:type>
<dc:source>\metavalue{einstein.tex}</dc:source>
</rdf:Description>
<rdf:Description rdf:about=""
@@ -112,8 +117,8 @@
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaType:type>contactinfo</pdfaType:type>
- <pdfaType:namespaceURI>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/contactinfo/</pdfaType:namespaceURI>
- <pdfaType:prefix>IptcContInfo</pdfaType:prefix>
+ <pdfaType:namespaceURI>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/</pdfaType:namespaceURI>
+ <pdfaType:prefix>Iptc4xmpCore</pdfaType:prefix>
<pdfaType:description>contact information</pdfaType:description>
<pdfaType:field>
<rdf:Seq>
@@ -167,19 +172,18 @@
</pdfaExtension:schemas>
</rdf:Description>
<rdf:Description rdf:about=""
- xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
- xmlns:IptcContInfo="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/contactinfo/">
+ xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">
<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">
- <IptcContInfo:CiAdrExtadr>\metavalue{Kramgasse 49}</IptcContInfo:CiAdrExtadr>
- <IptcContInfo:CiAdrCity>\metavalue{Bern}</IptcContInfo:CiAdrCity>
- <IptcContInfo:CiAdrPcode>\metavalue{3011}</IptcContInfo:CiAdrPcode>
- <IptcContInfo:CiAdrCtry>\metavalue{Switzerland}</IptcContInfo:CiAdrCtry>
- <IptcContInfo:CiTelWork>\metavalue{031 312 00 91}</IptcContInfo:CiTelWork>
- <IptcContInfo:CiEmailWork>\metavalue{aeinstein@ipi.ch}</IptcContInfo:CiEmailWork>
- <IptcContInfo:CiUrlWork>
+ <Iptc4xmpCore:CiAdrExtadr>\metavalue{Kramgasse 49}</Iptc4xmpCore:CiAdrExtadr>
+ <Iptc4xmpCore:CiAdrCity>\metavalue{Bern}</Iptc4xmpCore:CiAdrCity>
+ <Iptc4xmpCore:CiAdrPcode>\metavalue{3011}</Iptc4xmpCore:CiAdrPcode>
+ <Iptc4xmpCore:CiAdrCtry>\metavalue{Switzerland}</Iptc4xmpCore:CiAdrCtry>
+ <Iptc4xmpCore:CiTelWork>\metavalue{031 312 00 91}</Iptc4xmpCore:CiTelWork>
+ <Iptc4xmpCore:CiEmailWork>\metavalue{aeinstein@ipi.ch}</Iptc4xmpCore:CiEmailWork>
+ <Iptc4xmpCore:CiUrlWork>
\metavalue{http://einstein.biz/,
https://www.facebook.com/AlbertEinstein}
- </IptcContInfo:CiUrlWork>
+ </Iptc4xmpCore:CiUrlWork>
</Iptc4xmpCore:CreatorContactInfo>
</rdf:Description>
<rdf:Description rdf:about=""
diff --git a/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx b/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx
index 1c265f1cdc0..e1fcca6c69d 100644
--- a/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx
+++ b/Master/texmf-dist/source/latex/hyperxmp/hyperxmp.dtx
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{hyperxmp}
%<*package>
- [2016/04/05 v2.8 Store hyperref metadata in XMP format]
+ [2016/04/27 v2.9 Store hyperref metadata in XMP format]
%</package>
%
%<*driver>
@@ -81,7 +81,7 @@
%</driver>
% \fi
%
-% \CheckSum{1514}
+% \CheckSum{1551}
%
% \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
@@ -116,6 +116,13 @@
% to work within email addresses, as requested by Leonid Sinev}
% \changes{v2.6}{2014/09/24}{Added support for a new \protect\optname{pdfdate}
% key to explicitly specify the document date (and optionally time)}
+% \changes{v2.9}{2016/04/25}{Force inclusion of \protect\xmpterm{dc:creator},
+% \protect\xmpterm{dc:title}, and \protect\xmpterm{dc:description}---even if
+% empty---when \protect\pkgname{hyperref} is loaded with the
+% \protect\optname{pdfa} option (suggested by Leonid Sinev)}
+% \changes{v2.9}{2016/04/26}{Introduced the \protect\optname{pdftype}
+% package option, which enables an author to specify the type of
+% document being produced}
%
% \GetFileInfo{hyperxmp.dtx}
%
@@ -281,6 +288,7 @@
% \xmpterm{xmp:ModifyDate}, and \xmpterm{xmp:MetadataDate})
% \item document identifier (\xmpterm{xmpMM:DocumentID})
% \item document instance identifier (\xmpterm{xmpMM:InstanceID})
+% \item document type (\xmpterm{dc:type})
% \item file format (\xmpterm{dc:format})
% \item keywords (\xmpterm{pdf:Keywords} and \xmpterm{dc:subject})
% \item language (\xmpterm{dc:language})
@@ -345,6 +353,8 @@
% following options, which have meaning only to \pkgname{hyperxmp}:
%
% \begin{itemize}
+% \item \optname{pdfaconformance}
+% \item \optname{pdfapart}
% \item \optname{pdfauthortitle}
% \item \optname{pdfcaptionwriter}
% \item \optname{pdfcontactaddress}
@@ -359,9 +369,19 @@
% \item \optname{pdfdate}
% \item \optname{pdflicenseurl}
% \item \optname{pdfmetalang}
+% \item \optname{pdftype}
% \end{itemize}
% \label{page:end-new-options}
%
+% The two most obscure---but alphabetically first---of the above,
+% \optname{pdfaconformance} and \optname{pdfapart}, are used in
+% conjunction with \pkgname{hyperref}'s \optname{pdfa} option to claim a
+% particular \acro{PDF/A} standard by which the document abides. They
+% default to \optname{pdfapart}=|1| and \optname{pdfaconformance}=|B|,
+% indicating the \acro{PDF/A}-1B standard. These can be changed (with
+% caution) to assert that the document abides by a different standard
+% (e.g.,~\acro{PDF/A}-2U).
+
% \optname{pdfauthortitle} indicates the primary author's position or
% title. \optname{pdfcaptionwriter} specifies the name of the person
% who added the metadata to the document. The next eight items describe
@@ -409,6 +429,23 @@
% language, as the user reading the document may not have specified a
% language preference.
%
+% \optname{pdftype} describes the type of document being produced. This
+% refers to ``the nature or genre of the resource''~\cite{Adobe2012:XMP}
+% such as ``|poem|'', ``|novel|'' or ``|working paper|'', as opposed to
+% the file format (always ``|application/pdf|'' when generated by
+% \pkgname{hyperxmp}). Although \optname{pdftype} can be assigned an
+% arbitrary piece of text, the \acro{XMP} specification recommends
+% selecting types from a ``controlled vocabulary'' such as the DCMI Type
+% Vocabulary~\cite{DCMI2012:meta-terms}. The DCMI Type Vocabulary
+% currently consists of only ``|Collection|'', ``|Dataset|'',
+% ``|Event|'', ``|Image|'', ``|InteractiveResource|'',
+% ``|MovingImage|'', ``|PhysicalObject|'', ``|Service|'',
+% ``|Software|'', ``|Sound|'', ``|StillImage|'', and ``|Text|''.
+% \optname{pdftype} defaults to ``|Text|'', which refers to ``books,
+% letters, dissertations, poems, newspapers, articles, archives of
+% mailing lists,''~\cite{DCMI2012:meta-terms} and other forms of
+% text---all things \LaTeX\ is commonly used to typeset.
+%
% It is usually more convenient to provide values for those options using
% \pkgname{hyperref}'s |\hypersetup| command than on the |\usepackage|
% command line. See
@@ -713,6 +750,11 @@
% \newblock Available from
% \url{http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/cc-201306/XMPSpecificationPart1.pdf}.
%
+% \bibitem{DCMI2012:meta-terms}
+% DCMI Usage Board
+% \newblock {\em DCMI Metadata Terms}, June~14, 2012.
+% \newblock Available from \url{http://dublincore.org/documents/dcmi-terms/}.
+%
% \bibitem{Downes1994:ATB15}
% Michael Downes.
% \newblock Around the bend~\#15, answers, 4th (last) installment.
@@ -884,6 +926,14 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@pdftype}
+% Prepare to store the document's logical type, which defaults to ``|Text|''.
+% \begin{macrocode}
+\def\@pdftype{Text}
+\define@key{Hyp}{pdftype}{\hyxmp@pdfstringdef\@pdftype{#1}}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@pdflicenseurl}
% Prepare to store the \acro{URL} containing the document's license
% agreement.
@@ -919,6 +969,22 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@pdfapart}
+% Prepare to store the \acro{PDF/A} part ID, which defaults to~``1''.
+% \begin{macrocode}
+\def\@pdfapart{1}
+\define@key{Hyp}{pdfapart}{\hyxmp@pdfstringdef\@pdfapart{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@pdfaconformance}
+% Prepare to store the \acro{PDF/A} conformance ID, which defaults to~``B''.
+% \begin{macrocode}
+\def\@pdfaconformance{B}
+\define@key{Hyp}{pdfaconformance}{\hyxmp@pdfstringdef\@pdfaconformance{#1}}
+% \end{macrocode}
+% \end{macro}
+%
% The following eight macros---|\@pdfcontactaddress|,
% |\@pdfcontactcity|, |\@pdfcontactregion|, |\@pdfcontactpostcode|,
% |\@pdfcontactcountry|, |\@pdfcontactphone|, |\@pdfcontactemail|, and
@@ -1201,7 +1267,8 @@
% at all. This excludes metadata that is included automatically such as
% the current timestamp. Note that we don't consider |\@pdfmetalang| as
% metadata as that value is meaningful only when used in conjunction
-% with other information.
+% with other information. We also don't examine |\@pdfapart| or
+% |\@pdfaconformance| because those have nonempty default values.
% \begin{macrocode}
\newcommand*{\hyxmp@find@metadata}{%
\edef\hyxmp@concated@metadata{%
@@ -1218,6 +1285,7 @@
\@pdfcontactregion
\@pdfcontacturl
\@pdfcopyright
+ \@pdftype
\@pdfdatetime
\@pdfkeywords
\@pdflang
@@ -2484,18 +2552,33 @@ _________<#1>\hyxmp@xmlified</#1>^^J%
% \label{sec:dublin-core}
%
% \begin{macro}{\hyxmp@rdf@dc}
-% Given a Dublin Core property~(|#1|) and a macro containing some
-% |\pdfstringdef|-defined text~(|#2|), append the appropriate block of
-% \acro{XML} to the |\hyxmp@xml| macro but only if |#2| is non-empty.
+% Given an optional |\if|\meta{something} statement (|#1|), a Dublin Core
+% property~(|#2|) and a macro containing some |\pdfstringdef|-defined
+% text~(|#3|), append the appropriate block of \acro{XML} to the |\hyxmp@xml|
+% macro.
% \changes{v1.4}{2011/06/12}{Included metadata in the \texttt{x-default}
% language regardless of the specified metadata language}
% \begin{macrocode}
-\newcommand*{\hyxmp@rdf@dc}[2]{%
- \ifx#2\@empty
+\newcommand*{\hyxmp@rdf@dc}[3][\iffalse]{%
+% \end{macrocode}
+% Set |\@tempswatrue| only if the given text is nonempty or the provided
+% conditional evaluates to \textsc{true}.
+% \begin{macrocode}
+ \@tempswafalse
+ \ifx#3\@empty
\else
- \hyxmp@xmlify{#2}%
+ \@tempswatrue
+ \fi
+ #1
+ \@tempswatrue
+ \fi
+% \end{macrocode}
+% Append the corresponding \acro{XML} only if |\@tempswatrue|.
+% \begin{macrocode}
+ \if@tempswa
+ \hyxmp@xmlify{#3}%
\hyxmp@add@to@xml{%
-_________<dc:#1>^^J%
+_________<dc:#2>^^J%
____________<rdf:Alt>^^J%
}%
\ifx\@pdfmetalang\hyxmp@x@default
@@ -2507,26 +2590,41 @@ _______________<rdf:li xml:lang="\@pdfmetalang">\hyxmp@xmlified</rdf:li>^^J%
\hyxmp@add@to@xml{%
_______________<rdf:li xml:lang="\hyxmp@x@default">\hyxmp@xmlified</rdf:li>^^J%
____________</rdf:Alt>^^J%
-_________</dc:#1>^^J%
+_________</dc:#2>^^J%
}%
- \fi%
+ \fi
}%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\hyxmp@list@to@xml}
-% Given a Dublin Core property~(|#1|), an RDF array~(|#2|), and a macro
-% containing a comma-separated list~(|#3|), append the appropriate block
-% of \acro{XML} to the |\hyxmp@xml| macro but only if |#3| is non-empty.
+% Given an optional |\if|\meta{something} statement (|#1|), a Dublin Core
+% property~(|#2|), an \acro{RDF} array~(|#3|), and a macro containing a
+% comma-separated list~(|#4|), append the appropriate block of \acro{XML} to
+% the |\hyxmp@xml| macro.
% \changes{v2.0}{2012/08/02}{Modified by Heiko Oberdiek to use the new
% \term{Unicode}-processing macros}
% \begin{macrocode}
-\newcommand*{\hyxmp@list@to@xml}[3]{%
- \ifx#3\@empty
+\newcommand*{\hyxmp@list@to@xml}[4][\iffalse]{%
+% \end{macrocode}
+% Set |\@tempswatrue| only if the given list is nonempty or the provided
+% conditional evaluates to \textsc{true}.
+% \begin{macrocode}
+ \@tempswafalse
+ \ifx#4\@empty
\else
+ \@tempswatrue
+ \fi
+ #1
+ \@tempswatrue
+ \fi
+% \end{macrocode}
+% Append the corresponding \acro{XML} only if |\@tempswatrue|.
+% \begin{macrocode}
+ \if@tempswa
\hyxmp@add@to@xml{%
-_________<dc:#1>^^J%
-____________<rdf:#2>^^J%
+_________<dc:#2>^^J%
+____________<rdf:#3>^^J%
}%
\bgroup
% \end{macrocode}
@@ -2535,7 +2633,7 @@ ____________<rdf:#2>^^J%
% |\@elt| to \acro{XML}-ify each element of the list and append it to
% |\hyxmp@xmlified|.
% \begin{macrocode}
- \hyxmp@xmlify{#3}%
+ \hyxmp@xmlify{#4}%
\hyxmp@commas@to@list\hyxmp@list{\hyxmp@xmlified}%
\def\@elt##1{%
\hyxmp@add@to@xml{%
@@ -2545,8 +2643,8 @@ _______________<rdf:li>##1</rdf:li>^^J%
\hyxmp@list
\egroup
\hyxmp@add@to@xml{%
-____________</rdf:#2>^^J%
-_________</dc:#1>^^J%
+____________</rdf:#3>^^J%
+_________</dc:#2>^^J%
}%
\fi
}
@@ -2580,13 +2678,14 @@ ______<rdf:Description rdf:about=""^^J%
____________xmlns:dc="http://purl.org/dc/elements/1.1/">^^J%
_________<dc:format>application/pdf</dc:format>^^J%
}%
- \hyxmp@rdf@dc{title}{\@pdftitle}%
- \hyxmp@rdf@dc{description}{\@pdfsubject}%
+ \hyxmp@rdf@dc[\ifHy@pdfa]{title}{\@pdftitle}%
+ \hyxmp@rdf@dc[\ifHy@pdfa]{description}{\@pdfsubject}%
\hyxmp@rdf@dc{rights}{\@pdfcopyright}%
- \hyxmp@list@to@xml{creator}{Seq}{\hyxmp@pdfauthor}%
+ \hyxmp@list@to@xml[\ifHy@pdfa]{creator}{Seq}{\hyxmp@pdfauthor}%
\hyxmp@list@to@xml{subject}{Bag}{\hyxmp@pdfkeywords}%
\hyxmp@list@to@xml{date}{Seq}{\hyxmp@today}%
\hyxmp@list@to@xml{language}{Bag}{\@pdflang}%
+ \hyxmp@list@to@xml{type}{Bag}{\@pdftype}%
\hyxmp@add@simple{dc:source}{\jobname.tex}%
\hyxmp@add@to@xml{%
______</rdf:Description>^^J%
@@ -2828,6 +2927,10 @@ _________<#1>%
%
% \begin{macro}{\hyxmp@photometa@schema}
% \changes{v2.2}{2012/12/07}{Added this macro}
+% \changes{v2.9}{2016/04/23}{Use \textsf{Iptc4xmpCore} instead of
+% \textsf{Iptc4ContInfo} as the contact-information metadata prefix.
+% Leonid Sinev reports that Acrobat's \acro{PDF/A} validator seems to
+% prefer \textsf{Iptc4xmpCore}}
% \begin{macro}{\hyxmp@photometa@data}
% Add properties defined by the \acro{IPTC} Photo Metadata
% schema~\cite{IPTC2010:photo-meta} to the |\hyxmp@xml| macro. We
@@ -2857,16 +2960,15 @@ _________<#1>%
\hyxmp@iptc@extensions
\hyxmp@add@to@xml{%
______<rdf:Description rdf:about=""^^J%
-___________xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"^^J%
-___________xmlns:IptcContInfo="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/contactinfo/">^^J%
+___________xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">^^J%
_______<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">^^J%
}%
\fi
- \hyxmp@list@to@lines{IptcContInfo:CiAdrExtadr}{\@pdfcontactaddress}%
- \hyxmp@add@simple{IptcContInfo:CiAdrCity}{\@pdfcontactcity}%
- \hyxmp@add@simple{IptcContInfo:CiAdrRegion}{\@pdfcontactregion}%
- \hyxmp@add@simple{IptcContInfo:CiAdrPcode}{\@pdfcontactpostcode}%
- \hyxmp@add@simple{IptcContInfo:CiAdrCtry}{\@pdfcontactcountry}%
+ \hyxmp@list@to@lines{Iptc4xmpCore:CiAdrExtadr}{\@pdfcontactaddress}%
+ \hyxmp@add@simple{Iptc4xmpCore:CiAdrCity}{\@pdfcontactcity}%
+ \hyxmp@add@simple{Iptc4xmpCore:CiAdrRegion}{\@pdfcontactregion}%
+ \hyxmp@add@simple{Iptc4xmpCore:CiAdrPcode}{\@pdfcontactpostcode}%
+ \hyxmp@add@simple{Iptc4xmpCore:CiAdrCtry}{\@pdfcontactcountry}%
% \end{macrocode}
% \begin{macro}{\xmplinesep}
% The \acro{IPTC} standard states that sets of telephone numbers, email
@@ -2881,9 +2983,9 @@ _______<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">^^J%
% \begin{macrocode}
\bgroup
\def\xmplinesep{,}%
- \hyxmp@list@to@lines{IptcContInfo:CiTelWork}{\@pdfcontactphone}%
- \hyxmp@list@to@lines{IptcContInfo:CiEmailWork}{\@pdfcontactemail}%
- \hyxmp@list@to@lines{IptcContInfo:CiUrlWork}{\@pdfcontacturl}%
+ \hyxmp@list@to@lines{Iptc4xmpCore:CiTelWork}{\@pdfcontactphone}%
+ \hyxmp@list@to@lines{Iptc4xmpCore:CiEmailWork}{\@pdfcontactemail}%
+ \hyxmp@list@to@lines{Iptc4xmpCore:CiUrlWork}{\@pdfcontacturl}%
\egroup
\ifx\hyxmp@photometa@data\@empty
\else
@@ -2943,8 +3045,8 @@ ______________<pdfaSchema:valueType>^^J%
________________<rdf:Seq>^^J%
__________________<rdf:li rdf:parseType="Resource">^^J%
____________________<pdfaType:type>contactinfo</pdfaType:type>^^J%
-____________________<pdfaType:namespaceURI>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/contactinfo/</pdfaType:namespaceURI>^^J%
-____________________<pdfaType:prefix>IptcContInfo</pdfaType:prefix>^^J%
+____________________<pdfaType:namespaceURI>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/</pdfaType:namespaceURI>^^J%
+____________________<pdfaType:prefix>Iptc4xmpCore</pdfaType:prefix>^^J%
____________________<pdfaType:description>contact information</pdfaType:description>^^J%
____________________<pdfaType:field>^^J%
______________________<rdf:Seq>^^J%
@@ -2999,9 +3101,12 @@ ________________________</rdf:li>^^J%
% Add properties defined by the \acro{PDF/A} Identification
% schema~\cite{PDFA2008:xmp-props} to the |\hyxmp@xml| macro. These
% properties identify a document as conforming to a particular
-% \acro{PDF/A} standard. Currently, we assume \acro{PDF/A}-1b if any
-% \acro{PDF/A} compliance is detected.
+% \acro{PDF/A} standard. We default to \acro{PDF/A}-1b if any \acro{PDF/A}
+% compliance is detected but let the author override the ``1'' with
+% \optname{pdfapart} and the ``B'' with \optname{pdfaconformance}.
% \changes{v2.4}{2013/12/21}{Added this macro}
+% \changes{v2.9}{2016/04/12}{Let the author specify the \protect\acro{PDF/A}
+% part and conformance IDs, as requested by Leonid Sinev}
% \begin{macrocode}
\newcommand*{\hyxmp@pdfa@id@schema}{%
\ifHy@pdfa
@@ -3009,8 +3114,8 @@ ________________________</rdf:li>^^J%
______<rdf:Description rdf:about=""^^J%
____________xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">^^J%
}%
- \hyxmp@add@simple{pdfaid:part}{1}%
- \hyxmp@add@simple{pdfaid:conformance}{B}%
+ \hyxmp@add@simple{pdfaid:part}{\@pdfapart}%
+ \hyxmp@add@simple{pdfaid:conformance}{\@pdfaconformance}%
\hyxmp@add@to@xml{%
______</rdf:Description>^^J%
}%
diff --git a/Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty b/Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty
index c246e65e362..c94b75f5372 100644
--- a/Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty
+++ b/Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty
@@ -22,7 +22,8 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{hyperxmp}
- [2016/04/05 v2.8 Store hyperref metadata in XMP format]
+ [2016/04/27 v2.9 Store hyperref metadata in XMP format]
+
\edef\hyxmp@dq@code{\the\catcode`\"}
\catcode`\"=12
\def\hyxmp@driver{hpdftex}
@@ -47,6 +48,8 @@
\define@key{Hyp}{pdfdate}{\hyxmp@pdfstringdef\@pdfdatetime{#1}}
\def\@pdfcopyright{}
\define@key{Hyp}{pdfcopyright}{\hyxmp@pdfstringdef\@pdfcopyright{#1}}
+\def\@pdftype{Text}
+\define@key{Hyp}{pdftype}{\hyxmp@pdfstringdef\@pdftype{#1}}
\def\@pdflicenseurl{}
\define@key{Hyp}{pdflicenseurl}{\hyxmp@pdfstringdef\@pdflicenseurl{#1}}
\def\@pdfauthortitle{}
@@ -55,6 +58,10 @@
\define@key{Hyp}{pdfcaptionwriter}{\hyxmp@pdfstringdef\@pdfcaptionwriter{#1}}
\def\@pdfmetalang{}
\define@key{Hyp}{pdfmetalang}{\hyxmp@pdfstringdef\@pdfmetalang{#1}}
+\def\@pdfapart{1}
+\define@key{Hyp}{pdfapart}{\hyxmp@pdfstringdef\@pdfapart{#1}}
+\def\@pdfaconformance{B}
+\define@key{Hyp}{pdfaconformance}{\hyxmp@pdfstringdef\@pdfaconformance{#1}}
\def\@pdfcontactaddress{}
\define@key{Hyp}{pdfcontactaddress}{%
\let\xmpcomma=\hyxmp@comma
@@ -144,6 +151,7 @@
\@pdfcontactregion
\@pdfcontacturl
\@pdfcopyright
+ \@pdftype
\@pdfdatetime
\@pdfkeywords
\@pdflang
@@ -650,12 +658,19 @@ _________<#1>\hyxmp@xmlified</#1>^^J%
}%
\fi
}
-\newcommand*{\hyxmp@rdf@dc}[2]{%
- \ifx#2\@empty
+\newcommand*{\hyxmp@rdf@dc}[3][\iffalse]{%
+ \@tempswafalse
+ \ifx#3\@empty
\else
- \hyxmp@xmlify{#2}%
+ \@tempswatrue
+ \fi
+ #1
+ \@tempswatrue
+ \fi
+ \if@tempswa
+ \hyxmp@xmlify{#3}%
\hyxmp@add@to@xml{%
-_________<dc:#1>^^J%
+_________<dc:#2>^^J%
____________<rdf:Alt>^^J%
}%
\ifx\@pdfmetalang\hyxmp@x@default
@@ -667,19 +682,26 @@ _______________<rdf:li xml:lang="\@pdfmetalang">\hyxmp@xmlified</rdf:li>^^J%
\hyxmp@add@to@xml{%
_______________<rdf:li xml:lang="\hyxmp@x@default">\hyxmp@xmlified</rdf:li>^^J%
____________</rdf:Alt>^^J%
-_________</dc:#1>^^J%
+_________</dc:#2>^^J%
}%
- \fi%
+ \fi
}%
-\newcommand*{\hyxmp@list@to@xml}[3]{%
- \ifx#3\@empty
+\newcommand*{\hyxmp@list@to@xml}[4][\iffalse]{%
+ \@tempswafalse
+ \ifx#4\@empty
\else
+ \@tempswatrue
+ \fi
+ #1
+ \@tempswatrue
+ \fi
+ \if@tempswa
\hyxmp@add@to@xml{%
-_________<dc:#1>^^J%
-____________<rdf:#2>^^J%
+_________<dc:#2>^^J%
+____________<rdf:#3>^^J%
}%
\bgroup
- \hyxmp@xmlify{#3}%
+ \hyxmp@xmlify{#4}%
\hyxmp@commas@to@list\hyxmp@list{\hyxmp@xmlified}%
\def\@elt##1{%
\hyxmp@add@to@xml{%
@@ -689,8 +711,8 @@ _______________<rdf:li>##1</rdf:li>^^J%
\hyxmp@list
\egroup
\hyxmp@add@to@xml{%
-____________</rdf:#2>^^J%
-_________</dc:#1>^^J%
+____________</rdf:#3>^^J%
+_________</dc:#2>^^J%
}%
\fi
}
@@ -700,13 +722,14 @@ ______<rdf:Description rdf:about=""^^J%
____________xmlns:dc="http://purl.org/dc/elements/1.1/">^^J%
_________<dc:format>application/pdf</dc:format>^^J%
}%
- \hyxmp@rdf@dc{title}{\@pdftitle}%
- \hyxmp@rdf@dc{description}{\@pdfsubject}%
+ \hyxmp@rdf@dc[\ifHy@pdfa]{title}{\@pdftitle}%
+ \hyxmp@rdf@dc[\ifHy@pdfa]{description}{\@pdfsubject}%
\hyxmp@rdf@dc{rights}{\@pdfcopyright}%
- \hyxmp@list@to@xml{creator}{Seq}{\hyxmp@pdfauthor}%
+ \hyxmp@list@to@xml[\ifHy@pdfa]{creator}{Seq}{\hyxmp@pdfauthor}%
\hyxmp@list@to@xml{subject}{Bag}{\hyxmp@pdfkeywords}%
\hyxmp@list@to@xml{date}{Seq}{\hyxmp@today}%
\hyxmp@list@to@xml{language}{Bag}{\@pdflang}%
+ \hyxmp@list@to@xml{type}{Bag}{\@pdftype}%
\hyxmp@add@simple{dc:source}{\jobname.tex}%
\hyxmp@add@to@xml{%
______</rdf:Description>^^J%
@@ -826,21 +849,20 @@ _________<#1>%
\hyxmp@iptc@extensions
\hyxmp@add@to@xml{%
______<rdf:Description rdf:about=""^^J%
-___________xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"^^J%
-___________xmlns:IptcContInfo="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/contactinfo/">^^J%
+___________xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">^^J%
_______<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">^^J%
}%
\fi
- \hyxmp@list@to@lines{IptcContInfo:CiAdrExtadr}{\@pdfcontactaddress}%
- \hyxmp@add@simple{IptcContInfo:CiAdrCity}{\@pdfcontactcity}%
- \hyxmp@add@simple{IptcContInfo:CiAdrRegion}{\@pdfcontactregion}%
- \hyxmp@add@simple{IptcContInfo:CiAdrPcode}{\@pdfcontactpostcode}%
- \hyxmp@add@simple{IptcContInfo:CiAdrCtry}{\@pdfcontactcountry}%
+ \hyxmp@list@to@lines{Iptc4xmpCore:CiAdrExtadr}{\@pdfcontactaddress}%
+ \hyxmp@add@simple{Iptc4xmpCore:CiAdrCity}{\@pdfcontactcity}%
+ \hyxmp@add@simple{Iptc4xmpCore:CiAdrRegion}{\@pdfcontactregion}%
+ \hyxmp@add@simple{Iptc4xmpCore:CiAdrPcode}{\@pdfcontactpostcode}%
+ \hyxmp@add@simple{Iptc4xmpCore:CiAdrCtry}{\@pdfcontactcountry}%
\bgroup
\def\xmplinesep{,}%
- \hyxmp@list@to@lines{IptcContInfo:CiTelWork}{\@pdfcontactphone}%
- \hyxmp@list@to@lines{IptcContInfo:CiEmailWork}{\@pdfcontactemail}%
- \hyxmp@list@to@lines{IptcContInfo:CiUrlWork}{\@pdfcontacturl}%
+ \hyxmp@list@to@lines{Iptc4xmpCore:CiTelWork}{\@pdfcontactphone}%
+ \hyxmp@list@to@lines{Iptc4xmpCore:CiEmailWork}{\@pdfcontactemail}%
+ \hyxmp@list@to@lines{Iptc4xmpCore:CiUrlWork}{\@pdfcontacturl}%
\egroup
\ifx\hyxmp@photometa@data\@empty
\else
@@ -878,8 +900,8 @@ ______________<pdfaSchema:valueType>^^J%
________________<rdf:Seq>^^J%
__________________<rdf:li rdf:parseType="Resource">^^J%
____________________<pdfaType:type>contactinfo</pdfaType:type>^^J%
-____________________<pdfaType:namespaceURI>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/contactinfo/</pdfaType:namespaceURI>^^J%
-____________________<pdfaType:prefix>IptcContInfo</pdfaType:prefix>^^J%
+____________________<pdfaType:namespaceURI>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/</pdfaType:namespaceURI>^^J%
+____________________<pdfaType:prefix>Iptc4xmpCore</pdfaType:prefix>^^J%
____________________<pdfaType:description>contact information</pdfaType:description>^^J%
____________________<pdfaType:field>^^J%
______________________<rdf:Seq>^^J%
@@ -919,8 +941,8 @@ ________________________</rdf:li>^^J%
______<rdf:Description rdf:about=""^^J%
____________xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">^^J%
}%
- \hyxmp@add@simple{pdfaid:part}{1}%
- \hyxmp@add@simple{pdfaid:conformance}{B}%
+ \hyxmp@add@simple{pdfaid:part}{\@pdfapart}%
+ \hyxmp@add@simple{pdfaid:conformance}{\@pdfaconformance}%
\hyxmp@add@to@xml{%
______</rdf:Description>^^J%
}%