% \iffalse meta-comment
%                                                                
%  File: pdfx.dtx
%
%  Copyright (c) 2015, 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>
%                      
%  This file may be distributed and/or modified under the conditions
%  of the LaTeX Project Public License, either version 1.2 of this
%  license or (at your option) any later version.  The latest version
%  of this license is in:
%    
%    http://www.latex-project.org/lppl.txt
%    
%  and version 1.2 or later is part of all distributions of LaTeX
%  version 1999/12/01 or later.
%
% \fi
%
% \CheckSum{1844}
% \iffalse
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage{rvdtx}
\EnableCrossrefs         
\CodelineIndex
\RecordChanges 
\begin{document}
  \DocInput{\jobname.dtx}
  \PrintChanges
  \PrintIndex
\end{document}
%</driver>
% \fi
%
% \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
%   Lower-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
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \GetFileInfo{pdfx.dtx}
%
% \DoNotIndex{\newcommand,\newenvironment}
% 
% \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let}
% \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi}
% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup}
% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand}
% \DoNotIndex{\space,\@empty,\special,\@nil,\advance\@nnil}
% \DoNotIndex{\\,\@gobble,\@@,\@fornoop,\@fortmp,\@ifundefined}
% \DoNotIndex{\@tempcnta,\@tempcntb,\{,\},\alph,\bgroup,\egroup}
% \DoNotIndex{\do,\end,\HN,\ifcase,\ifnum,\IfFileExists,\ifvmode}
% \DoNotIndex{\ignorespaces,\immediate,\input,\item,\jobname}
% \DoNotIndex{\leavevmode,\loop,\repeat,\makeatletter,\makeatother}
% \DoNotIndex{\meaning,\newcounter,\next,\or,\par,\renewcommand}
% \DoNotIndex{\renewcommand,\renewenvironment,\stepcounter}
% \DoNotIndex{\Tg,\thepage,\unskip,\write,\advance,\{,\}}
% \DoNotIndex{\@ifpackageloaded,\@pdfcreationdate,\@pdfcreator}
% \DoNotIndex{\@pdfmoddate,\AtBeginDocument,\catcode,\DeclareOption}
% \DoNotIndex{\endinput,\endlinechar,\errmessage,\everyeof,\futurelet}
% \DoNotIndex{\Hy@DisableOption,\Hy@UseMaketitleInfos,\hypersetup}
% \DoNotIndex{\inputencoding,\InputIfFileExists,\NeedsTeXFormat}
% \DoNotIndex{\newif,\noexpand,\obeyspaces,\PackageError,\PDF@FinishDoc}
% \DoNotIndex{\pdfcatalog,\pdfcreationdate,\pdfgeninterwordspace}
% \DoNotIndex{\pdfinterwordspace,\pdfinterwordspaceoff,\pdfgentounicode}
% \DoNotIndex{\pdfinfo,\pdfinterwordspaceon,\pdflastobj,\pdfmapline}
% \DoNotIndex{\pdfmdfivesum,\pdfminorversion,\pdfobj,\pdfobjcompresslevel}
% \DoNotIndex{\pdfpageattr,\pdfresetpageorigin,\pdfstringdef}
% \DoNotIndex{\pdftexbanner,\ProcessOptions,\ProvidesPackage,\RequirePackage}
% \DoNotIndex{\scantokens,\typeout}
%
% \changes{v1.00}{2008/12/01}{Initial commit to the CVS.}
% \changes{v1.01}{2008/12/10}{glyphtounicode-cmr.tex included with the
%   package.}
% \changes{v1.3}{2008/12/01}{Fix copyright in xmp files.}
% \changes{v1.5.4}{2015/02/28}{Fixed timezone bug; Unicode support; more
%   PDF variants; added color profiles.}
%
% \title{Generation of PDF/X and PDF/A compliant PDF's
%  with PDF\TeX{} --- \texttt{pdfx.sty}}
% \date{2015/02/28}
% \version{1.5.4}
% \keywords{PDF, PDF/A, PDF/X, pdf\TeX, \LaTeX}
% \author{C.\,V.\,Radhakrishnan, \thanh, Ross~Moore {\upshape\small
% and} Peter Selinger}
% \contact{\texttt{[cvr,thanh]@river-valley.org},
% \texttt{ross.moore@mq.edu.au}, \texttt{selinger@mathstat.dal.ca}}
% 
% \maketitle
%
% \StopEventually{}
%
% \section{Introduction}
%
% PDF/X and PDF/A are umbrella terms used to denote several ISO
% standards that define different subsets of the PDF standard. The
% objective of PDF/X is to facilitate graphics exchange between
% document creator and printer and therefore, has all requirements
% related to printing. For instance, in PDF/X, all fonts need to be
% embedded and all images need to be CMYK or spot colors. PDF/X-2 and
% PDF/X-3 accept calibrated RGB and CIELAB colors along with all other
% specifications of PDF/X.
%
% PDF/A defines a profile for archiving PDF documents, which ensures
% the documents can be reproduced the exact same way in years to
% come. A key element to achieving this is that PDF/A documents shall
% be 100\% self contained.  All the information needed to display the
% document in the same manner every time is embedded in the file. A
% PDF/A document is not permitted to be reliant on information from
% external sources.  Other restrictions include avoidance of
% audio/video content, JavaScript and encryption.  Mandatory inclusion
% of fonts, color profile and standards based metadata are absolutely
% essential for PDF/A.
%
% This package currently supports generation of PDF/X and PDF/A
% compliant documents using \pdftex. Support for additional standards
% is also included; see the complete list in
% Section~\ref{ssec-options} below. 
%
% \section{Usage}
%
% \subsection{Options}\label{ssec-options}
%
% The package can be loaded with the command:
% \begin{decl}
% \defmacro{usepackage}|[<option>]{pdfx}|
% \end{decl}
% where the options are as follows.
%
% \subsubsection{PDF/A options}
% 
% PDF/A is an ISO standard intended for long-term archiving of
% electronic documents. It therefore emphasizes self-containedness and
% reproducibility, as well as machine readable metadata.  The PDF/A
% standard has three conformance levels ``a'', ``b'', and ``u''. Level
% ``a'' is the strictest, but is not yet fully implemented by the
% |pdfx| package. Conformance level ``u'' has the same requirements as
% level ``b'', but with the additional requirement that all text in
% the document must have a Unicode mapping. However, the |pdfx|
% package produces such Unicode mappings even in level ``b'' files.
% The standard also has three different versions 1, 2, and 3, which
% were standardized in 2005, 2011, and 2012, respectively.  Earlier
% versions contain a subset of the features of later versions, so for
% maximum portability, it is preferable to use a lower-numbered
% version. There is no conformance level ``u'' in version 1 of the
% standard.  For many typical uses of PDF/A, it is sufficient to use
% PDF/A-1b.
%
% \begin{itemize}
% \item |a-1a|: generate PDF/A-1a. Experimental, not fully implemented.
% \item |a-1b|: generate PDF/A-1b.
% \item |a-2a|: generate PDF/A-2a. Experimental, not fully implemented.
% \item |a-2b|: generate PDF/A-2b.
% \item |a-2u|: generate PDF/A-2u.
% \item |a-3a|: generate PDF/A-3a. Experimental, not fully implemented.
% \item |a-3b|: generate PDF/A-3b.
% \item |a-3u|: generate PDF/A-3u.
% \end{itemize}
%
% \subsubsection{PDF/E options}
% 
% PDF/E is an ISO standard intended for documents used in engineering
% workflows. There is only one version of the PDF/E standard so far,
% and it is called PDF/E-1.
% 
% \begin{itemize}
% \item |e-1|: generate PDF/E-1.
% \end{itemize}
%
% \subsubsection{PDF/VT options}
%
% PDF/VT is an ISO standard intended as an exchange format for
% variable and transactional printing, and is an extension of the
% PDF/X-4 standard. The standard specifies three PDF/VT conformance
% levels. Level 1 is for single-file exchange, level 2 is for
% multi-file exchange, and level 2s is for streamed delivery.
% Currently, none of the PDF/VT conformance levels are fully
% implemented by the |pdfx| package.
% 
% \begin{itemize}
% \item |vt-1|: generate PDF/VT-1. Experimental, not fully implemented.
% \item |vt-2|: generate PDF/VT-2. Experimental, not fully implemented.
% \item |vt-2s|: generate PDF/VT-2s. Experimental, not fully implemented.
% \end{itemize}
%
% \subsubsection{PDF/X options}
%
% PDF/X is an ISO standard intended for graphics interchange. It
% emphasizes printing-related requirements, such as embedded fonts and
% color profiles. The PDF/X standard has a large number of variants
% and conformance levels. The basic variants are known as X-1, X-1a,
% X-3, X-4, and X-5. (Note that there is no X-2 standard, because it
% was either never published or withdrawn). The PDF/X-1a standard
% exists in revisions of 2001 and 2003, the PDF/X-3 standard exists in
% revisions of 2002 and 2003, and the PDF/X-4 and PDF/X-5 standards
% exist in revisions of 2008 and 2010. Moreover, some of these
% standards have a ``p'' version, which permits the use of an
% externally supplied color profile (instead of an embedded one),
% and/or a ``g'' version, which permits the use of external graphical
% content. Moreover, PDF/X-5 has an ``n'' version, which extends
% PDF/X-4p by permitting additional color spaces other than Grayscale,
% RGB, and CMYK. For many typical uses of PDF/X, it is sufficient to
% use PDF/X-1a.
%
% \begin{itemize}
% \item |x-1|:    generate PDF/X-1.
% \item |x-1a|:   generate PDF/X-1a. Options |x-1a1| and |x-1a3| are
% also available to specify PDF/X-1a:2001 or PDF/X-1a:2003 explicitly.
% \item |x-3|:    generate PDF/X-3. Options |x-302| and |x-303| are
% also available to specify PDF/X-3:2002 or PDF/X-3:2003 explicitly.
% \item |x-4|:    generate PDF/X-4. Options |x-408| and |x-410| are            
% also available to specify PDF/X-4:2008 or PDF/X-4:2010 explicitly.
% \item |x-4p|:   generate PDF/X-4p. Options |x-4p08| and |x-4p10| are
% also available to specify PDF/X-4p:2008 or PDF/X-4p:2010 explicitly.
% Experimental, not fully implemented.
% \item |x-5g|:   generate PDF/X-5g. Options |x-5g08| and |x-5g10| are
% also available to specify PDF/X-5g:2008 or PDF/X-5g:2010 explicitly.
% \item |x-5n|:   generate PDF/X-5n. Options |x-5n08| and |x-5n10| are
% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010
% explicitly. Experimental, not fully implemented.
% \item |x-5pg|:  generate PDF/X-5pg. Options |x-5pg08| and |x-5pg10| are
% also available to specify PDF/X-5pg:2008 or PDF/X-5pg:2010 explicitly.
% Experimental, not fully implemented.
% \end{itemize}
%
% \subsubsection{Other options}
%
% These options are experimental and should not normally be used.
%
% \begin{itemize}
% \item |noBOM|: do not generate the optional byte order marker in the
% embedded XMP metadata. Try this option in case there is an
% unexplained error involving the |xmpincl| package.
% \item |pdf13|: use PDF 1.3, overriding the version specified by the
% applicable standard. This may produce a non-standard-conforming PDF file.
% \item |pdf14|: use PDF 1.4, overriding the version specified by the
% applicable standard. This may produce a non-standard-conforming PDF file.
% \item |pdf15|: use PDF 1.5, overriding the version specified by the
% applicable standard. This may produce a non-standard-conforming PDF file.
% \item |pdf16|: use PDF 1.6, overriding the version specified by the
% applicable standard. This may produce a non-standard-conforming PDF file.
% \item |pdf17|: use PDF 1.7, overriding the version specified by the
% applicable standard. This may produce a non-standard-conforming PDF file.
% \end{itemize} 
%
% \subsection{Data file for metadata}
%
% As mentioned above, standards compliant PDF documents need metadata
% to be included. The |pdfx| package expects the metadata to be
% supplied in a special data file called |\jobname.xmpdata|. Here,
% |\jobname| is usually the basename of the document's main |.tex|
% file. For example, if your document source is in the file
% |main.tex|, then the metadata must be in a file called
% |main.xmpdata|. None of the individual metadata fields are
% mandatory, but for most documents, it makes sense to define at least
% the title and the author. Here is an example of a short |.xmpdata|
% file:
% \begin{verbatim}
%   \Title{Baking through the ages}
%   \Author{A. Baker\sep C. Kneader}
%   \Keywords{cookies\sep muffins\sep cakes}
%   \Publisher{Baking International}
% \end{verbatim}
% You may note that multiple authors and keywords have been separated
% by |\sep|. The |\sep| macro is only permitted in within the
% |\Author|, |\Keywords|, and |\Publisher| fields.
% 
% \subsection{List of supported metadata fields}
% 
% Here is a complete list of user-definable metadata fields currently
% supported, and their meanings. More may be added in the future.
% These commands can only be used in the |.xmpdata| file.
% 
% \subsubsection{General information:}
% 
% \begin{itemize}
% \item |\Author|: the document's human author. Separate multiple
%   authors with |\sep|.
% \item |\Title|: the document's title.
% \item |\Keywords|: list of keywords, separated with |\sep|.
% \item |\Subject|: the abstract.
% \item |\Publisher|: the publisher.
% \end{itemize}
%
% \subsubsection{Copyright information:}
%
% \begin{itemize}
% \item |\Copyright|: a copyright statement.
% \item |\CopyrightURL|: location of a web page describing the owner
%   and/or rights statement for this document.
% \item |\Copyrighted|: ``True'' if the document is copyrighted, and
%   ``False'' if it isn't. This is automatically set to ``True'' if either
%   |\Copyright| or |\CopyrightURL| is specified, but can be
%   overridden. For example, if the copyright statement is ``Public
%   Domain'', this should be set to ``False''.
% \end{itemize}
% 
% \subsubsection{Publication information:}
%
% \begin{itemize}
% \item |\PublicationType|: The type of publication. If defined, must
%   be one of book, catalog, feed, journal, magazine, manual,
%   newsletter, pamphlet. This is automatically set to ``journal'' if
%   |\Journaltitle| is specified, but can be overridden.
% \item |\Journaltitle|: The title of the journal in which the
%   document was published.
% \item |\Journalnumber|: The ISSN for the publication in which the
%   document was published.
% \item |\Volume|: Journal volume.
% \item |\Issue|: Journal issue/number.
% \item |\Firstpage|: First page number of the published version of
%   the document.
% \item |\Lastpage|: Last page number of the published version of the
%   document.
% \item |\Doi| : Digital Object Identifier (DOI) for the document,
%   without the leading ``doi:''.
% \item |\CoverDisplayDate|: Date on the cover of the journal issue,
%   as a human-readable text string.
% \item |\CoverDate|: Date on the cover of the journal issue, in a
%   format suitable for storing in a database field with a ``date'' data
%   type.
% \end{itemize}
%
% \subsection{Symbols permitted in metadata}
%
% Within the metadata, all printable ASCII characters except
% |\|, |{|, |}|, and |%| represent themselves. Also, all printable
% Unicode characters from the basic multilingual plane (i.e., up to
% code point U+FFFF) can be used directly with the UTF-8 encoding.
% (Please note: encodings other than UTF-8 are not currently supported
% in the metadata). Consecutive whitespace characters are combined
% into a single space. Whitespace after a macro such as |\copyright|,
% |\backslash|, or |\sep| is ignored. Blank lines are not permitted.
% Moreover, the following markup can be used:
%
% \begin{itemize}
% \item ``|\ |'':           a literal space  (for example after a macro)
% \item |\%|:           a literal |%|
% \item |\{|:           a literal |{|
% \item |\}|:           a literal |}|
% \item |\backslash|:   a literal backslash ``|\|''
% \item |\copyright|:   the \copyright\ copyright symbol
% \end{itemize}
% The macro |\sep| is only permitted within |\Author|, |\Keywords|,
% and |\Publisher|. It is used to separate multiple authors,
% keywords, etc.
% 
% \subsection{Color profiles}
%
% Most standards compliant PDF documents require a \emph{color
% profile} to be embedded in the file. In a nutshell, such a profile
% determines precisely how the colors used in the document will be
% rendered when printed to a physical medium. This can be used to
% ensure that the document will look exactly the same, even when it is
% printed on different printers, paper types, etc. The inclusion of a
% color profile is necessary to make the document completely
% self-contained.
%
% Since most \LaTeX\ users are not graphics professionals and are not
% particularly picky about colors, the |pdfx| package includes default
% profiles that will be included when nothing else is
% specified. Therefore, the average user doesn't have to do anything
% special about color.
%
% For users who have a specific color profile they wish to use, it is
% possible to do so by including a |\setRGBcolorprofile| or
% |\setCMYKcolorprofile| command in the |.xmpdata| file. Note that
% PDF/A and PDF/E require an RGB color profile, and PDF/X and PDF/VT
% require a CMYK color profile. Use the following commands to specify
% an RGB or CMYK color profile, respectively:
% 
% \begin{decl}
% \defmacro{setRGBcolorprofile}\marg{filename}\marg{identifier}\marg{info
% string}\marg{registry URL}
% \\[1ex]
% \defmacro{setCMYKcolorprofile}\marg{filename}\marg{output
% intent}\marg{identifier}\marg{registry URL}
% \end{decl}
% Within the arguments of these macros, the characters |<|, |>|, |&|,
% |^|, |_|, |#|, |$|, and |~| can be used as themselves, but
% |%| must be escaped as |\%|. The defaults are:
% \begin{verbatim}
% \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}
%
% \setCMYKcolorprofile{coated_FOGRA39L_argl.icc}
%                     {Coated FOGRA39}
%                     {FOGRA39 (ISO Coated v2 300\% (ECI))}
%                     {http://www.argyllcms.com/}
% \end{verbatim}
%
% Some color profile files may be obtained from the International
% Color Consortium.  Please take a look at
% \url{http://www.color.org/iccprofile.xalter}.
% 
% \subsection{Notes on the internal representation of metadata}
%                    
% Within the PDF file, metadata is deposited in two places: some data
% goes into the native PDF |/Info| dictionary, and some data goes into
% an XMP packet stored separately within the file. XMP is Adobe's
% Extensible Metadata Platform, and is an XML-based format. See
% \href{http://www.adobe.com/devnet/xmp/}{Adobe XMP Development
% Center} for more exhaustive information about XMP.  An XMP Toolkit
% SDK which supports the GNU/Linux, Macintosh and Windows operating
% systems is also provided under modified BSD licence.
%
% Some of the metadata, such as the author, title, and keywords, are
% stored {\bf both} in the XMP packet and in the |/Info|
% dictionary. For the resulting file to be standard compliant, the two
% copies of the data must be identical. All of this is taken care of
% automatically by the |pdfx| package.
% 
% In principle, users can resort to alternate ways to create an XMP
% file for inclusion in PDF. In this case, users should create a file
% |pdfa.xmp| or |pdfx.xmp| (etc., depending on the PDF flavor)
% containing the pre-defined data. However, this is an error prone
% process and is not recommended for most users. If there is a
% particular field of metadata that you need and that is not currently
% supported, please contact the authors.
%
% |pdfx| makes use of the |xmpincl| package to include |xmp| data into
% the PDF.  The documentation of |xmpincl| package may help interested
% users to understand the process of |xmp| data inclusion.
% 
% \subsection{Tutorials and technical notes}
%
% A tutorial with step-by-step instructions for generating PDF/A files
% can be found at:
% \url{http://www.mathstat.dal.ca/~selinger/pdfa/}.
%
% Some technical notes about production problems the authors have
% encountered while generating PDF/A compliant documents are available
% here:
% \url{http://support.river-valley.com/wiki/index.php?title=Generating_PDF/A_compliant_PDFs_from_pdftex}.
%
% 
%
% \section{Installing}
%
% The file |pdfx.dtx| is a composite document of program code and
% documentation in \LaTeX{} format in the tradition of \emph{literate
% programming}. To get the documentation that you are reading now,
% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|. Or better, use
% the included |Makefile|, which will also regenerate the index.
%
% To install the package, first extract the program code, i.e., the
% file |pdfx.sty|, by running \LaTeX{} or \TeX{} on the file
% |pdfx.ins|. Create a directory named |pdfx| under |$TEXMF/tex/latex|
% and copy the files |pdfx.sty|, |8bit.def|, |glyphtounicode-cmr.tex|,
% as well as the |*.icc| and |*.xmp| files, to it. Then update \TeX's
% file database using the appropriate command for your distribution and
% operating system (such as |texhash| or |mktexlsr|, or similar).
% 
% \subsection{Limitations and dependencies}
% 
%  |pdfx.sty| works only with \pdftex.  It further depends on the following
%  packages:
%  \begin{enumerate}
%  \item |xmpincl|  for insertion of metadata into PDF.
%  \item |hyperref| for hyperlinking, bookmarks, etc.
%  \item |glyphtounicode.tex| maps glyph names to corresponding Unicode.
%  \end{enumerate}
%
% \subsection{Files included}
%
% The following files are included in the archive:
%
% \subsubsection{Package files}
%
% \begin{itemize}
% \item |pdfx.sty| --- main package file generated from |pdfx.dtx|.
% \item |pdfa.xmp| --- specimen |xmp| template for PDF/A.
% \item |pdfe.xmp| --- specimen |xmp| template for PDF/E.
% \item |pdfvt.xmp| --- specimen |xmp| template for PDF/VT.
% \item |pdfx.xmp| --- specimen |xmp| template for PDF/X.
% \item |8bit.def| --- custom input encoding.
% \item |glyphtounicode-cmr.tex| --- maps glyph names to corresponding
%   Unicode for Computer Modern and other \TeX-specific fonts.
% \item |coated_FOGRA39L_argl.icc| --- a freely distributable CMYK
%   color profile.
% \item |sRGB_IEC61966-2-1_black_scaled.icc| --- a freely
%   distributable RGB color profile.
% \item |ICC_LICENSE.txt| --- the license for the color profiles.
% \end{itemize}
% 
% \subsubsection{Documentation}
% 
% \begin{itemize}
% \item |README| --- Readme file.
% \item |manifest.txt| --- file list.
% \item |sample.tex|, |sample.xmpdata| --- a sample file with sample
%   metadata.
% \item |small2e-pdfx.tex|, |small2e-pdfx.xmpdata| --- another sample
%   file with sample metadata.
% \end{itemize}
% 
% \subsubsection{Sources}
% 
% \begin{itemize}
% \item |src/pdfx.dtx| --- composite package and documentation.
% \item |src/pdfx.ins| --- installer batch file.
% \item |src/rvdtx.sty| --- used by |pdfx.dtx|.
% \item |src/Makefile| --- a Makefile for building the documentation.
% \end{itemize}
%
% \subsection{Miscellaneous information}
%
% The package is released under the \LaTeX{} Project Public
% Licence. Bug reports, suggestions, feature requests, etc., may be
% sent to the original authors at 
% \href{mailto:cvr@river-valley.org}{\ttfamily cvr@river-valley.org}
% and/or 
% \href{mailto:thanh@river-valley.org}{\ttfamily thanh@river-valley.org},
% or to the more recent contributors at
% \href{mailto:ross.moore@mq.edu.au}{\ttfamily ross.moore@mq.edu.au}
% and/or
% \href{mailto:selinger@mathstat.dal.ca}{\ttfamily selinger@mathstat.dal.ca}.
% 
% \section{Implementation}
% 
% \iffalse
%<*package>
% \fi
%    \begin{macrocode}
 \@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
  }{}%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pdfx}
  [2015/02/17 v1.5.3 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
\newif\ifpdfx@e \pdfx@efalse   % PDF/E mode; not implemented yet
\newif\ifpdfx@vt \pdfx@vtfalse   % PDF/VT mode, extension of  PDF/X
\newif\ifno@iccprofile   % used with PDF/X-4p and PDF/X-5pg

%% Not all combinations of the following parameters are meaningful.
\def\xmp@Part{1}               % PDF/A part: 1, 2, or 3
\def\xmp@Conformance{B}        % Conformance level: A, B, or U
\def\xmp@ReleaseDate{2005}     % 2001 for PDF/X-1, 2005 for PDF/A-1,
                               % 2010 for PDF/A-2, 2012 for PDF/A-3.

%%  default is to create  PDF/A-1b   
%%  options can change this for PDF/X or higher levels of PDF/A 
\DeclareOption{a-1a}{\global\pdfx@xfalse\def\xmp@Part{1}\def\xmp@Conformance{A}\def\xmp@ReleaseDate{2005}}
\DeclareOption{a-1b}{\global\pdfx@xfalse\def\xmp@Part{1}\def\xmp@Conformance{B}\def\xmp@ReleaseDate{2005}}
\DeclareOption{a-2a}{\global\pdfx@xfalse\def\xmp@Part{2}\def\xmp@Conformance{A}\def\xmp@ReleaseDate{2010}}
\DeclareOption{a-2b}{\global\pdfx@xfalse\def\xmp@Part{2}\def\xmp@Conformance{B}\def\xmp@ReleaseDate{2010}}
\DeclareOption{a-2u}{\global\pdfx@xfalse\def\xmp@Part{2}\def\xmp@Conformance{U}\def\xmp@ReleaseDate{2010}}
\DeclareOption{a-3a}{\global\pdfx@xfalse\def\xmp@Part{3}\def\xmp@Conformance{A}\def\xmp@ReleaseDate{2012}}
\DeclareOption{a-3b}{\global\pdfx@xfalse\def\xmp@Part{3}\def\xmp@Conformance{B}\def\xmp@ReleaseDate{2012}}
\DeclareOption{a-3u}{\global\pdfx@xfalse\def\xmp@Part{3}\def\xmp@Conformance{U}\def\xmp@ReleaseDate{2012}}
\DeclareOption{x-1}{\global\pdfx@xtrue\def\xmp@Part{1}\def\xmp@Conformance{a}\def\xmp@ReleaseDate{2001}\global\pdfminorversion=3 }
\DeclareOption{x-1a}{\global\pdfx@xtrue\def\xmp@Part{1}\def\xmp@Conformance{a}\def\xmp@ReleaseDate{2003}\global\pdfminorversion=3 }
\DeclareOption{x-1a1}{\global\pdfx@xtrue\def\xmp@Part{1}\def\xmp@Conformance{a}\def\xmp@ReleaseDate{2001}\global\pdfminorversion=3 }
\DeclareOption{x-1a3}{\global\pdfx@xtrue\def\xmp@Part{1}\def\xmp@Conformance{a}\def\xmp@ReleaseDate{2003}\global\pdfminorversion=3 }
\DeclareOption{x-2}{\global\pdfx@xtrue\def\xmp@Part{2}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2002}\global\pdfminorversion=4 }
\DeclareOption{x-3}{\global\pdfx@xtrue\def\xmp@Part{3}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2002}\global\pdfminorversion=3 }
\DeclareOption{x-302}{\global\pdfx@xtrue\def\xmp@Part{3}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2002}\global\pdfminorversion=3 }
\DeclareOption{x-303}{\global\pdfx@xtrue\def\xmp@Part{3}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2003}\global\pdfminorversion=4 }
%%%  Later versions, yet to be fully implemented
\DeclareOption{x-4}{\global\pdfx@xtrue\def\xmp@Part{4}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-4p}{\global\pdfx@xtrue\global\no@iccprofiletrue
  \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-408}{\global\pdfx@xtrue\def\xmp@Part{4}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-410}{\global\pdfx@xtrue\def\xmp@Part{4}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
\DeclareOption{x-4p08}{\global\pdfx@xtrue\global\no@iccprofiletrue
  \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-4p10}{\global\pdfx@xtrue\global\no@iccprofiletrue
  \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
\DeclareOption{x-5}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-5g}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{g}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-5n}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-5pg}{\global\pdfx@xtrue\global\no@iccprofiletrue
  \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-508}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-5g08}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{g}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-5n08}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-5pg08}{\global\pdfx@xtrue\global\no@iccprofiletrue
  \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\DeclareOption{x-510}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
\DeclareOption{x-5g10}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{g}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
\DeclareOption{x-5n10}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
\DeclareOption{x-5pg10}{\global\pdfx@xtrue\global\no@iccprofiletrue
  \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
\DeclareOption{e-1}{\global\pdfx@xfalse\global\pdfx@etrue
  \def\xmp@Part{1}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
\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{}%
  \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
\DeclareOption{vt-2s}{\global\pdfx@xtrue\global\pdfx@vttrue
  \def\xmp@Part{5}\def\xmp@vtPart{2}\def\xmp@Conformance{pg}\def\xmp@vtConformance{s}%
  \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }

%% extra options to alter the PDF minor version, in case needed in special circumstances
\DeclareOption{pdf13}{\global\pdfminorversion=3 }
\DeclareOption{pdf14}{\global\pdfminorversion=4 }
\DeclareOption{pdf15}{\global\pdfminorversion=5 }
\DeclareOption{pdf16}{\global\pdfminorversion=6 }
\DeclareOption{pdf17}{\global\pdfminorversion=7 }

%% inhibits writing the XMP byte-order marker
\DeclareOption{noBOM}{\pdfx@noBOMtrue}

\pdfminorversion=4 %  assumed for PDF/A ;  options may change this for  PDF/X
\expandafter\ifx\csname pdfresetpageorigin\endcsname\relax\else
 \pdfresetpageorigin=0
\fi
\ProcessOptions

{\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}%
\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
 \pdfobjcompresslevel=0 \relax
 \expandafter\ifx\csname pdfinterwordspaceoff\endcsname\relax\else
  \pdfinterwordspaceoff
  \let\pdfinterwordspaceon\pdfinterwordspaceoff
  \let\pdfinterwordspace\relax
 \fi
 \expandafter\ifx\csname pdfgeninterwordspace\endcsname\relax\else
  \pdfgeninterwordspace=0 \relax
 \fi
 \pdfpageattr{/MediaBox[0 0 595 793]
              /BleedBox[0 0 595 793]
              /TrimBox[25 20 570 773]}
\fi
\ifnum\pdfminorversion >3 \relax
 \pdfmapline{+dummy-space <dummy-space.pfb}
 \expandafter\ifx\csname pdfgeninterwordspace\endcsname\relax\else
  \pdfgeninterwordspace=1 \relax
 \fi
\fi
\ifpdfx@x
 \@ifpackageloaded{hyperref}{%
  \hypersetup{draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]}
 }{%
  \RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]{hyperref}
 }%
\else
 \ifpdfx@e
  \@ifpackageloaded{hyperref}{%
   \hypersetup{draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]}
  }{%
   \RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]{hyperref}
  }%
 \else
 \@ifpackageloaded{hyperref}{%
  \hypersetup{pdftex,pdfa}%
 }{%
  \RequirePackage[pdftex,pdfa]{hyperref}
 }%
