From 463c2ec14523be0366ac7388095b0e1dacbc8d3f Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Fri, 5 Feb 2016 23:40:13 +0000
Subject: pdfx (5feb16)

git-svn-id: svn://tug.org/texlive/trunk@39594 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/pdfx/pdfx.sty | 666 ++++++++++++++++++++----------
 1 file changed, 450 insertions(+), 216 deletions(-)

(limited to 'Master/texmf-dist/tex/latex/pdfx/pdfx.sty')

diff --git a/Master/texmf-dist/tex/latex/pdfx/pdfx.sty b/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
index cb3d7d74c0d..49c321f80ad 100644
--- a/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
+++ b/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
@@ -6,7 +6,7 @@
 %%
 %% pdfx.dtx  (with options: `package')
 %% 
-%%  Copyright (c) 2015, CV Radhakrishnan <cvr@river-valley.org>,
+%%  Copyright (c) 2016, CV Radhakrishnan <cvr@river-valley.org>,
 %%    Han The Thanh <thanh@river-valley.org>,
 %%    Ross Moore <ross.moore@mq.edu.au>,
 %%    Peter Selinger <selinger@mathstat.dal.ca>
@@ -21,15 +21,15 @@
 %%  and version 1.2 or later is part of all distributions of LaTeX
 %%  version 1999/12/01 or later.
 %% 
- \@ifpackageloaded{pdfxmult}{%
-  \PackageError{pdfx}%
+\@ifpackageloaded{pdfxmult}{%
+ \PackageError{pdfx}%
   {^^JThis package may not be used in conjunction with the \space pdfxmult \space package}%
   {Type \space x <return> \space to exit; or just \space <return> \space to continue without this package.}%
-  \expandafter\let\csname opt@pdfx.sty\endcsname\@empty\endinput
-  }{}%
+ \expandafter\let\csname opt@pdfx.sty\endcsname\@empty\endinput
+}{}%
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{pdfx}
-  [2015/02/17 v1.5.3 PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
+  [2016/02/04 v1.5.6 PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
 
 \newif\ifpdfx@noBOM \pdfx@noBOMfalse   % use a BOM in the XMP packet
 \newif\ifpdfx@x \pdfx@xfalse   % PDF/X mode
@@ -91,10 +91,10 @@
 \DeclareOption{vt-1}{\global\pdfx@xtrue\global\pdfx@vttrue
   \def\xmp@Part{4}\def\xmp@vtPart{1}\def\xmp@Conformance{}\def\xmp@vtConformance{}%
   \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
-\DeclareOption{vt-2}{\global\pdfx@xtrue\global\pdfx@vttrue
-  \def\xmp@Part{4}\def\xmp@vtPart{2}\def\xmp@Conformance{}\def\xmp@vtConformance{}%
+\DeclareOption{vt-2}{\global\pdfx@xtrue\global\pdfx@vttrue\global\no@iccprofiletrue
+  \def\xmp@Part{5}\def\xmp@vtPart{2}\def\xmp@Conformance{pg}\def\xmp@vtConformance{}%
   \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
-\DeclareOption{vt-2s}{\global\pdfx@xtrue\global\pdfx@vttrue
+\DeclareOption{vt-2s}{\global\pdfx@xtrue\global\pdfx@vttrue\global\no@iccprofiletrue
   \def\xmp@Part{5}\def\xmp@vtPart{2}\def\xmp@Conformance{pg}\def\xmp@vtConformance{s}%
   \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
 
@@ -107,23 +107,35 @@
 
 %% inhibits writing the XMP byte-order marker
 \DeclareOption{noBOM}{\pdfx@noBOMtrue}
+\DeclareOption{useBOM}{\pdfx@noBOMfalse}
 
 \pdfminorversion=4 %  assumed for PDF/A ;  options may change this for  PDF/X
 \expandafter\ifx\csname pdfresetpageorigin\endcsname\relax\else
  \pdfresetpageorigin=0
 \fi
+
+\ExecuteOptions{noBOM,a-1b}
 \ProcessOptions
 
+\RequirePackage{ifluatex}
+\ifluatex
+ \RequirePackage{pdftexcmds}%
+ \let\pdfx@mdfivesum\pdf@mdfivesum
+\else
+ \let\pdfx@mdfivesum\pdfmdfivesum
+\fi
+ \def\pdfx@encodingfile{l8uenc.def}
+
 {\endlinechar=-1
  \everyeof{\noexpand}%
  \xdef\pdfx@bannerstring{\expandafter\scantokens\expandafter{\pdftexbanner}}
 }%
-\def\pdfx@testbannerstr{This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/dev) kpathsea version 6.2.0dev}%
+\def\pdfx@testbannerstr{%
+ This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/dev) kpathsea version 6.2.0dev}%
 \ifx\pdfx@bannerstring\pdfx@testbannerstr
  \typeout{This version of pdfTeX cannot write out upper-range character bytes, 128-255.}%
  \typeout{Any UTF-8 Unicode characters in the Metadata will not be written correctly.}%
  \typeout{Please update to a more stable version of pdfTeX.^^J}%
- \pdfx@noBOMtrue
 \fi
 
 \ifpdfx@x
@@ -141,11 +153,18 @@
               /TrimBox[25 20 570 773]}
 \fi
 \ifnum\pdfminorversion >3 \relax
- \pdfmapline{+dummy-space <dummy-space.pfb}
+ \expandafter\ifx\csname pdfsuppresswarningdupmap\endcsname\relax
+  \pdfmapline{+dummy-space <dummy-space.pfb}
+ \else
+  \advance\pdfsuppresswarningdupmap 1
+  \pdfmapline{+dummy-space <dummy-space.pfb}
+  \advance\pdfsuppresswarningdupmap -1
+ \fi
  \expandafter\ifx\csname pdfgeninterwordspace\endcsname\relax\else
   \pdfgeninterwordspace=1 \relax
  \fi
 \fi
+%% the "pdftex" option seems to work fine with LuaTeX
 \ifpdfx@x
  \@ifpackageloaded{hyperref}{%
   \hypersetup{draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]}
@@ -162,13 +181,18 @@
  \else
  \@ifpackageloaded{hyperref}{%
   \hypersetup{pdftex,pdfa}%
+  \Hy@pdfatrue
  }{%
   \RequirePackage[pdftex,pdfa]{hyperref}
+  \Hy@pdfatrue
  }%
 \fi\fi
-\hypersetup{pdfencoding=unicode}
+\hypersetup{pdfencoding=auto}%  unicode
 
-\RequirePackage{inputenc}
+\ifluatex\else
+ \RequirePackage{inputenc}
+\fi
+\InputIfFileExists{\pdfx@encodingfile}{}{}
 
 %%----------------------------------------------------------------------
 %% Macros for reading XMP data with special catcodes. Usage:
@@ -186,74 +210,43 @@
  \xmp@doparse{#1}%
 }
 \def\xmp@doparse#1#2{%
- \def\@this{#2}#1%
- \endgroup%
+ \def\@this{#2}#1
+ \endgroup
 }
 
 %%----------------------------------------------------------------------
 %% Local commands. They are only brought into scope during the reading
 %% of xmpdata.
-\def\pdfx@localcommands{%
- \def\Title{\xmp@parse{\global\let\xmp@Title\@this}}%
- \def\Author{\xmp@parse{\global\let\xmp@Author\@this}}%
- \def\Keywords{\xmp@parse{\global\let\xmp@Keywords\@this}}%
- \def\Subject{\xmp@parse{\global\let\xmp@Subject\@this}}%
- \def\CreatorTool{\xmp@parse{\global\let\xmp@CreatorTool\@this}}%
- \def\Producer{\xmp@parse{\global\let\xmp@Producer\@this}}%
- \def\Volume{\xmp@parse{\global\let\xmp@Volume\@this}}%
- \def\Issue{\xmp@parse{\global\let\xmp@Issue\@this}}%
- \def\CoverDisplayDate{\xmp@parse{\global\let\xmp@CoverDisplayDate\@this}}%
- \def\CoverDate{\xmp@parse{\global\let\xmp@CoverDate\@this}}%
+\def\pdfx@localcommands{
+ \def\Title{\xmp@parse{\global\let\xmp@Title\@this}}
+ \def\Author{\xmp@parse{\global\let\xmp@Author\@this}}
+ \def\Keywords{\xmp@parse{\global\let\xmp@Keywords\@this}}
+ \def\Subject{\xmp@parse{\global\let\xmp@Subject\@this}}
+ \def\CreatorTool{\xmp@parse{\global\let\xmp@CreatorTool\@this}}
+ \def\Producer{\xmp@parse{\global\let\xmp@Producer\@this}}
+ \def\Volume{\xmp@parse{\global\let\xmp@Volume\@this}}
+ \def\Issue{\xmp@parse{\global\let\xmp@Issue\@this}}
+ \def\CoverDisplayDate{\xmp@parse{\global\let\xmp@CoverDisplayDate\@this}}
+ \def\CoverDate{\xmp@parse{\global\let\xmp@CoverDate\@this}}
  \def\Copyright{\xmp@parse{\global\let\xmp@Copyright\@this%
-  \ifx\xmp@Copyrighted\@empty\gdef\xmp@Copyrighted{True}\fi}}%
+   \ifx\xmp@Copyrighted\@empty\gdef\xmp@Copyrighted{True}\fi}}
  \def\CopyrightURL{\xmp@parse{\global\let\xmp@CopyrightURL\@this%
-  \ifx\xmp@Copyrighted\@empty\gdef\xmp@Copyrighted{True}\fi}}%
- \def\Copyrighted{\xmp@parse{\global\let\xmp@Copyrighted\@this}}%
- \def\Doi{\xmp@parse{\global\let\xmp@Doi\@this}}%
- \def\Lastpage{\xmp@parse{\global\let\xmp@Lastpage\@this}}%
- \def\Firstpage{\xmp@parse{\global\let\xmp@Firstpage\@this}}%
- \def\PublicationType{\xmp@parse{\global\let\xmp@PublicationType\@this}}%
+   \ifx\xmp@Copyrighted\@empty\gdef\xmp@Copyrighted{True}\fi}}
+ \def\Copyrighted{\xmp@parse{\global\let\xmp@Copyrighted\@this}}
+ \def\Doi{\xmp@parse{\global\let\xmp@Doi\@this}}
+ \def\Lastpage{\xmp@parse{\global\let\xmp@Lastpage\@this}}
+ \def\Firstpage{\xmp@parse{\global\let\xmp@Firstpage\@this}}
+ \def\PublicationType{\xmp@parse{\global\let\xmp@PublicationType\@this}}
  \def\Journaltitle{\xmp@parse{\global\let\xmp@Journaltitle\@this%
-  \ifx\xmp@PublicationType\@empty\gdef\xmp@PublicationType{journal}\fi}}%
- \def\Journalnumber{\xmp@parse{\global\let\xmp@Journalnumber\@this}}%
- \def\Publisher{\xmp@parse{\global\let\xmp@Publisher\@this}}%
- \def\AuthoritativeDomain{\xmp@parse{\global\let\xmp@AuthoritativeDomain\@this}}%
- % some aliases for backward compatibility:
- \let\Creator\CreatorTool%
- \let\Org\Publisher%
- \let\WebStatement\CopyrightURL%
- % user-level commands for color profiles:
- \let\setRGBcolorprofile\pdfx@setRGBcolorprofile%
- \let\setCMYKcolorprofile\pdfx@setCMYKcolorprofile%
- \let\setGRAYcolorprofile\pdfx@setGRAYcolorprofile%
+   \ifx\xmp@PublicationType\@empty\gdef\xmp@PublicationType{journal}\fi}}
+ \def\Journalnumber{\xmp@parse{\global\let\xmp@Journalnumber\@this}}
+ \def\Publisher{\xmp@parse{\global\let\xmp@Publisher\@this}}
+ \def\AuthoritativeDomain{\xmp@parse{\global\let\xmp@AuthoritativeDomain\@this}} % currently unused; for backward compatibility
+ \let\Creator\CreatorTool  % for backward compatibility
+ \let\Org\Publisher        % for backward compatibility
+ \let\WebStatement\CopyrightURL  % for backward compatibility
 }
 
-%%----------------------------------------------------------------------
-%% Defaults
-
-\def\xmp@Producer{pdfTeX}
-\edef\xmp@CreatorTool{\@pdfcreator}
-
-\global\let\xmp@Title\@empty
-\global\let\xmp@Author\@empty
-\global\let\xmp@Keywords\@empty
-\global\let\xmp@Subject\@empty
-\global\let\xmp@Volume\@empty
-\global\let\xmp@Issue\@empty
-\global\let\xmp@CoverDisplayDate\@empty
-\global\let\xmp@CoverDate\@empty
-\global\let\xmp@Copyright\@empty
-\global\let\xmp@CopyrightURL\@empty
-\global\let\xmp@Copyrighted\@empty
-\global\let\xmp@Doi\@empty
-\global\let\xmp@Lastpage\@empty
-\global\let\xmp@Firstpage\@empty
-\global\let\xmp@PublicationType\@empty
-\global\let\xmp@Journaltitle\@empty
-\global\let\xmp@Journalnumber\@empty
-\global\let\xmp@Publisher\@empty
-\global\let\xmp@AuthoritativeDomain\@empty
-
 %%----------------------------------------------------------------------
 %% The following characters and markup can be used within the XMP data
 %% defined by \Author, \Title, and so on.
@@ -301,45 +294,85 @@
 
 {\obeyspaces\gdef\pdfx@sep{</rdf:li>^^J     <rdf:li>}}
 
-\def\pdfx@xmpmarkup{%
- \pdfx@actives%
- \edef\@amp{\expandafter\@gobble\string\&}%
- \edef\@hash{\expandafter\@gobble\string\#}%
- \edef\ {\expandafter\@gobble\string\ }%
- \edef\%{\expandafter\@gobble\string\%}%
- \edef\{{\expandafter\@gobble\string\{}%
- \edef\}{\expandafter\@gobble\string\}}%
- \edef\backslash{\expandafter\@gobble\string\\}%
- \def\@unicode##1{\@amp\@hash x##1;}%
- \def\pdfx@amp{\@unicode{0026}}%
- \def\pdfx@lt{\@unicode{003c}}%
- \def\pdfx@gt{\@unicode{003e}}%
- \def\copyright{\@unicode{00A9}}%
+\def\pdfx@xmpmarkup{
+ \pdfx@actives
+ \edef\@amp{\expandafter\@gobble\string\&}
+ \edef\@hash{\expandafter\@gobble\string\#}
+ \edef\ {\expandafter\@gobble\string\ }
+ \edef\%{\expandafter\@gobble\string\%}
+ \edef\{{\expandafter\@gobble\string\{}
+ \edef\}{\expandafter\@gobble\string\}}
+ \edef\backslash{\expandafter\@gobble\string\\}
+ \def\@unicode##1{\@amp\@hash x##1;}
+ \def\pdfx@amp{\@unicode{0026}}
+ \def\pdfx@lt{\@unicode{003c}}
+ \def\pdfx@gt{\@unicode{003e}}
+ \def\copyright{\@unicode{00A9}}
  \let\&\pdfx@amp               % for backward compatibility
  \let\TextCopyright\copyright  % for backward compatibility
- \let\sep\pdfx@sep%
+ \let\sep\pdfx@sep
+ \the\pdfxsafeforxmp@toks
 }
 
+%% In case macros are used in XMP Metadata, need a way to map these
+%% to simple text, rather than specific font characters, or whatever:
+\newtoks\pdfxsafeforxmp@toks
+\def\pdfxEnableCommands#1{%   user command
+ \expandafter\global\expandafter\pdfxsafeforxmp@toks
+  \expandafter{\the\pdfxsafeforxmp@toks#1}}
+
 %%----------------------------------------------------------------------
 %% Markup bindings to be used during PDF string generation.
 
-\def\pdfx@pdfmarkup{%
- \pdfx@actives%
- \edef\%{\expandafter\@gobble\string\%}%
- \edef\{{\expandafter\@gobble\string\{}%
- \edef\}{\expandafter\@gobble\string\}}%
- \edef\pdfx@backslash{\expandafter\@gobble\string\\}%
- \def\backslash{\pdfx@backslash000\pdfx@backslash134}%
- \edef\pdfx@amp{\expandafter\@gobble\string\&}%
- \edef\pdfx@lt{\expandafter\@gobble\string\<}%
- \edef\pdfx@gt{\expandafter\@gobble\string\>}%
+\def\pdfx@pdfmarkup{
+ \pdfx@actives
+ \edef\%{\expandafter\@gobble\string\%}
+ \edef\{{\expandafter\@gobble\string\{}
+ \edef\}{\expandafter\@gobble\string\}}
+ \edef\pdfx@backslash{\expandafter\@gobble\string\\}
+ \def\backslash{\pdfx@backslash000\pdfx@backslash134}
+ \edef\pdfx@amp{\expandafter\@gobble\string\&}
+ \edef\pdfx@lt{\expandafter\@gobble\string\<}
+ \edef\pdfx@gt{\expandafter\@gobble\string\>}
  \let\TextCopyright\copyright  % for backward compatibility
- \def\sep{, }%
- % Note: '\ ', \&, \copyright are already predefined by hyperref.
+ \def\sep{, }
+%% Note: '\ ', \&, \copyright are already predefined by hyperref.
+ \the\pdfxsafeforxmp@toks
 }
 
 %%----------------------------------------------------------------------
-\def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfmdfivesum{#1}}
+%% Defaults
+
+\ifluatex
+ \def\xmp@Producer{LuaTeX}
+\else
+ \def\xmp@Producer{pdfTeX}
+\fi
+\edef\xmp@CreatorTool{\@pdfcreator}
+
+\global\let\xmp@Title\@empty
+\global\let\xmp@Author\@empty
+\global\let\xmp@Keywords\@empty
+\global\let\xmp@Subject\@empty
+\global\let\xmp@Volume\@empty
+\global\let\xmp@Issue\@empty
+\global\let\xmp@CoverDisplayDate\@empty
+\global\let\xmp@CoverDate\@empty
+\global\let\xmp@Copyright\@empty
+\global\let\xmp@CopyrightURL\@empty
+\gdef\xmp@WebStatement{\xmp@CopyrightURL}
+\global\let\xmp@Doi\@empty
+\global\let\xmp@Lastpage\@empty
+\global\let\xmp@Firstpage\@empty
+\global\let\xmp@PublicationType\@empty
+\global\let\xmp@Journaltitle\@empty
+\global\let\xmp@Journalnumber\@empty
+\global\let\xmp@Publisher\@empty
+\gdef\xmp@Org{\xmp@Publisher}
+\global\let\xmp@AuthoritativeDomain\@empty
+
+%%----------------------------------------------------------------------
+\def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfx@mdfivesum{#1}}
      \expandafter\pdfx@eightofnine\pdfx@tmpstring\end}
 \def\pdfx@eightofnine#1#2#3#4#5#6#7#8#9\end{%
      \xdef\pdfx@eightchars{#1#2#3#4#5#6#7#8}
@@ -366,74 +399,110 @@
 %% -----   Color Profiles  -------
 %% Define how to specify the profile, so the default
 %% can be over-ridden in the  .xmpdata  file.
-
-%% The user-level macros are only brought into scope during the reading
-%% of xmpdata.
 %%
-%% Usage:
-%% \setRGBcolorprofile{<filename>}{<identifier>}{<info string>}{<registry URL>}
-%% \setCMYKcolorprofile{<filename>}{<output intent>}{<identifier>}{<registry URL>}
-%% \setGRAYcolorprofile{<filename>}{<output intent>}{<identifier>}{<registry URL>}
-%%
-%% Within the arguments of each macro, the characters '<', '>', '&',
-%% '^', '_', '#', '$', and '~' can be used as themselves, but
-%% '%' must be escaped as '\%'.
-%%
-%% Note:
-%% * RGB profile is used with PDF/A and PDF/E files.
-%% * CMYK profile is used with PDF/X and PDF/VT files.
-%% * GRAY profile is currently unused.
-\def\pdfx@profilecatcodes{%
-  \catcode`\<=12\catcode`\>=12\catcode`\&=12\catcode`\^=12
-  \catcode`\_=12\catcode`\#=12\catcode`\$=12\catcode`\~=12
-  \edef\%{\expandafter\@gobble\string\%}%
+%%   --- user-command ---   RGB profile needed with  PDF/A-??  files
+%%   \setRGBcolorprofile{<filename>}{<identifier>}{<info string>}{<registry URL>}
+\def\setRGBcolorprofile{%
+ \begingroup
+  \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax
+  \edef\({\string\(}\edef\){\string\)}%
+  \pdfx@setrgbprofile}
+%%
+%%  --- user-command ---   CMYK profile needed with  PDF/X-??  files
+%%  \setCMYKcolorprofile{<filename>}{<output intent>}{<identifier>}{<registry URL>}
+\def\setCMYKcolorprofile{%
+ \begingroup
+  \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax
+  \edef\({\string\(}\edef\){\string\)}%
+  \pdfx@setcmykprofile}
+%%
+%%  --- user-command ---   DeviceGray profile needed with  PDF/E-1  files
+%%  \setGRAYcolorprofile{<filename>}{<output intent>}{<identifier>}{<registry URL>}
+\def\setGRAYcolorprofile{%
+ \begingroup
+  \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax
+  \edef\({\string\(}\edef\){\string\)}%
+  \pdfx@setgrayprofile}
+%%
+%%  --- user-command ---   External profile needed with  PDF/X-4p  and PDF/X-5pg  files
+%%  \setEXTERNALprofile{<profilename>}{<output intent>}{<identifier>}{<registry URL>}%
+%%    {<color-space>}{<ICC Version>}{<provider URL>}{<extra info>}{<Check Sum>}
+\def\setEXTERNALprofile{%
+ \begingroup
+  \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax
+  \edef\({\string\(}\edef\){\string\)}%
+  \pdfx@externalprofile}
+%%
+%%
+\def\pdfx@setRGBcolorprofiledir#1{%
+ \gdef\pdfx@RGBcolorprofiledir{#1}%
 }
-\def\pdfx@setRGBcolorprofile{%
-  \begingroup
-  \pdfx@profilecatcodes
-  \pdfx@dosetRGBcolorprofile}
-\def\pdfx@dosetRGBcolorprofile#1#2#3#4{%
-  \xdef\pdfx@rgb@profile{#1}%  valid file name
-  \xdef\pdfx@rgb@identifier{#2}%
-  \xdef\pdfx@rgb@info{#3}%
-  \pdfstringdef\pdfx@rgb@registry{#4}%  valid URL
-  \endgroup}%  closes-off  \pdfx@setRGBcolorprofile
-%%
-\def\pdfx@setCMYKcolorprofile{%
-  \begingroup
-  \pdfx@profilecatcodes
-  \pdfx@dosetCMYKcolorprofile}
-\def\pdfx@dosetCMYKcolorprofile#1#2#3#4{%
- \xdef\pdfx@cmyk@profile{#1}%  valid file name
- \pdfstringdef\pdfx@cmyk@intent{#2}%  color intent
- \pdfstringdef\pdfx@cmyk@identifier{#3}%  text string identifier
- \pdfstringdef\pdfx@cmyk@registry{#4}%  valid URL
- \endgroup}%  closes-off  \pdfx@setCMYKcolorprofile
-%%
-\def\pdfx@setGRAYcolorprofile{%
-  \begingroup
-  \pdfx@profilecatcodes
-  \pdfx@dosetGRAYcolorprofile}
-\def\pdfx@dosetGRAYcolorprofile#1#2#3#4{%
- \xdef\pdfx@gray@profile{#1}%  valid file name
- \xdef\pdfx@gray@intent{#2}%
- \xdef\pdfx@gray@identifier{#3}%
+\def\pdfx@setCMYKcolorprofiledir#1{%
+ \gdef\pdfx@CMYKcolorprofiledir{#1}%
+}
+\pdfx@setRGBcolorprofiledir{}
+\pdfx@setCMYKcolorprofiledir{}
+
+%% This does indeed work!  Use it in  .xmpdata  files
+\providecommand{\AdobeMacOSdir}{/Library/Application Support/Adobe/Color/Profiles/Recommended/}
+\edef\pdfx@tmp{C:\string\Windows\string\System32\string\Spool\string\Drivers\string\Color\string/}
+\expandafter\providecommand\expandafter{\expandafter\WindowsColordir\expandafter}\expandafter{\pdfx@tmp}
+%%\pdfx@setcolorprofiledir{\AdobeMacOSdir}
+
+%% overide that value using the following commands:
+\let\pdfxSetCMYKcolorProfileDir\pdfx@setCMYKcolorprofiledir
+\let\pdfxSetRGBcolorProfileDir\pdfx@setRGBcolorprofiledir
+\let\pdfxSetColorProfileDir\pdfxSetCMYKcolorProfileDir % for back-compatibility
+%%
+\def\pdfx@setrgbprofile#1#2#3#4{%
+ \xdef\pdfx@rgb@profile{\pdfx@RGBcolorprofiledir#1}%  valid file name
+ \gdef\pdfx@rgb@identifier{#2}%
+ \gdef\pdfx@rgb@info{#3}%
+ \pdfstringdef\pdfx@rgb@registry{#4}%  valid URL
+ \endgroup}%  closes-off  \setRGBcolorprofile
+%%
+\def\pdfx@setcmykprofile#1#2#3#4{%
+ \xdef\pdfx@cmyk@profile{\pdfx@CMYKcolorprofiledir#1}%  valid file name
+%% \expandafter\gdef\expandafter\pdfx@cmyk@profile\expandafter{\pdfx@colorprofiledir#1}%  valid file name
+ \gdef\pdfx@cmyk@intent{#2}%
+%% \pdfstringdef\pdfx@cmyk@intent{#2}%  color intent
+ \gdef\pdfx@cmyk@identifier{#3}%
+%% \pdfstringdef\pdfx@cmyk@identifier{#3}%  text string identifier
+ \gdef\pdfx@cmyk@registry{#4}%
+%% \pdfstringdef\pdfx@cmyk@registry{#4}%  valid URL
+ \endgroup}%  closes-off  \setCMYKcolorprofile
+%%
+\def\pdfx@setgrayprofile#1#2#3#4{%
+ \gdef\pdfx@gray@profile{#1}%  valid file name
+ \gdef\pdfx@gray@intent{#2}%
+ \gdef\pdfx@gray@identifier{#3}%
  \pdfstringdef\pdfx@gray@registry{#4}%  valid URL
- \endgroup}%  closes-off  \pdfx@setGRAYcolorprofile
-%%----------------------------------------------------------------------
+ \endgroup}%  closes-off  \setGRAYcolorprofile
+%%
+\def\pdfx@externalprofile#1#2#3#4#5#6#7#8#9{%
+ \gdef\pdfx@extprofile{#1}% PDF string for /ProfileName
+ \gdef\pdfx@cmyk@intent{#2}% PDF string for /OutputCondition
+ \gdef\pdfx@cmyk@identifier{#3}% PDF string for /OutputConditionIdentifier
+ \gdef\pdfx@cmyk@registry{#4}% {http://www.color.org}%
+ \gdef\pdfx@profileCS{#5}%  4 bytes for /ProfileCS
+ \gdef\pdfx@iccversion{#6}%  Hex string for /ICCVersion < ... >
+ \gdef\pdfx@colorURL{#7}%  URL
+ \gdef\pdfx@cmyk@info{#8}%  for /Info
+ \gdef\pdfx@profile@checksum{#9}%  Hex string for /CheckSum < ... >
+ \endgroup}%  closes-off  \setEXTERNALprofile
+%%
 %% default color profiles
-\pdfx@setRGBcolorprofile{sRGB_IEC61966-2-1_black_scaled.icc}
-  {sRGB_IEC61966-2-1_black_scaled}
-  {sRGB IEC61966 v2.1 with black scaling}
-  {http://www.color.org}
-\pdfx@setCMYKcolorprofile{coated_FOGRA39L_argl.icc}
-  {Coated FOGRA39}
-  {FOGRA39 (ISO Coated v2 300\% (ECI))}
-  {http://www.argyllcms.com/}
-\pdfx@setGRAYcolorprofile{Gray_linear.icc}
- {}
- {Custom}
- {http://www.freedesktop.org/wiki/OpenIcc}
+{\catcode`\_ 12 \catcode`\& 12 \catcode`\~ 12
+ \gdef\pdfx@xprofile@cmykdefault{coated_FOGRA39L_argl.icc}
+ \gdef\pdfx@aprofile@rgbdefault{sRGB_IEC61966-2-1_black_scaled.icc}
+ \gdef\pdfx@eprofile@graydefault{Gray_linear.icc}
+ \gdef\pdfx@pprofile@externaldefault{FOGRA39}
+}% end of \catcode
+\xdef\pdfx@rgb@profile{\pdfx@aprofile@rgbdefault}
+\xdef\pdfx@cmyk@profile{\pdfx@xprofile@cmykdefault}
+\xdef\pdfx@gray@profile{\pdfx@eprofile@graydefault}
+\xdef\pdfx@external@profile{\pdfx@pprofile@externaldefault}
+
 %%----------------------------------------------------------------------
 %% License for the file  sRGB_IEC61966-2-1_black_scaled.icc :
 %%
