summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-02-05 23:40:13 +0000
committerKarl Berry <karl@freefriends.org>2016-02-05 23:40:13 +0000
commit463c2ec14523be0366ac7388095b0e1dacbc8d3f (patch)
tree8c61b63ccc40dcf7308ecafe2c061914be629067 /Master/texmf-dist/tex/latex/pdfx/pdfx.sty
parent51400e096ca50dd3c9303cf8aea839947ea4c0dc (diff)
pdfx (5feb16)
git-svn-id: svn://tug.org/texlive/trunk@39594 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/pdfx/pdfx.sty')
-rw-r--r--Master/texmf-dist/tex/latex/pdfx/pdfx.sty666
1 files changed, 450 insertions, 216 deletions
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,75 +210,44 @@
\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'.