\fi\fi
\hypersetup{pdfencoding=unicode}

\RequirePackage{inputenc}

%%----------------------------------------------------------------------
%% Macros for reading XMP data with special catcodes. Usage:
%%
%% \xmp@parse{continuation}{data}
%%
%% The effect is to read the data with special catcodes: '<', '>', and
%% '&' are "active", and '^', '_', '#', '$', '~' are "other". The data
%% is then bound to the locally scoped name \@this, and the
%% continuation is called.
\def\xmp@parse#1{%
 \begingroup
 \catcode`\<=13\catcode`\>=13\catcode`\&=13\catcode`\^=12
 \catcode`\_=12\catcode`\#=12\catcode`\$=12\catcode`\~=12
 \xmp@doparse{#1}%
}
\def\xmp@doparse#1#2{%
 \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\Copyright{\xmp@parse{\global\let\xmp@Copyright\@this%
  \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}}%
 \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%
}

%%----------------------------------------------------------------------
%% 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. 
%%
%% * All printable non-whitespace ASCII characters except
%%   '%', '{', '}', '\' can be used as themselves.
%% 
%% * All printable non-whitespace UTF-8 encoded Unicode characters
%%   from the basic multilingual plane can be used as themselves.
%% 
%% * As usual, consecutive whitespace characters are contracted to a
%%   single space. Whitespace after a macro such as \copyright is
%%   ignored. Blank lines are not permitted. 
%% 
%% * The following markup can be used:
%%   '\ '        - a literal space  (for example after a macro)
%%   \%          - a literal '%'
%%   \{          - a literal '{'
%%   \}          - a literal '}'
%%   \backslash  - a literal '\'
%%   \copyright  - the (c) copyright symbol
%%
%%   \sep        - only permitted within \Author, \Keywords, \Publisher.
%% 
%% * For backward compatibility, \& and \TextCopyright are also
%%   provided. Their use is deprecated.