@@ -452,15 +521,41 @@
 %%
 %% Terms of use
 %%
-%% To anyone who acknowledges that the file "sRGB_IEC61966-2-1_black_scaled.icc"
-%% is provided "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTY, permission
-%% to use, copy and distribute these file for any purpose is hereby
-%% granted without fee, provided that the file is not changed including
-%% the ICC copyright notice tag, and that the name of ICC shall not be
-%% used in advertising or publicity pertaining to distribution of the
-%% software without specific, written prior permission.  ICC makes no
-%% representations about the suitability of this software for any
-%% purpose.
+%% To anyone who acknowledges that the file "sRGB_IEC61966-2-1_black_scaled.icc" is provided "AS IS" WITH NO EXPRESS
+%% OR IMPLIED WARRANTY, permission to use, copy and distribute these file for any purpose is hereby granted without fee,
+%% provided that the file is not changed including the ICC copyright notice tag, and that the name of ICC shall not be used
+%% in advertising or publicity pertaining to distribution of the software without specific, written prior permission.
+%% ICC makes no representations about the suitability of this software for any purpose.
+%%
+%%----------------------------------------------------------------------
+{\catcode`\| 14 \catcode`\% 12 \catcode`\_ 12
+ \edef\@bchar{\expandafter\@gobble\string\\}|
+ \edef\({\string\(}\edef\){\string\)}|
+ \begingroup | \endgroup occurs within the macro expansion
+\expandafter\pdfx@setrgbprofile\expandafter{sRGB_IEC61966-2-1_black_scaled.icc}|
+ {sRGB_IEC61966-2-1_black_scaled}|
+ {sRGB IEC61966 v2.1 with black scaling}|
+ {http://www.color.org}|
+ \begingroup | \endgroup occurs within the macro expansion
+\pdfx@setcmykprofile{coated_FOGRA39L_argl.icc}|{FOGRA39L.icc}| coated_FOGRA39L_argl.icc
+ {Coated FOGRA39}|
+ {FOGRA39 \string\(ISO Coated v2 300%\space \string\(ECI\string\)\string\)}|
+ {http://www.argyllcms.com/}|{http://www.color.org}|
+ \begingroup | \endgroup occurs within the macro expansion
+\pdfx@setgrayprofile{Gray_linear.icc}|
+ {}|
+ {Custom}|
+ {http://www.freedesktop.org/wiki/OpenIcc}|
+\ifno@iccprofile
+ \begingroup | \endgroup occurs within the macro expansion
+  \pdfx@externalprofile{Coated FOGRA39 \(ISO 12647-2:2004\)}|
+   {Offset commercial and specialty printing according to ISO 12647-2:2004 |
+    / Amd 1, paper type 1 or 2 \(gloss or matte coated offset, 115 g/m2\), |
+    screen frequency 60/cm.}|
+   {FOGRA39}{http://www.color.org}{CMYK}{02100000}{http://www.adobe.com}|
+   {Coated FOGRA39 \(ISO 12647-2:2004\)}{74FF62F330BF0DBE4495B5720542D511}|
+\fi
+}% end of \catcode
 %%
 %%----------------------------------------------------------------------
 %% License for the file  coated_FOGRA39L_argl.icc :
@@ -489,46 +584,97 @@
 %%    distribution.
 %%----------------------------------------------------------------------
 
+\newif\ifexternalICCprofiles
+
 \begingroup
- \inputencoding{8bit}%
+%% override unneeded color-profile specifier
+ \ifpdfx@x
+  \ifno@iccprofile %  PDF/X-4p  and  PDF/X-5pg  PDF/VT-2
+   \begingroup
+    \def\pdfx@extprofiles@store{AdobeExternalProfiles.tex}%
+    \InputIfFileExists{\pdfx@extprofiles@store}%
+     {\global\externalICCprofilestrue \catcode `\# 12\relax}%
+     {\typeout{** pdfx: No file \pdfx@extprofiles@store\space found for PDF/X-4p or PDF/X-5pg}}%
+   \endgroup
+  \else
+   \begingroup
+    \def\pdfx@profiles@store{AdobeColorProfiles.tex}%
+    \InputIfFileExists{\pdfx@profiles@store}%
+     {\global\externalICCprofilesfalse \catcode `\# 12\relax}%
+     {\typeout{** pdfx: No file \pdfx@profiles@store\space found for PDF/X variants}}%
+   \endgroup
+   \def\setRGBcolorprofile#1#2#3#4{}%
+  \fi
+ \else
+%% load it, in case the macros are used in .xmpdata
+  \InputIfFileExists{AdobeColorProfiles.tex}{}{}%
+  \ifpdfx@e
+  \else
+   \def\setCMYKcolorprofile#1#2#3#4{}%
+   \def\setGRAYcolorprofile#1#2#3#4{}%
+ \fi\fi
+%%
+ \ifluatex\else
+  \inputencoding{8bit}%
+ \fi
  \makeatletter
  \pdfx@localcommands
+%%
  \InputIfFileExists{\jobname.xmpdata}%
-  {\typeout{**pdfx: Metadata file  \jobname.xmpdata  read successfully.}}%
-  {\typeout{**pdfx: No file  \jobname.xmpdata . Metadata will be incomplete!}}
+  {\typeout{** pdfx: Metadata file  \jobname.xmpdata  read successfully.}}%
+  {\typeout{** pdfx: No file  \jobname.xmpdata . Metadata will be incomplete!}}
 \endgroup
+
 %% ----------------------------------------------------------------------
+\newif\ifpdfx@cmyk
 \begingroup
 \ifpdfx@x   %  PDF/X  needs a CMYK color profile for printing
- \def\0{\string\0}
+ \global\pdfx@cmyktrue
+ \edef\@pctchar{\expandafter\@gobble\string\%}
+ \edef\@bchar{\expandafter\@gobble\string\\}
+ \edef\0{\string\0}
+ \edef\({\string\(}
+ \edef\){\string\)}
  \catcode`\_ 12
  \ifno@iccprofile %  PDF/X-4p  and  PDF/X-5pg
-   \immediate\pdfobj {<</FS /URL /F (http://www.color.org/registry/profiles/Coated_Fogra39L_VIGC_300.icc)>>}
+   \immediate\pdfobj {<</FS/URL/F(\pdfx@colorURL)>>}
    \edef\OBJ@URLs{\the\pdflastobj}%
-   \xdef\pdfx@cmyk@intent{Coated_Fogra39L_VIGC_300}%
-   \xdef\pdfx@cmyk@identifier{Coated_Fogra39L_VIGC_300.icc}%
+%%   \xdef\pdfx@cmyk@intent{Offset commercial and specialty printing according to ISO 12647-2:2004 / Amd 1, %
+%%    paper type 1 or 2 \(gloss or matte coated offset, 115 g/m2\), screen frequency 60/cm.0}%
+%%   \xdef\pdfx@cmyk@info{Coated FOGRA39 \(ISO 12647-2:2004\)}%
+%%   \xdef\pdfx@cmyk@name{Coated FOGRA39 \(ISO 12647-2:2004\)}%
+%%   \xdef\pdfx@cmyk@identifier{FOGRA39}%
    \immediate\pdfobj {<<%
-     /CheckSum <5449c505618a9b6c38634b4708ae9e37>^^J% d5f0714cd9d6092b6ac93b625f5d8a0c>%
-     /ICCVersion (\004\002\000\000)%  4.2.0.0
-     /ProfileCS (CMYK)^^J%
-     /ProfileName (\pdfx@cmyk@identifier)^^J%
+     /CheckSum <\pdfx@profile@checksum>^^J%
+     /ICCVersion <\pdfx@iccversion>%
+     /ProfileCS (\pdfx@profileCS)^^J%
+     /ProfileName (\pdfx@extprofile)^^J%
      /URLs [\OBJ@URLs\space 0 R ]
     >>} %
   \edef\OBJ@ICC{\the\pdflastobj}%
+%%  \IfFileExists{\pdfx@rgb@profile}{%
+%%   \immediate\pdfobj stream attr{/N 3^^J /Alternate /DeviceRGB} file{\pdfx@rgb@profile}%
+%%   \edef\OBJ@RGB{\the\pdflastobj}%
+%%  }{%
+%%   \errmessage{No color profile found to use for RGB screen colors.}%
+%%  }%
   \pdfcatalog{%
    /OutputIntents [ <<
    /Type/OutputIntent
    /S/GTS_PDFX
    /OutputCondition (\pdfx@cmyk@intent)%
    /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
+   /Info(\pdfx@cmyk@intent)%
    /RegistryName(\pdfx@cmyk@registry)
-   % extra dictionary required for PDF/X-4p and  PDF/X-5pg
+%% extra dictionary required for PDF/X-4p and  PDF/X-5pg
    /DestOutputProfileRef \OBJ@ICC\space 0 R
   >> ]}%
+%%
  \else  %  PDF/X-1 , PDF/X-1a , PDF/X-3 , PDF/X-4 , PDF/X-5g
-  \IfFileExists{\pdfx@cmyk@profile}{%
+%%
+  \IfFileExists{"\pdfx@cmyk@profile"}{%
   %  embedded CMYK color profile
-  \immediate\pdfobj stream attr{/N 4} file{\pdfx@cmyk@profile}%
+  \immediate\pdfobj stream attr{/N 4} file{"\pdfx@cmyk@profile"}%
   \edef\OBJ@CMYK{\the\pdflastobj}%
   \pdfcatalog{%
    /OutputIntents [ <<
@@ -536,22 +682,47 @@
    /S/GTS_PDFX
    /OutputCondition (\pdfx@cmyk@intent)%
    /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
+   /Info(\pdfx@cmyk@intent)%
    /RegistryName(\pdfx@cmyk@registry)
    /DestOutputProfile \OBJ@CMYK\space 0 R
   >> ]}%
  }{%
-  \errmessage{No color profile found to use for CMYK printing colors.}%
+  \errmessage{No color profile \pdfx@cmyk@profile\ found to use for CMYK printing colors.}%
  }%
  \fi % end of  \ifno@iccprofile
 \else
-%%  PDF/A  needs an RGB color profile for on-screen rendering
- \IfFileExists{\pdfx@rgb@profile}{%
-  \immediate\pdfobj stream attr{/N 3^^J/Alternate/DeviceRGB} file{\pdfx@rgb@profile}%
-  \edef\OBJ@RGB{\the\pdflastobj}%
+%%  PDF/A  and  PDF/E  can specify a CMYK profile
+ \expandafter\ifx\expandafter\relax\pdfx@rgb@profile\relax
+  \global\pdfx@cmyktrue
+  \IfFileExists{"\pdfx@cmyk@profile"}{%
+  %  embedded CMYK color profile
+  \immediate\pdfobj stream attr{/N 4} file{"\pdfx@cmyk@profile"}%
+  \edef\OBJ@CMYK{\the\pdflastobj}%
+  \pdfcatalog{%
+   /ViewerPreferences <</DisplayDocTitle true >>
+   /OutputIntents [ <<
+   /Type /OutputIntent
+   \ifpdfx@e
+    /S/ISO_PDFE1
+   \else
+    /S/GTS_PDFA1
+   \fi
+   /OutputCondition (\pdfx@cmyk@intent)%  use this or  /Info ?
+   /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
+   /DestOutputProfile \OBJ@CMYK\space 0 R
+   /Info(\pdfx@cmyk@intent)%
+   /RegistryName(\pdfx@cmyk@registry)
+  >> ]}%
  }{%
-  \errmessage{No color profile found to use for RGB screen colors.}%
+  \errmessage{No color profile \pdfx@cmyk@profile\ found to use for CMYK screen colors.}%
  }%
- \pdfcatalog{%
+ \else
+%%  PDF/A and  PDF/E usually need an RGB color profile for on-screen rendering
+ \global\pdfx@cmykfalse
+ \IfFileExists{"\pdfx@rgb@profile"}{%
+  \immediate\pdfobj stream attr{/N 3^^J/Alternate/DeviceRGB} file{"\pdfx@rgb@profile"}%
+  \edef\OBJ@RGB{\the\pdflastobj}%
+  \pdfcatalog{%
    /ViewerPreferences <</DisplayDocTitle true >>
    /OutputIntents [ <<
    /Type /OutputIntent
@@ -560,12 +731,16 @@
    \else
     /S/GTS_PDFA1
    \fi
-    /OutputConditionIdentifier (\pdfx@rgb@identifier)%
+   /OutputConditionIdentifier (\pdfx@rgb@identifier)%
    /DestOutputProfile \OBJ@RGB\space 0 R
    /Info(\pdfx@rgb@info)
    /RegistryName(\pdfx@rgb@registry)
   >>
  ]}%
+ }{%
+  \errmessage{No color profile found to use for RGB screen colors.}%
+ }%
+ \fi % end of \ifx
 \fi % end of  \ifpdfx@x
 \endgroup
 
@@ -581,9 +756,16 @@
 \begingroup
  \pdfx@xmpmarkup
  \def\sep{, }%
- \inputencoding{8bit}\makeatletter
+ \ifluatex\else
+  \inputencoding{8bit}%
+ \fi
+ \makeatletter
+ \IfFileExists{\pdfx@encodingfile}{%
+  \def\cf@encoding{U}\fontencoding{U}%
+ }{}%
  \xdef\xmp@@Keywords{\xmp@Keywords}
  \xdef\xmp@@Author{\xmp@Author}
+ \xdef\xmp@@Copyright{\xmp@Copyright}
 \endgroup
 
 %% ----------------------------------------------------------------------
@@ -623,16 +805,18 @@
 %% ----------------------------------------------------------------------
 %% \pdfx@topdfstring\toka\tokb: Convert the string in \tokb to a format
 %% appropriate for PDF /Info strings, i.e., PDFDoc encoding or UTF-16
-%% encoding, and store the result in \toka. As a special case, if \tokb
+%% encoding, and store the result in \toka As a special case, if \tokb
 %% is \@empty, set \toka to \@empty.
 
 \def\pdfx@topdfstring#1#2{%
  \ifx#2\@empty
-  \global\let#1\@empty
+  \global\let#1\empty
  \else
   \begingroup
-   \inputencoding{utf8}%
-   \hypersetup{pdfencoding=unicode}%
+   \ifluatex\else
+    \inputencoding{utf8}%
+   \fi
+   \hypersetup{pdfencoding=auto}%
    \pdfstringdef#1{#2}%
   \endgroup
  \fi
@@ -655,7 +839,8 @@
 \pdfgentounicode=1
 
 \ifpdfx@x
- {\pdfinfo{%   order of these dictionary keys should not matter
+ {\def\sep{,}%
+  \pdfinfo{%   order of these dictionary keys should not matter
    \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi
    /CreationDate(D:\pdfx@convDate)%
    /Creator(\pdfx@CreatorTool)%
@@ -677,10 +862,11 @@
    \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
    /Trapped/False%
   }%  end of  PDF/X  info
- }%
+ }% end of scope for  \sep
 \else
  \ifpdfx@e
- {\pdfinfo{%   order of these dictionary keys should not matter
+ {\def\sep{,}%
+  \pdfinfo{%   order of these dictionary keys should not matter
    \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi
    /CreationDate(D:\pdfx@convDate)%
    /Creator(\pdfx@CreatorTool)%
@@ -692,16 +878,17 @@
    \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
    /Trapped/False%
   }%  end of  PDF/E  info
- }%
+ }% end of scope for  \sep
  \else
  \def\pdfx@confA{a}%
  \def\pdfx@confB{b}%
  \def\pdfx@confU{u}%
- \edef\xmp@conformance{\csname pdfx@conf\xmp@Conformance\endcsname}%
+ \expandafter\def\expandafter\xmp@conf\expandafter{\csname pdfx@conf\xmp@Conformance\endcsname}%
  \AtBeginDocument{%
   \def\PDF@FinishDoc{%
    \Hy@UseMaketitleInfos
-   \pdfinfo{%
+   {\def\sep{, }%
+    \pdfinfo{%
      \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
      \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi
      \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi
@@ -719,8 +906,9 @@
      \fi
      /Producer(\pdfx@Producer)%
      /Trapped/False
-     /GTS_PDFA1Version (PDF/A-\xmp@Part\xmp@conformance:\xmp@ReleaseDate)%
+     /GTS_PDFA1Version (PDF/A-\xmp@Part\xmp@conf:\xmp@ReleaseDate)%
     }%  end of  PDF/A  info
+   }% end of scope for  \sep
   }% end of  \PDF@FinishDoc
  }% end of  \AtBeginDocument
 \fi\fi
@@ -740,12 +928,12 @@
   \else
    \def\xmp@template{pdfa}%
  \fi\fi
- % patch commands from  xmpincl.sty  ...
+%% patch commands from  xmpincl.sty  …
  \def\pdfx@xmpinclStart{% supply byte-order marker
-  <?xpacket begin='^^ef^^bb^^bf'? id='W5M0MpCehiHzreSzNTczkc9d' ?> %
+  <?xpacket begin='^^ef^^bb^^be' id='W5M0MpCehiHzreSzNTczkc9d' ?> %
  }%
  \def\pdfx@xmpinclStartAlt{% no byte-order marker
-  <?xpacket begin=''? id='W5M0MpCehiHzreSzNTczkc9d' ?> %
+  <?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' ?> %
  }%
  \def\pdfx@xmpinclEnd{%  allow XMP packet to be writable
   <?xpacket end='w'?> %
@@ -756,19 +944,63 @@
   \let\mcs@xmpinclStart\pdfx@xmpinclStartAlt
  \fi
  \let\mcs@xmpinclEnd\pdfx@xmpinclEnd
-%% ... preventing their redefinition
+%% … preventing their redefinition
  \def\newcommand#1#2{}%
- %
+%%
+%% \def\pdfx@endeval{%
+%%  \noexpand \TE@setvaltrue \noexpand \else
+%%  \noexpand \TE@setvalfalse \noexpand \fi
+%%   \noexpand \TE@negatefalse \noexpand \fi}%
+%% \let\TE@endeval\pdfx@endeval
+ \ifluatex\else
+  \inputencoding{8bit}%
+ \fi
+ \makeatletter
+%% \let\&=\xmpAmp
  \pdfx@xmpmarkup
- \catcode `\_ 12
+ \def\cf@encoding{U}\fontencoding{U}%
+ \providecommand{\ifnot@empty}[2]{\ifx#1\@empty\relax\else#2\fi}%
+%% \catcode `\_ 12
  \obeyspaces%  beware of 128 space characters in the next line -- for padding end of XMP packet
- \def\padding@line{                                                                                                                                }%
- \def\ifnot@empty#1#2{\ifx#1\@empty\else#2\fi}
- \inputencoding{8bit}\makeatletter
+ \gdef\paddingline{                                                                                                                                }%
  \typeout{Using XMP template file: \xmp@template.xmp}%
  \includexmp{\xmp@template}
 \endgroup
 
+%%
+%% controls the color model and conversions with  xcolor  package
+%%
+\ifpdfx@cmyk
+ \PassOptionsToPackage{xcolor}{cmyk,hyperref}
+ \def\pdfx@handlexcolor{\selectcolormodel{cmyk}\convertcolorsUtrue\convertcolorsDtrue}
+%%\hypersetup{allbordercolors=black,allcolors=black}%  else link borders use RGB
+ \ifpdfx@x\else
+  \AtBeginDocument{%
+   \def\@linkcolor{0 1 1 0}%
+   \def\@anchorcolor{0 0 0 1}%
+   \def\@citecolor{1 0 1 0}%
+   \def\@filecolor{.5 0 0 .5}%
+   \def\@urlcolor{0 1 0 0}%
+   \def\@menucolor{0 1 1 0}%
+   \def\@runcolor{.5 0 0 .5}%
+   \def\@linkbordercolor{0 1 1 0}%
+   \def\@citebordercolor{1 0 1 0}%
+   \def\@filebordercolor{.5 0 0 .5}%
+   \def\@urlbordercolor{1 0 0 0}%
+   \def\@menubordercolor{0 1 1 0}%
+   \def\@runbordercolor{.7 0 0 .3}%
+   \def\Fld@bcolor{0 0 0 0}%
+   \def\Fld@bordercolor{0 1 1 0}%
+  }
+ \fi
+\else
+ \PassOptionsToPackage{xcolor}{rgb,hyperref}
+ \def\pdfx@handlexcolor{\selectcolormodel{rgb}\convertcolorsUtrue\convertcolorsDtrue}
+\fi
+\@ifpackageloaded{xcolor}{\pdfx@handlexcolor}{%
+ \AtBeginDocument{\@ifpackageloaded{xcolor}{\pdfx@handlexcolor}{}}
+}
+
 %% disable hyperref options, to prevent changes that will cause an incompatibility
  \Hy@DisableOption{pdfauthor}%
  \Hy@DisableOption{pdftitle}%
@@ -778,6 +1010,8 @@
  \Hy@DisableOption{pdfmoddate}%
  \Hy@DisableOption{pdfproducer}%
  \Hy@DisableOption{pdfkeywords}%
+%% once set correctly, don't let this change
+ \Hy@DisableOption{pdfa}\let\Hy@pdfafalse\relax\let\Hy@pdfatrue\relax
 \endinput
 %%
 %% End of file `pdfx.sty'.
-- 
cgit v1.2.3