%%----------------------------------------------------------------------
%% The macro \pdfx@actives binds the active characters
%% '&', '<', and '>' to \pdfx@amp, \pdfx@lt, and \pdfx@gt,
%% respectively, without actually making them active.
\begingroup
 \catcode`\<=13
 \catcode`\>=13
 \catcode`\&=13
 \gdef\pdfx@actives{
  \def&{\pdfx@amp}
  \def<{\pdfx@lt}
  \def>{\pdfx@gt}
 }
\endgroup

%%----------------------------------------------------------------------
%% Markup bindings to be used during XMP generation.

{\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}}%
 \let\&\pdfx@amp               % for backward compatibility
 \let\TextCopyright\copyright  % for backward compatibility
 \let\sep\pdfx@sep%
}

%%----------------------------------------------------------------------
%% 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\>}%
 \let\TextCopyright\copyright  % for backward compatibility
 \def\sep{, }%
 % Note: '\ ', \&, \copyright are already predefined by hyperref.
}

%%----------------------------------------------------------------------
\def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfmdfivesum{#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}
     \pdfx@fouroffive#9\end}
\def\pdfx@fouroffive#1#2#3#4#5\end{\xdef\pdfx@ffourchars{#1#2#3#4}
     \pdfx@sfouroffive#5\end}
\def\pdfx@sfouroffive#1#2#3#4#5\end{\xdef\pdfx@sfourchars{#1#2#3#4}
     \pdfx@tfouroffive#5\end}
\def\pdfx@tfouroffive#1#2#3#4#5\end{\xdef\pdfx@tfourchars{#1#2#3#4}
     \xdef\pdfx@laststring{#5}}

\def\pdfx@uuid{\pdfx@eightchars-%
          \pdfx@ffourchars-%
          \pdfx@sfourchars-%
          \pdfx@tfourchars-%
          \pdfx@laststring}

\pdfx@findUUID{\jobname.pdf}
\edef\xmp@docid{\pdfx@uuid}
\pdfx@findUUID{\pdfcreationdate}
\edef\xmp@instid{\pdfx@uuid}

%%----------------------------------------------------------------------
%% -----   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\%}%
}
\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}%
 \pdfstringdef\pdfx@gray@registry{#4}%  valid URL
 \endgroup}%  closes-off  \pdfx@setGRAYcolorprofile
%%----------------------------------------------------------------------
%% 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}
%%----------------------------------------------------------------------
%% License for the file  sRGB_IEC61966-2-1_black_scaled.icc :
%%
%% Copyright International Color Consortium, 2009  -- http://www.color.org/
%%
%% It is hereby acknowledged that the file "sRGB_IEC61966-2-1_black_scaled.icc" 
%% is provided "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTY.
%%
%% Licensing
%%
%% This profile is made available by the International Color Consortium,
%% and may be copied, distributed, embedded, made, used, and sold without
%% restriction. Altered versions of this profile shall have the original
%% identification and copyright information removed and shall not be
%% misrepresented as the original profile.
%%
%% 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.
%%
%%----------------------------------------------------------------------
%% License for the file  coated_FOGRA39L_argl.icc :
%%
%% The zlib/libpng License
%%
%% Copyright (c) 2008 Kai-Uwe Behrmann
%%
%% This software is provided 'as-is', without any express or implied
%% warranty. In no event will the authors be held liable for any damages
%% arising from the use of this software.
%%
%% Permission is granted to anyone to use this software for any purpose,
%% including commercial applications, and to alter it and redistribute
%% it freely, subject to the following restrictions:
%%
%%    1. The origin of this software must not be misrepresented; you
%%    must not claim that you wrote the original software. If you use
%%    this software in a product, an acknowledgment in the product
%%    documentation would be appreciated but is not required.
%%
%%    2. Altered source versions must be plainly marked as such, and
%%    must not be misrepresented as being the original software.
%%
%%    3. This notice may not be removed or altered from any source
%%    distribution.
%%----------------------------------------------------------------------

\begingroup
 \inputencoding{8bit}%
 \makeatletter
 \pdfx@localcommands
 \InputIfFileExists{\jobname.xmpdata}%
  {\typeout{**pdfx: Metadata file  \jobname.xmpdata  read successfully.}}%
  {\typeout{**pdfx: No file  \jobname.xmpdata . Metadata will be incomplete!}}
\endgroup
%% ----------------------------------------------------------------------
\begingroup
\ifpdfx@x   %  PDF/X  needs a CMYK color profile for printing
 \def\0{\string\0}
 \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)>>} 
   \edef\OBJ@URLs{\the\pdflastobj}%
   \xdef\pdfx@cmyk@intent{Coated_Fogra39L_VIGC_300}%
   \xdef\pdfx@cmyk@identifier{Coated_Fogra39L_VIGC_300.icc}%
   \immediate\pdfobj {<<%
     /CheckSum <5449c505618a9b6c38634b4708ae9e37>^^J% d5f0714cd9d6092b6ac93b625f5d8a0c>%
     /ICCVersion (\004\002\000\000)%  4.2.0.0
     /ProfileCS (CMYK)^^J%
     /ProfileName (\pdfx@cmyk@identifier)^^J%  
     /URLs [\OBJ@URLs\space 0 R ]
    >>} %
  \edef\OBJ@ICC{\the\pdflastobj}%
  \pdfcatalog{%
   /OutputIntents [ <<
   /Type/OutputIntent
   /S/GTS_PDFX
   /OutputCondition (\pdfx@cmyk@intent)%
   /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
   /RegistryName(\pdfx@cmyk@registry)
   % 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}{%
  %  embedded CMYK color profile
  \immediate\pdfobj stream attr{/N 4} file{\pdfx@cmyk@profile}%
  \edef\OBJ@CMYK{\the\pdflastobj}%
  \pdfcatalog{%
   /OutputIntents [ <<
   /Type/OutputIntent
   /S/GTS_PDFX
   /OutputCondition (\pdfx@cmyk@intent)%
   /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
   /RegistryName(\pdfx@cmyk@registry)
   /DestOutputProfile \OBJ@CMYK\space 0 R 
  >> ]}%
 }{%
  \errmessage{No color 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}%
 }{%
  \errmessage{No color profile found to use for RGB screen colors.}%
 }%
 \pdfcatalog{%
   /ViewerPreferences <</DisplayDocTitle true >>
   /OutputIntents [ <<
   /Type /OutputIntent
   \ifpdfx@e
    /S/ISO_PDFE1
   \else
    /S/GTS_PDFA1
   \fi
    /OutputConditionIdentifier (\pdfx@rgb@identifier)%
   /DestOutputProfile \OBJ@RGB\space 0 R
   /Info(\pdfx@rgb@info)
   /RegistryName(\pdfx@rgb@registry)
  >> 
 ]}%
\fi % end of  \ifpdfx@x
\endgroup

%% ----------------------------------------------------------------------
%% Make a version of \xmp@Keywords and \xmp@Author where \sep has been
%% replaced by a comma. The first is for the pdf:Keywords property,
%% which accepts a comma-separated string of keywords, and seems to be
%% mandatory for PDF/A-1 compliance. The second is for the dc:creator
%% property. Although it is defined to be a sequence of authors, Adobe
%% Acrobat will in fact ignore and delete all except the first author.
%% Therefore, it's safer to always separate authors by commas.

\begingroup
 \pdfx@xmpmarkup
 \def\sep{, }%
 \inputencoding{8bit}\makeatletter
 \xdef\xmp@@Keywords{\xmp@Keywords}
 \xdef\xmp@@Author{\xmp@Author}
\endgroup

%% ----------------------------------------------------------------------
\def\xmp@convertDate{\pdfx@getYear}
{\catcode`\D=12 \catcode`\:=12
 \gdef\pdfx@getYear D:#1#2#3#4{\edef\pdfx@xYear{#1#2#3#4}\pdfx@getMonth}
}
\def\pdfx@getMonth#1#2{\edef\pdfx@xMonth{#1#2}\pdfx@getDay}
\def\pdfx@getDay#1#2{\edef\pdfx@xDay{#1#2}\pdfx@getHour}
\def\pdfx@getHour#1#2{\edef\pdfx@xHour{#1#2}\pdfx@getMin}
\def\pdfx@getMin#1#2{\edef\pdfx@xMin{#1#2}\pdfx@getSec}
\def\pdfx@getSec#1#2{\edef\pdfx@xSec{#1#2}\pdfx@getTZh}
\def\pdfx@getTZh{\futurelet\pdfx@next\pdfx@getTzh@branches}

{\catcode`\@=11 \catcode`\Z=12 \catcode`\+=12 \catcode`\-=12
\gdef\pdfx@getTzh@branches{%
 \ifx\pdfx@next Z\let\pdfx@getTzbranch\pdfx@getTznozone
 \else\ifx\pdfx@next +\let\pdfx@getTzbranch\pdfx@getTzplus
 \else\ifx\pdfx@next -\let\pdfx@getTzbranch\pdfx@getTzminus
 \else\let\pdfx@getTzbranch\pdfx@getTzerror
 \fi\fi\fi \pdfx@getTzbranch }

\catcode`\0=12
\gdef\pdfx@getTznozone Z#1\pdfx@getTzend{%
 \edef\pdfx@xTzh{+00}\edef\pdfx@xTzm{00}}
\gdef\pdfx@getTzplus +#1'#2'#3\pdfx@getTzend{%
 \edef\pdfx@xTzh{+#1}\edef\pdfx@xTzm{#2}%
 \ifx\relax#2\relax\def\pdfx@xTzm{00}\fi}
\gdef\pdfx@getTzminus -#1'#2'#3\pdfx@getTzend{%
 \edef\pdfx@xTzh{-#1}\edef\pdfx@xTzm{#2}%
 \ifx\relax#2\relax\def\pdfx@xTzm{00}\fi}
\expandafter\xmp@convertDate\pdfcreationdate''\pdfx@getTzend
\xdef\pdfx@convDate{\pdfx@xYear\pdfx@xMonth\pdfx@xDay\pdfx@xHour\pdfx@xMin\pdfx@xSec\pdfx@xTzh'\pdfx@xTzm'}%
\xdef\xmp@convDate{\pdfx@xYear-\pdfx@xMonth-\pdfx@xDay T\pdfx@xHour:\pdfx@xMin:\pdfx@xSec\pdfx@xTzh:\pdfx@xTzm}%
}% end of \catcode

%% ----------------------------------------------------------------------
%% \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
%% is \@empty, set \toka to \@empty.

\def\pdfx@topdfstring#1#2{%
 \ifx#2\@empty
  \global\let#1\@empty
 \else
  \begingroup
   \inputencoding{utf8}%
   \hypersetup{pdfencoding=unicode}%
   \pdfstringdef#1{#2}%
  \endgroup
 \fi
}

%% Convert the relevant XMP properties to PDF strings, expanding markup
%% (such as \sep, \&, \copyright, etc) in an appropriate way.
\begingroup
 \pdfx@pdfmarkup
 \pdfx@topdfstring\pdfx@Title\xmp@Title
 \pdfx@topdfstring\pdfx@Author\xmp@Author
 \pdfx@topdfstring\pdfx@Subject\xmp@Subject
 \pdfx@topdfstring\pdfx@Keywords\xmp@Keywords
 \pdfx@topdfstring\pdfx@CreatorTool\xmp@CreatorTool
 \pdfx@topdfstring\pdfx@Producer\xmp@Producer
\endgroup

\input glyphtounicode.tex
\input glyphtounicode-cmr.tex
\pdfgentounicode=1

\ifpdfx@x
 {\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)%
   \ifnum\xmp@Part=1 
     /GTS_PDFXVersion(PDF/X-1\ifnum\xmp@ReleaseDate>2001\xmp@Conformance\fi:\xmp@ReleaseDate)%
   \else
    /GTS_PDFXVersion(PDF/X-\xmp@Part\xmp@Conformance\ifnum\xmp@Part< 4 :\xmp@ReleaseDate\fi)%
   \fi
   \ifnum\xmp@Part < 3 
      /GTS_PDFXConformance(PDF/X-\xmp@Part\xmp@Conformance:\xmp@ReleaseDate)%
   \fi
   \ifpdfx@vt %  support for PDF/VT extensions of  PDF/X-4  and PDF/X-5 
%%     /GTS_PDFVTVersion(PDF/VT-\xmp@vtPart\xmp@vtConformance)%
   \fi
   \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
   /ModDate(D:\pdfx@convDate)%
   /Producer(\pdfx@Producer)%
   \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi
   \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
   /Trapped/False%
  }%  end of  PDF/X  info
 }%
\else
 \ifpdfx@e
 {\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)%
   /GTS_PDFEVersion(PDF/E-1\xmp@Conformance:\xmp@ReleaseDate)%
   \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
   /ModDate(D:\pdfx@convDate)%
   /Producer(\pdfx@Producer)%
   \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi
   \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
   /Trapped/False%   
  }%  end of  PDF/E  info
 }%
 \else
 \def\pdfx@confA{a}%
 \def\pdfx@confB{b}%
 \def\pdfx@confU{u}%
 \edef\xmp@conformance{\csname pdfx@conf\xmp@Conformance\endcsname}%
 \AtBeginDocument{%
  \def\PDF@FinishDoc{%
   \Hy@UseMaketitleInfos
   \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
     \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
      /Creator(\pdfx@CreatorTool)%
     \ifx\@pdfcreationdate\@empty
      /CreationDate(D:\pdfx@convDate)%
     \else
      /CreationDate(\@pdfcreationdate)%
     \fi
     \ifx\@pdfmoddate\@empty
      /ModDate(D:\pdfx@convDate)%
     \else
      /ModDate(\@pdfmoddate)%
     \fi
     /Producer(\pdfx@Producer)%
     /Trapped/False
     /GTS_PDFA1Version (PDF/A-\xmp@Part\xmp@conformance:\xmp@ReleaseDate)%
    }%  end of  PDF/A  info
  }% end of  \PDF@FinishDoc
 }% end of  \AtBeginDocument
\fi\fi

%%----------------------------------------------------------------------
\RequirePackage{xmpincl}
\begingroup
 \ifpdfx@x
  \ifpdfx@vt
   \def\xmp@template{pdfvt}%
  \else
   \def\xmp@template{pdfx}%    formerly  pdfx-1a
  \fi
 \else
  \ifpdfx@e
   \def\xmp@template{pdfe}%
  \else
   \def\xmp@template{pdfa}%
 \fi\fi
 % patch commands from  xmpincl.sty  ...
 \def\pdfx@xmpinclStart{% supply byte-order marker
  <?xpacket begin='^^ef^^bb^^bf'? id='W5M0MpCehiHzreSzNTczkc9d' ?> %
 }%
 \def\pdfx@xmpinclStartAlt{% no byte-order marker
  <?xpacket begin=''? id='W5M0MpCehiHzreSzNTczkc9d' ?> %
 }%
 \def\pdfx@xmpinclEnd{%  allow XMP packet to be writable
  <?xpacket end='w'?> %
 }%
 \let\mcs@xmpinclStart\pdfx@xmpinclStart
 \let\mcs@xmpinclStartAlt\pdfx@xmpinclStartAlt
 \ifpdfx@noBOM  % don't use the byte-order marker
  \let\mcs@xmpinclStart\pdfx@xmpinclStartAlt
 \fi
 \let\mcs@xmpinclEnd\pdfx@xmpinclEnd
%% ... preventing their redefinition
 \def\newcommand#1#2{}%
 %
 \pdfx@xmpmarkup
 \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
 \typeout{Using XMP template file: \xmp@template.xmp}%
 \includexmp{\xmp@template}
\endgroup

%% disable hyperref options, to prevent changes that will cause an incompatibility
 \Hy@DisableOption{pdfauthor}%
 \Hy@DisableOption{pdftitle}%
 \Hy@DisableOption{pdfsubject}%
 \Hy@DisableOption{pdfcreator}%
 \Hy@DisableOption{pdfcreationdate}%
 \Hy@DisableOption{pdfmoddate}%
 \Hy@DisableOption{pdfproducer}%
 \Hy@DisableOption{pdfkeywords}%
\endinput
%    \end{macrocode}
% \iffalse
%</package>
% \fi
% \Finale
% \PrintIndex
% \PrintChanges
% \endinput
