River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
1
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1. Introduction
This package
1
currently supports generation of PDF/X-, PDF/A- and PDF/E-compliant docu-
ments, using pdfT
E
X, in most of their variants; see the complete list in Section 2.1 below. As of
T
E
X Live 2016 it now also works with LuaL
A
T
E
X and XeL
A
T
E
X, when using appropriate command-
line options
2
, but with some limitations — see Sections 3.1.1 and 3.1.2. By ‘supports’, we mean
that the package provides correct and sucient means to declare that a document conforms
with a stated PDF variant (PDF/X, PDF/A, PDF/E, PDF/VT, PDF/UA, etc.) along with the ver-
sion and/or level of conformance. This package also allows appropriate Metadata and Color
Prole to be specied, according to the requirements of the PDF variant.
Metadata elements, most of which must ultimately be written as XML using the UTF-8
encoding, is provided via a le named \jobname.xmpdata, for the running L
A
T
E
X job. Without
such a le, providing some required information as well as a large range of optional data, a
fully validating PDF le cannot be achieved. The PDF can be created, having the correct visual
appearance on all pages, but it will not pass validation checks. Sections 2.2 and 4.1 describe
how this le should be constructed.
What this package does not do is to check for all the details of document structure and type
of content that may be required (or restricted) within a PDF variant. For example, PDF/VT
[16] requires well-structured parts, using Form XObject sections tagged as ‘/DPart’. Similarly
PDF/A-1a (and 2a and 3a) [19, 20, 21] require a fully ‘Tagged PDF, including a detailed struc-
ture tagging which envelops the complete contents of the document, as does also PDF/UA
[31]. This is beyond the current version of L
A
T
E
X engines as commonly shipped; though see
Section 1.2 for recent developments. So while this package provides enough to meet the dec-
laration, Metadata and font-handling aspects for these PDF/A variants, it is not sucient to
produce fully-conforming PDFs. However, with extra pdfT
E
X-based software or macro cod-
ing that is capable of producing ‘Tagged PDF’, this package can be used as part of the overall
workow to produce fully-conforming documents; see [37].
1.1. PDF standards
PDF/X and PDF/A are umbrella terms used to denote several ISO standards [9, 10, 11, 13, 14,
19, 20, 21] that dene dierent subsets of the PDF standard [1, 25]. 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 specications of PDF/X. Since 2005 other variants of PDF/X
have emerged, as extra eects (such as layering and transparency) have been supported within
the PDF standard itself. The full range of versions and conformance supported in this package
is discussed below in Section 2.1.
PDF/A denes a prole for archiving PDF documents, which ensures the documents can
be reproduced in the exact same way in years to come. A key element to achieving this is that
PDF/A documents are 100% self-contained. All the information needed to display the document
in the same manner every time is embedded in the le. 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 prole
and standards-based metadata are absolutely essential for PDF/A. Later versions allow for use
of image compression and le attachments.
PDF/E is an ISO standard [24] intended for documents used in engineering workows.
PDF/VT [16] allows for high-volume customised form printing, such as utility bills. PDF/UA
1
An earlier version of this documentation was published as [35]. All the changes since then have been developed
and coded by the 3rd-listed author.
2
The required invocation is: xelatex –shell-escape -output-driver="xdvipdfmx -z 0" <filename>.tex
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
2
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
(‘Universal Accessibility’) has emerged as a standard [31, 3, 5] supporting Assistive Technolo-
gies, incorporating web-accessibility guidelines (WCAG) for electronic documents. In future,
PDF/H may emerge for health records and medical-related documents. Other applications can
be envisaged. Declarations and Metadata are supported for the rst three of these. The others
are the subject of further work; revised versions of this package can be expected in later years.
More complete descriptions of these standards and their usage can be found on Wikipedia
pages [40]. These pages also include comprehensive links to web resources, guides, commen-
taries, discussions and whatever else is relevant to how the standards have been established
and how they can be used.
1.2. Later L
A
T
E
X changes, support for newer PDF standards
Although PDF 2.0 [26] was rst published in 2017 and revised in 2020, it has taken a long
time for it to become a target format for documents built using L
A
T
E
X. This is because the re-
quirement of using ‘Tagged PDF’ is stringent, requiring a reworking of almost every aspect
of L
A
T
E
X’s document production model [29]. Work to this end is going on, via the PDF As-
sociation’s ‘L
A
T
E
X Project LWG’[28], the experimental tagpdf package [36], and Ross Moore’s
tpdf package and macro suite [37]. Signicant internal changes have been made to L
A
T
E
X it-
self, which in turn have required the v1.6.5x updates in 2024 to this pdfx package. We thank
the following users for reporting issues arising from such changes: Sergio Zenoni, Takehiko
Tanabe, Tomáš Nováček.
In early 2024 the PDF Association published several documents for new and updated stan-
dards based upon PDF 2.0 [26]. These include PDF/UA-2 [4], PDF ‘Declarations’ [23], ‘Well-
Tagged PDF (WTPDF) [32] with declarations for Accessibility’ and ‘Reuse’, adding to PDF/A-4
[22], PDF/X-6 [15] and PDF/VT-3 [17], each with various avours. To support these, there will
be released in late 2024 a variant named pdfx2 as an extension of pdfx, with separate docu-
mentation detailing how to specify appropriate XMP metadata [18].
Once pdfx2 becomes available, this will take on the role of handling new developments
for L
A
T
E
X support of PDF 2.0-based software solutions. The pdfx package will remain under
active development, primarily to ensure compatibility of existing documents with PDF 1.7-
based requirements (tagged or otherwise), following any further changes in L
A
T
E
X or other
packages.
2. Usage
The package can be loaded with the command:
\usepackage[<option>]{pdfx}
where the options are as follows.
2.1. Package options
2.1.1. PDF/A options
PDF/A is an ISO standard [19, 20, 21] 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’ les. The standard also has three dierent versions 1, 2, and 3,
which were standardized in 2005, 2011 and 2012, respectively. Earlier versions contain a subset
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
3
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
of the features of later versions, so for maximum portability, it is preferable to use a lower-
numbered version, when the extra features allowed in higher versions are not used. There is
no conformance level ‘u’ in version 1 of the standard. Thus for many typical uses of PDF/A, it
is sucient to use PDF/A-1b.
a-1a: generate PDF/A-1a. Experimental, not fully implemented.
a-1b: generate PDF/A-1b.
a-2a: generate PDF/A-2a. Experimental, not fully implemented.
a-2b: generate PDF/A-2b.
a-2u: generate PDF/A-2u.
a-3a: generate PDF/A-3a. Experimental, not fully implemented.
a-3b: generate PDF/A-3b.
a-3u: generate PDF/A-3u.
By ‘Experimental, not fully implemented’ here we mean primarily that the document structure,
as required for ‘Tagged PDF, is not handled by this package. Using other pdfT
E
X-based soft-
ware that is capable of producing such complete tagging, conforming documents can indeed
be produced.
2.1.2. PDF/E options
PDF/E is an ISO standard [24] intended for documents used in engineering workows. There
is only one version of the PDF/E standard so far, and it is called PDF/E-1.
e-1: generate PDF/E-1.
e: same as e-1.
2.1.3. PDF/UA options
PDF/UA is an ISO and ANSI standard [31, 5] intended for making structured documents read-
able and navigable using Assistive Technology; e.g., screen-readers, Braille keyboards and
such-like. Documents prepared this way can be easily saved in other formats which preserve
the structure, such as XML, HTML, and (Microsoft) Word-based formats.
ua-1: generate PDF/UA-1.
ua: same as ua-1.
2.1.4. 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 species three PDF/VT
conformance levels. Level 1 is for single-le exchange, level 2 is for multi-le exchange, and
level 2s is for streamed delivery. Currently, none of the PDF/VT conformance levels are fully
implemented by the pdfx package.
vt-1: generate PDF/VT-1, based on PDF/X-4. Experimental, not fully implemented
vt-2: generate PDF/VT-2, based on PDF/X-5pg. Experimental, not fully implemented.
vt-2s: generate PDF/VT-2s. Experimental, not fully implemented.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
4
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
By ‘Experimental, not fully implemented’ here we mean primarily that the structuring of a
document into ‘/DPart’ sections, as Form XObjects, is not handled by this package. This is
possible with current pdfT
E
X software, but not yet in a way that lends itself easily to full
automation, due to requirements of knowing the internal object number of certain internal
PDF constructs. All the other aspects: PDFInfo declaration, Metadata and Color Prole, of the
PDF/VT variants are correctly handled.
2.1.5. PDF/X options
PDF/X is an ISO standard intended for graphics interchange. It emphasizes printing-related
requirements, such as embedded fonts and color proles. The PDF/X standard has a large
number of variants and conformance levels. The basic variants are X-1, X-1a, X-3, X-4, and
X-5. (Note that a revised version of the X-2 standard was published in 2003 but withdrawn as
an ISO standard in 2011, basically due to lack of interest in using it). 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
prole (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 permit-
ting additional ‘Custom’ color spaces other than Grayscale, RGB, and CMYK. For many typical
uses of PDF/X, it is sucient to use PDF/X-1a.
x-1: generate PDF/X-1; now obsolete, doesn’t validate.
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.
x-2: generate PDF/X-2; unpublished, doesn’t validate.
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.
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.
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.
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.
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.
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.
2.1.6. Other options
These options are experimental and should not normally be used.
useBOM: generate an explicit UTF-8 byte-order marker in the embedded XMP metadata,
and make the XMP packet writable. Neither of these features are required by the PDF/A
standard, but there exist some PDF/A validators (reportedly validatepdfa.com) that
seem to require them. Note: the implementation of this feature is experimental and
may break with future updates to the xmpincl package.
noBOM: do not generate the optional byte-order marker. (default)
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
5
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
noerr: avoids stopping when making PDF/X with an RGB prole, and at other unusual
situations; e.g., PDF/UA without also PDF/A.
pdf12: use PDF 1.2, overriding the version specied by the applicable standard.
This may produce a non-standard-conforming PDF le.
pdf13: use PDF 1.3, overriding the version specied by the applicable standard.
This may produce a non-standard-conforming PDF le.
pdf14: use PDF 1.4, overriding the version specied by the applicable standard.
This may produce a non-standard-conforming PDF le.
pdf15: use PDF 1.5, overriding the version specied by the applicable standard.
This may produce a non-standard-conforming PDF le.
pdf16: use PDF 1.6, overriding the version specied by the applicable standard.
This may produce a non-standard-conforming PDF le.
pdf17: use PDF 1.7, overriding the version specied by the applicable standard.
This may produce a non-standard-conforming PDF le.
pdf20: use PDF 2.0, experimental in preparation for use with future software, under
development. This may produce a non-standard-conforming PDF le.
nocharset: do not generate the Charset entry for fonts (pdfT
E
X only).
usecharset: generate the Charset entry for fonts (pdfT
E
X only).
The latter two options aect the value of the \pdfomitcharset primitive, added to pdfT
E
X in
2019, due to diering requirements for PDF/A-1 and other PDF/A versions. Indeed use of the
/Charset entry for a font is deprecated entirely for PDF 2.0 [26] and later.
2.1.7. XMP language options
These options allow for characters in alphabets other than those used for English and Western
European languages to be used within the .xmpdata le (see Section 2.2), supported through
L
A
T
E
X character representation macros.
latxmp: extended Latin blocks, Ux0180Ux024F and Ux1E00Ux1EFF
armxmp: armenian letters and ligatures, Ux0530Ux058F, via macros \armyba, \armfe,
\armcomma, etc.
cyrxmp: cyrillic letters and accents, Ux0400Ux04FF and Ux0500Ux0527 via macros
\cyra, \CYRN, etc.
grkxmp: greek letters and diacritics, Ux0370Ux03FF and Ux1F00Ux1FFF via macros
\textalpha, \textPi, etc.
hebxmp: some hebrew letters and marks, Ux05C0Ux05F4 via macros \hebalef, \hebtav,
\doubleyod, etc.
arbxmp: some arabic letters and marks, Ux0600Ux06FF via macros \hamza, \alef,
\sukun, etc.
vnmxmp: vietnamese letters and accents, Ux1EA0Ux1EFF via macros \abreve, \uhorn,
\ECIRCUMFLEX, etc.
ipaxmp: phonetic extensions, Ux0250Ux02AF and Ux1D00Ux1DFF
mathxmp: mathematical letters, symbols, operators arrows, alphanumeric forms.
allxmp: all of the above, as well as those listed next; used primarily for testing compati-
bility with other packages.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
6
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
The characters supported by these options include those supported by hyperref.sty via the
PDFdoc encodings (PD1 and PU) for inclusion in PDF les. Extra support is provided for math
alphabets. For Armenian, the macros dened by ArmT
E
X are supported.
Further options allow direct (enclosed) input of upper 8-bit characters, from encodings such
as Latin-1–Latin-9, KOI8-R, LGR (Greek), ArmSSCI8, and a few more. Use of these requires a
carefully controlled parsing regime. Here we list the package options that declare such con-
tent may be present in the .xmpdata le. A detailed account of how these are used is given
in Section 4.1 (“Multilingual Metadata”).
LATxmp: support for direct use of the upper-range characters (byte codes 160–255) for
input encodings Latin1–Latin9, for Latin-based alphabets as used in European countries
and elsewhere. This denes parser macros \textLAT, \textLII, . .., \textLIX. All sup-
port from latxmp is loaded also.
KOIxmp: support for direct use of cyrillic letters by use of upper-range characters (byte
codes 148–255) under input encodings KOI8-R and KOIR8-RU, using \textKOI as parser
macro. All support from cyrxmp is loaded also.
LGRxmp: support for greek letters entered using either the LGR input transliteration of
ASCII characters, or the ISO-8859-7 encoding of upper-range characters (byte codes 160–
255), or a combination of both, using \textLGR as parser macro. All support from grkxmp
is loaded also.
AR8xmp: support for armenian letters entered using the ArmT
E
X 2.0 input transliteration
of ASCII characters, or the ArmSCII8 encoding of upper-range characters (byte codes
160–255), or a combination of both, using \textARM as parser macro. All support from
armxmp is loaded also.
HEBxmp: support for hebrew letters entered using either LHE input transliteration of
ASCII characters, or the CP1255, CP862 or ISO-8859-8 (HE8) encoding of upper-range
characters (byte codes 160–255), or a combination of these using \textLHE, \textHEBO,
\textHEB as parser macros. All support from hebxmp is loaded also.
These ‘parser’ options have received limited testing, so please report any mistakes in the UTF-8
output that you may encounter.
2.2. Data le for metadata
As mentioned above, standards-compliant PDF documents require document-level metadata
to be included. This, known as an ‘XMP packet’ [2, 18], is like having a library catalog card
included within the PDF itself. It is an unencrypted portion of the PDF le, with data expressed
in Extensible Markup Language (XML), using Resource Description Format (RDF [39]) syntax,
encoded as UTF-8 so readable by any text editing software on any modern computing platform.
Some advantages of doing this are clear.
For a librarian: cataloguing information is available within the le itself, without the
need to search explicitly in the visual layout of the content or elsewhere;
All actual libraries cataloguing this PDF can have consistent information; including web-
based indexing sites such as Google.
For the author(s): who can specify the kind of information most appropriate to help
readers understand the nature and purpose of the document.
The pdfx package builds the XMP metadata from information supplied via a special data
le called \jobname.xmpdata. Here, \jobname is usually the basename of the document’s main
.tex le. For example, if your document source is in the le main.tex, then the metadata
must be in a le called main.xmpdata. None of the individual metadata elds are mandatory,
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
7
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
but for most documents, it makes sense to specify at least the title and the author. For more
technical aspects of metadata and its uses, consult the work of the Dublin Core Initiative [7]
and PRISM [34].
Here is a short .xmpdata le:
\Title{Baking through the ages}
\Author{A. Baker\sep C. Kneader}
\Language{en-GB}
\Keywords{cookies\sep muffins\sep cakes}
\Publisher{Baking International}
You should note that multiple authors and keywords have been separated by \sep. This
\sep macro serves a technical purpose and is permitted within the \Author, \Keywords, and
\Publisher elds, as well as some others. See §2.3 below for a complete listing of the supported
author-supplied metadata elds.
After processing, the local directory contains a le named such as pdfa.xmpi or pdfe.xmpi
or pdfx.xmpi according to the PDF variant desired. This le is the complete XMP Metadata
packet. It can be checked for validity, using an online validator, such as at www.pdib.com.
veraPDF [38] is Open Source software providing validation for PDF/A, and other checkers
useful in a PDF/A production setting.
Warning: The \jobname.xmpdata le may be included in the main document source,
within a {filecontents} environment, provided this comes before the \documentclass com-
mand, as follows. The force option ensures overwriting a previous le to catch recent edits.
\begin{filecontents}[force]{\jobname.xmpdata}
\Title{Baking through the ages}
\Author{A. Baker\sep C. Kneader}
\Language{en-GB}
\Keywords{cookies\sep muffins\sep cakes}
\Publisher{Baking International}
\end{filecontents}
\documentclass[11pt,a4paper]{article}
...
Including the metadata with the L
A
T
E
X source is very convenient. Having it at the top of the
le also brings attention to it, placing emphasis on the desirability of including metadata, and
keeping it accurate while the main content of the document is subject to changes or revision.
Macro denitions can also occur prior to the \documentclass command, including any that
may be needed within the metadata. An example of this is apparent in Figure 2 occurring
later.
However, this ordering is also extremely important, else any non-ascii UTF-8 byte se-
quences can become active characters and expand upon data being written out, rather than
remaining as inactive bytes. If you edit the metadata supplied this way, remember to remove
the existing copy of \jobname.xmpdata le before the next processing run, as L
A
T
E
X does not
write a new copy of the le when it exists on disk already, within the current working direc-
tory or elsewhere that L
A
T
E
X may nd. In development or testing situations the lename may
need to be given as ./\jobname.xmpdata, else an older version may be loaded in error.
Experienced users/programmers can employ the \write18 mechanism
3
, together with the
--shell-escape command-line option, to automatically execute a shell command that removes
\jobname.xmpdata on every (or on selected) processing runs. This is only useful when the
metadata changes, for whatever reason.
3
If you don’t already know what this is, they you probably should not try using it :-).
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
8
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Other places for the {filecontents} environment can work, but only when it contains
no non-ascii UTF-8 byte sequences. Since 2018, with default See Section 2.4 below for more
information on the macros that can be safely used within .xmpdata metadata les.
2.3. List of supported metadata elds
Following is a complete list of user-denable metadata elds currently supported, separated
into particular groupings. Each command is accompanied by the specic XML tagged eld
name (with namespace) that is placed into the document-level Metadata packet, as well as the
kind of information being conveyed. More may be added in the future. These commands can
only be used within the .xmpdata le.
Most commands take an optional argument specifying the natural language, using RFC5646
(BCP 47) [8] codes, in which the metadata eld is given. Languages for multiple entries can
use e.g., \sep[de] .... Only those elds requiring a specic format (e.g. dates) do not support
language speciers; these are indicated with
f
. Fields allowing more than one value are indi-
cated with
. Multiple values may be given as separate instances of the macro, or as a single
instance with the values delimited by \sep, as in the example above.
2.3.1. General information:
\Author: (dc:creator)
the document’s human author(s). Separate multiple authors with \sep.
\Title: (dc:title)
the document’s title; multiple language versions are supported.
f
\Language: (dc:language)
list of languages used within the document.
\Keywords: (dc:subject)
list of keywords, separated with \sep.
\Publisher: (dc:publisher)
the publisher(s). Multiple pieces in a publishing chain should be separated with \sep.
\Subject: (dc:description)
the abstract, or short description.
2.3.2. Copyright information:
\Copyright: (dc:rights)
a copyright statement.
f
\CopyrightURL: (xmpRights:WebStatement)
location of a web page describing the owner and/or rights statement for this document.
f
\Copyrighted: (xmpRights:Marked)
‘True if the document is copyrighted, and ‘False’ if it isn’t. This is automatically set
to ‘True if either \Copyright or \CopyrightURL is specied, but this can be overrid-
den. For example, if the copyright statement is ‘Public Domain’, then specify also
\Copyrighted{False}.
\Owner: (xmpRights:Owner)
species the owner(s) of the document or resource.
f
\CertificateURL: (xmpRights:Certificate)
gives the URL to online proof of ownership, if available.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
9
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2.3.3. more Dublin Core metadata:
From version 1.6 of pdfx.sty, the following elds can be used to provide a greater range of
information to be specied as metadata.
\Contributor: (dc:contributor)
contributor(s) other than author(s) of the PDF document.
\Coverage: (dc:coverage)
statement about the extent or scope of the document’s contents.
f
\Date: (dc:date)
date(s) when something signicant occurred relating to the resource (e.g., version
changes); must be in ISO date format YYYY-MM-DD or YYYY-MM.
f
\PublicationType: (dc:type)
The type of publication. If specied, must be one of ‘book’, ‘catalog’, ‘feed’, ‘journal’,
‘magazine’, ‘manual’, ‘newsletter’, ‘pamphlet’. This is automatically set to ‘journal’ if
\Journaltitle is specied (see below), but can be overridden.
\Relation: (dc:relation)
how this PDF or resource relates to other document(s) or resources.
f
\Source: (dc:source)
species a source document from which the PDF is derived.
f
\Doi: (dc:identifier, prism:doi, prism:url)
Digital Object Identier (DOI) for the document, without the leading ‘doi:’.
f
\ISBN: (dc:identifier)
the ISBN for the PDF itself, or Book/Monograph of which it is part.
f
\URLlink: (dc:identifier, prism:url)
gives a URL address for an online copy of the document.
The remaining Dublin Core eld (dc:format) is always set to ‘application/pdf.
2.3.4. Publication information:
The following macros allow for inclusion of publication related metadata elds, as specied
by PRISM [34] to meet publishing requirements.
\Journaltitle: (prism:issueName)
The title of the journal in which the document was published.
f
\Journalnumber: (prism:issn)
The ISSN for the journal/series in which the document was published.
f
\Volume: (prism:volume)
Journal volume.
f
\Issue: (prism:number)
Journal issue/number.
f
\Firstpage: (prism:startingPage, prism:pageRange)
First page number of the published version of the document.
f
\Lastpage: (prism:endingPage, prism:pageRange)
Last page number of the published version of the document.
\CoverDisplayDate: (prism:coverDisplayDate)
Date on the cover of the journal issue, as a human-readable text string.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
10
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
f
\CoverDate: (prism:coverDate)
Date on the cover of the journal issue, in a format suitable for storing in a database eld
with a ‘date’ data type; e.g. YYYY-MM, or YYYY-MM-DD.
This is an area which can be expanded, to deal with more kinds of publication and metadata
elds. The ExtensionSchema [30] technique is used to add new elds. Examples of this can be
found in the template les pdfx.xmp, pdfa.xmp, pdfe.xmp.
2.3.5. Backward Compatibility
The following macros are also recognised, for backward compatibility with earlier versions of
the package.
\AuthoritativeDomain: (pdfx:AuthoritativeDomain)
species extra names (e.g., of companies) associated to the existence of the PDF or re-
source.
\Creator: (xmp:CreatorTool)
synonymous with \CreatorTool which is usually handled automatically anyway, but
can be over-ridden.
\Org: synonymous with \Publisher.
\WebStatement: synonymous with \CopyrightURL.
2.3.6. more XMP metadata:
\Advisory: (xmp:Advisory)
noteworthy information; e.g., revision data or changes.
f
\BaseURL: (xmp:BaseURL)
base-URL for relative hyperlinks within the PDF.
\Identifier: (xmp:Identifier)
more advance forms than (dc:identifier); see [2, 18].
\Nickname: (xmp:Nickname)
a pseudonym or ‘nickname’ as a colloquial identier for the resource.
\Thumbnails: (xmp:Thumbnails)
allows small page images to be associated with each page of the PDF. An appropriate
XML-compatible representation is required for such images.
2.3.7. PDF standards metadata:
The following metadata elds are generated automatically by the L
A
T
E
X engine. Some are de-
pendent on the particular loading options that specify the desired compliance with a PDF
standard, and level of conformance. There are no separate user-macros to alter these. The rst
three dates are usually set to be identical.
(xmp:CreateDate) : creation date&time of the PDF.
(xmp:MetadataDate) : creation date&time of the Metadata for the PDF.
(xmp:ModifyDate) : date&time of latest modications to the PDF.
(xmpMM:DocumentID) : unique identier for the PDF, based on MD5 sum.
(xmpMM:InstanceID) : unique identier based on creation date&time.
(pdf:Producer) : T
E
X engine used; either ‘LuaT
E
X’, ‘XeT
E
X’, ‘pdfT
E
X’.
(pdf:Trapped) : currently always set to ‘False.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
11
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
(pdfaid:part) : 1, 2 or 3 for PDF/A-?
(pdfaid:conformance) : a, b or u for PDF/A-??
(pdfuaid:part) : currently 1 for PDF/UA-1
(pdfe:ISO_PDFEVersion) : currently 1 for PDF/E-1
(pdf:Version) : PDF/X-1, PDF/X-2 or PDF/X-3
(pdfx:GTS_PDFXVersion) : e.g., PDF/X-1a:2003 up to PDF/X-3 ; but no year for PDF/X-4
and PDF/X-5 variants
(pdfx:GTS_PDFXConformance) : e.g., PDF/X-1a:2003 up to PDF/X-2
(pdfxid:GTS_PDFXVersion) : e.g., PDF/X-4p:2008 after PDF/X-3
(pdfvtid:GTS_PDFVTVersion) : e.g., PDF/VT-2s for PDF/VT
(pdfvtid:GTS_PDFVTModDate) : same as xmp:ModifyDate
2.4. 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 supported in the metadata, except as arguments to ‘parser-macros’; see Sec-
tion 2.1.7). 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 permit-
ted. Moreover, the following markup can be used:
\ ”: a literal space (for example after a macro)
\%: a literal %
\{: a literal {
\}: a literal }
\backslash: a literal backslash \
\copyright: the copyright symbol ©
The macro \sep is permitted within \Author, \Keywords, \Publisher, and other macros
marked with
above. It’s purpose is to separate multiple authors, keywords, etc. to appear
as separate list items appropriately and consistently in the dierent ways that such informa-
tion is represented within the PDF le. The package takes care of this when \sep is used. For
example, in the XMP metadata, it expands as </rdf:li><rdf:li> tagging.
2.4.1. PDF Info strings
When \sep is not used within its argument, the metadata from \Title, \Author and \Keywords
is also included in the PDF /Info dictionary. When this is the case, validation for the declared
standard will occur only if the corresponding /Info item and XMP metadata eld convert to
exactly the same Unicode string. This cannot happen when \sep is used, so the /Info items
are then not populated.
Unfortunately not all PDF browsers (in particular, older ones and much Apple software)
give ready access to the XMP metadata packet. Some authors want to see everything using
e.g., the Unix/Linux command: pdfinfo -enc UTF-8 . In fact there is the -meta option to get
the complete metadata packet (in UTF-8 encoding). This can give more than what one wants,
so use it as follows:
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
12
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
pdnfo -meta <lename>.pdf | grep ’dc:’
to extract just the Dublin Core metadata elds.
Another possibility is to not use \sep with multiple authors and/or keywords. Instead re-
place it with simply , . We do not recommend doing this, as more sophisticated metadata
tools will see the result as a single value, rather than multiple authors, say. Dierent lan-
guage codes cannot be applied when done this way. However, some authors may nd this a
satisfactory solution that suits their own tools.
2.5. Macros permitted in metadata
Other T
E
X macros actually can be used, provided the author is very careful and not ask for too-
complicated T
E
X or L
A
T
E
X expansions into internal commands or non-character primitives; ba-
sically just accents, macros for Latin-based special characters, and simple textual replacements,
perhaps with a simple parameter. A special macro \pdfxEnableCommands{...} is provided to
help resolve diculties that may arise.
Here is an example
4
of the use of \pdfxEnableCommands, which occurs with the name of
one of our authors (Hàn Thê
́
Thanh) due to the doubly-accented letter ê
́
. It is usual to dene
a macro such as: \def\thanh{H\̀an Th\'{\^e} Thanh}. In previous versions of the pdfx
package, use of such a macro within the .xmpdata le, in the Copyright information say, could
result in the accent macros expanding into internal primitives, such as
H\unhbox \voidb@x \bgroup \let \unhbox \voidb@x \setbox \@tempboxa ...
going on for many lines. This clearly has no place within the XMP metadata. To get around
this, one could try using simplied macro denitions
\pdfxEnableCommands{
\def\̀#1{#1^^cc^80}\def\'#1{#1^^cc^81}\def\^#1{#1^^cc^82}}
where the ^^cc^80, ^^cc^81, ^^cc^82 cause T
E
X to generate the correct UTF-8 bytes for ‘com-
bining accent’ characters.
This works ne for metadata elds that appear just in the XMP packet. However, it is not
sucient for the PDF /Author key, which must exactly match with the dc:creator metadata
element. What is needed instead is
\pdfxEnableCommands{
\def\thanh{H^^c3^^a0n Th\eee Thanh}\def\eee{^^c3^^aa^^cc^^81 }}
or the above with ‘à’ typed directly as UTF-8 instead of ^^c3^^a0 and ‘ê’ in UTF-8 for ^^c3^^aa.
The reason for this is due to the \pdfstringdef command, which constructs the accented latin
letters as single combined characters à and ê, without resorting to combining accents, wherever
possible. If the Metadata does not have the same, irrespective of Unicode normalisation, then
validation fails.
With version (1.5.6) of the pdfx package, such diculties have been overcome, at least
for characters used in Western European, Latin-based languages. The input encoding used
when reading the .xmpdata le now includes interpretations of T
E
X’s usual accent commands
to produce the required UTF-8 byte sequences.
Since version (1.5.8) this input encoding was extended to include macro denitions cover-
ing L
A
T
E
X’s internal character representation of other alphabets (e.g., extended Latin, Cyrillic,
Greek, etc.). However this can become memory intensive, requiring a large number of macro
4
Other use cases are discussed with regard to Figures 12 and 16.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
13
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
denitions, most of which will never be used. So loading options are provided, enabling a doc-
ument author to choose only those that may be relevant. Currently these are as in Section 2.1.7.
A signicant portion of the Unicode Basic Plane characters can be covered this way. Mod-
ules could even be provided for CJK character sets and mathematical symbols, etc. However,
as this can become memory intensive, signicant testing will be required before these become
a standard part of the pdfx package.
2.6. Color proles
Most standards compliant PDF documents require a color prole to be embedded within the
le. In a nutshell, such a prole 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 dierent printers, with dierent paper
types, etc. The inclusion of a color prole is necessary to make the document completely
self-contained.
Since most L
A
T
E
X users are not graphics professionals and are not particularly picky about
colors, the pdfx package includes default proles that will be included when nothing else is
specied. Therefore, the average user doesn’t have to do anything special about color.
For users who have a specic color prole they wish to use, it is possible to do so by
including a \setRGBcolorprofile or \setCMYKcolorprofile command in the .xmpdata le.
Note that PDF/A and PDF/E require a prole of type mnrt (monitor) which is usually an
RGB color prole, while PDF/X and PDF/VT require type prtr (printer) which is usually a
CMYK color prole; but valid documents can be created with the correct type designed for
the other color space. Use the following commands to specify an RGB or CMYK color prole,
respectively:
\setRGBcolorprofile{lename}{identier}{info string}{registry URL}
\setCMYKcolorprofile{lename}{output intent}{identier}{registry URL}
Within the arguments of these macros, the characters <, >, &, ^, _, #, $, and ~ can be used as
themselves, but % must be escaped as \%.
From version (1.6) the default RGB and CMYK color proles are now supplied using the
colorprofiles package by Norbert Preining and Ross Moore [33]. Earlier versions of pdfx.sty
set the defaults via:
\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/}
These can still be used if the les from earlier version are available on your T
E
X system, but
they will need to be requested, as above. Other color prole les may be obtained from the
International Color Consortium. Please take a look at http://www.color.org/iccprofile.
xalter.
Alternatively, color proles are shipped with many Adobe software applications; these are
then available for use also with non-Adobe software. Now the pdfx package includes cod-
ing to streamline inclusion of these proles in PDF documents, or to specify them as exter-
nal’ proles, with PDF/X-4p and PDF/X-5pg variants. Two les AdobeColorProfiles.tex and
AdobeExternalProfiles.tex are distributed with the pdfx package. The latter is for use with
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
14
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
PDF/X-4p and PDF/X-5pg, which do not require color proles to be embedded, while the for-
mer can be used with other PDF/X variants. Both dene commands to use Color Proles as
follows.
\FOGRAXXXIX Coated FOGRA39 (ISO 12647-2:2004)
\SWOPCGATSI U.S. Web Coated (SWOP) v2
\JapanColorMMICoated Japan Color 2001 Coated
\JapanColorMMIUncoated Japan Color 2001 Uncoated
\JapanColorMMIINewspaper Japan Color 2002 Newspaper
\JapanWebCoatedAd Japan Web Coated (Ad)
\CoatedGRACoL Coated GRACoL 2006 (ISO 12647-2:2004)
\SNAPCGATSII CGATS TR 002
\SWOPCGATSIII CGATS TR 003
\SWOPCGATSV CGATS TR 005
\ISOWebCoated Web Coated FOGRA28 (ISO 12647-2:2004)
\ISOCoatedECI ISO Coated v2 (ECI)
\CoatedFOGRA Coated FOGRA27 (ISO 12647-2:2004)
\WebCoatedFOGRA Web Coated FOGRA28 (ISO 12647-2:2004)
\UncoatedFOGRA Uncoated FOGRA29 (ISO 12647-2:2004)
\IFRAXXVI ISOnewspaper26v4 ISO/DIS 12647-3:2004
\IFRAXXX ISOnewspaper30v4 ISO/DIS 12647-3:2004
As of the time of rst compiling this list, only the rst six of these result in PDFs which can val-
idate with external proles (i.e., for PDF/X-4p and PDF/X-5pg) using the then-current versions
of Adobe Acrobat Pro software. It is unclear whether the others (incl. \IFRAXXVI and \IFRAXXX)
failed due to incorrect data or problems in the validation software. Since then, with updates to
Acrobat Pro, almost all the others have been veried to work, except \IFRAXXX which seems
no longer available. Thus these commands come with a ‘use at own risk’ clause.
For ‘external’ proles, there is a command \setEXTERNALprofile, taking 9 arguments, that
must be used. Consult AdobeExternalProfiles.tex for examples of its use.
All but the last of the macros listed above can also be used for valid embedded proles,
providing the corresponding les can be found. The following macros are used to set the
(absolute or relative) path, on the local operating system, to the location of color prole les.
\pdfxSetRGBcolorProfileDir{path to RGB color proles}
\pdfxSetCMYKcolorProfileDir{path to CMYK proles}
On a Macintosh, there are various places where the color proles may be found. One can use
either a macro \MacOSColordir which expands into the path for system-provided proles:
/System/Library/ColorSync/Profiles/
or the macro \MacOSLibraryColordir expanding to:
/Library/ColorSync/Profiles/
or \AdobeMacOSdir which expands into the path:
/Library/Application Support/Adobe/Color/Profiles/Recommended/
Under Windows an available macro is \WindowsColordir which expands to:
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
15
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
C:\Windows\System32\Spool\Drivers\Color/
being the common location for color proles. Use these within the .xmpdata le as, e.g.,
\pdfxSetCMYKcolorProfileDir{\AdobeMacOSdir}
Authors may change the paths to suit their own circumstances, either before loading pdfx.sty
or within the .xmpdata le.
PDF/A and PDF/E usually need an RGB prole, while PDF/X and PDF/VT require a
CMYK prole. It is possible to use a CMYK prole with PDF/A or PDF/E by specifying
\setRGBcolorprofile{}{}{}{} in the .xmpdata le. Beware however, that with PDF/A any
coloured hyperlink annotations can cause a validation problem, as these are interpreted as
RGB colours even when 4 components are given. This may be a bug in validators, as PDF
species that the number of components should match the color space.
2.6.1. ‘Custom’ color spaces
It is also possible to specify ‘Custom’ color spaces, other than RGB or CMYK. Here is an ex-
ample command \viiIndigoTAC, dened as follows:
%% Custom prole: 7C Indigo TAC370 (ColorLogic)
\gdef\viiIndigoTAC{\let\CallasMacOSdir\CallasMacOSpdfaPilotdir
\setCUSTOMcolorprofile
{7C Indigo_TAC370_ColorLogic.icc}%
{\CallasProfilesdir}%
{7C Indigo TAC370 \string\(ColorLogic\string\)}% /ProfileName
{http://www.colorlogic.de}% /RegistryName
{7CLR}% number of colors specifier
{02400000}% ICC version
{/Cyan /Magenta /Yellow /Black /Orange /Green /Violet}% colour names
{48110b8b410ee6be015f3932c3167869}% CheckSum
}
which uses a prole that accompanies the pdfaPilot software from Callas Software Gmbh [6].
The macro \CallasMacOSpdfaPilotdir, dened in the le CallasColorProfiles.tex, spec-
ies the directory where this Custom prole is located, when installed under MacOS. One
needs to \input CallasColorProfiles.tex before loading the pdfx package. Macros for other
directories are also dened in this le.
2.7. Notes on the internal representation of metadata
Within the PDF le, 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 le.
XMP is Adobe’s Extensible Metadata Platform [2, 18], and is an XML-based format. See 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 available
under modied BSD licence.
Some of the metadata, such as the author, title, and keywords, can be stored both in the XMP
packet and in the /Info dictionary. For the resulting le to be standards-compliant, the two
copies of the data must be identical. This is taken care of automatically by the pdfx package,
except when \sep is used to handle multiple entries, as discussed above in §2.4.1. In such cases
the string is not included within the /Info dictionary. Note that this is in accordance with the
PDF 2.0 specication [26], which deprecates use of the /Info dictionary for such metadata.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
16
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
In principle, users can resort to alternate ways to create an XMP le for inclusion in PDF. In
this case, one should create a customised template le pdfa.xmp or pdfx.xmp or pdfe.xmp (etc.,
depending on the PDF avor) containing the pre-dened data. This can be done by modifying
the ones supplied with the pdfx package. However, this is an error-prone process and is not
recommended for most users. If there is a particular eld of metadata that you need and that
is not currently supported, please contact the package authors.
pdfx makes use of the xmpincl package to include XMP data into the PDF. The documen-
tation of xmpincl package may help interested users to understand the process of XMP data
inclusion.
2.8. Tutorials and technical notes
A tutorial with step-by-step instructions for generating PDF/A les can be found at: http:
//www.mathstat.dal.ca/~selinger/pdfa/.
Some technical notes about production problems the authors have encountered while gen-
erating PDF/A compliant documents are available here: http://support.river-valley.com/
wiki/index.php?title=Generating_PDF/A_compliant_PDFs_from_pdftex. Be aware that this
is based on use of an earlier version of the pdfx package, so some of the advice may have been
superseded.
3. Installing
The pdfx.dtx package is available on CTAN as usual, via http://ctan.org/pkg/pdfx. It is
also included in T
E
X distributions such as MacT
E
X, T
E
X Live and MiKT
E
X. Thus most users will
not need to handle installation at all.
For those wishing to do a manual installation, here are some notes. The le pdfx.dtx is a
composite document of program code and documentation in L
A
T
E
X format, in the tradition of
literate programming. After having installed the package, to get the documentation that you
are reading now, run (pdf)L
A
T
E
X on the le pdfx.dtx. The resulting PDF should be valid as
PDF/A-2u. Or better, use the included Makefile, which will also regenerate the index.
To install the package, rst extract the program code; i.e., the le pdfx.sty, by running
L
A
T
E
X or T
E
X on the le pdfx.ins. Create a directory named pdfx under $TEXMF/tex/latex
and copy the les pdfx.sty, 8bit.def, glyphtounicode-cmr.tex, glyphtounicode-ntx.tex as
well as the other *.tex, l8u*-penc.def and *.xmp les, into it. Then update T
E
X’s le database
using the appropriate command for your distribution and operating system (such as texhash
or mktexlsr, or similar).
3.1. Limitations and dependencies
The pdfx.sty package works with pdfT
E
X and also LuaT
E
X and XeT
E
X with some minor limi-
tations. It further depends on the following other packages.
1. xmpincl for insertion of metadata into PDF.
2. inputenc to establish input-encoding infrastructure — see Section 4.2.
3. hyperref for ensuring data is correctly encoded when being written into the PDF le,
and supporting features such as hyperlinking, bookmarks, etc.
4. xcolor for ensuring consistent use of the color model appropriate the PDF variant,
within text and hyperlinks (when allowed).
5. glyphtounicode.tex (not XeL
A
T
E
X) maps glyph names to corresponding Unicode code-
points.
6. ifluatex allowing coding specic to LuaL
A
T
E
X.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
17
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
7. ifxetex allowing coding specic to XeL
A
T
E
X.
8. luatex85 or pdftexcmds (LuaT
E
X only) for access to primitive commands using pdfT
E
X
macro names.
9. stringenc used to help generate proper bookmarks with transliterated input; e.g., with
\textLGR or \textARM — see Section 4.1.4.
Other les and packages are loaded as sub-packages or as conguration les for these. Since
some of these packages may be loaded by existing documents we provide here advice on how
to deal with potential loading and option conicts.
Firstly, it is best if pdfx is the rst package loaded; e.g., directly after the \documentclass
line. This is not a strict requirement, but it is worthwhile to deal with the metadata at the top
of your L
A
T
E
X source, allowing correct options to be loaded to cope with validation aspects.
Secondly, replace \usepackage[<options>]{hyperref} with \hypersetup{<options>}.
This deals with most loading issues with the hyperref package. Note that PDF/X is a for-
mat intended for printing. It forbids inclusion of hyperlinks and other actions, including via
bookmarks. To produce a validating PDF/X document, pdfx overrides internal macros while
keeping colors associated with link anchors. To inhibit these colors also, you could specify
options as follows.
\hypersetup{colorlinks,allcolors=black}
Furthermore, options to set metadata components (such as pdfauthor, pdftitle, pdfsubject,
pdfkeywords, etc.) are disabled, since pdfx has already taken care of this information.
Thirdly, conicts with other packages may be dealt with by simply changing \usepackage
to \RequirePackage within the document’s preamble. But this may not be possible when the
\usepackage or \RequirePackage command occurs within another package, or with a specic
set of options, thereby causing processing to stop. Few packages have a command analo-
gous to \hypersetup. Instead \PassOptionsToPackage{<options>}{<package>} can help. For
<options> specify the ones associated with the loading yet to come. This can give a smooth
processing run, but you’ll need to check whether the results from those options have actually
taken eect. Some examples of this can be seen later, in Figures 2 and 8.
3.1.1. Limitations using XeL
A
T
E
X
To process a le using XeL
A
T
E
X, to produce a document that can validate to a particular PDF
standard, one need to use a command to run the T
E
X engine, as follows.
xelatex -shell-escape -output-driver="xdvipdfmx -z 0" <filename>.tex
The -shell-escape option allows a command-line task to be run, which writes the creation-
date & time of the running job into a small le on disk. This data, written in a specic format,
is then read by the job for inclusion into several metadata elds. This emulates the result of
pdfT
E
X’s \pdfcreationdate primitive. As there are security implications in allowing arbitrary
commands to be run, this need for -shell-escape must be viewed as imposing a limitation on
the work-ows in which this can be safely used.
The -output-driver="xdvipdfmx -z 0" suppresses compression, which is not allowed for
the XMP metadata packet. Without this, the resulting PDF may fail to pass validation tests.
XeT
E
X is designed for processing UTF-8 input only. When presented with L
A
T
E
X source
using a legacy encoding, such as latin2 or koi8-r, the input is accepted and a PDF produced.
Yet there will be garbage characters corresponding to each character entered from the upper
range (128–255). This is evident in the PDF content and bookmarks; yet pdfx produces the
correct XMP metadata packet. So while the techniques explained later in Section 4.1 are valid,
the PDF itself does not contain correct content.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
18
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Not all fonts, in particular Open-Type fonts (OTF), naturally come with mappings of the
glyphs to Unicode code points. This is a requirement with PDF/A, PDF/E and PDF/UA stan-
dards. Use of such fonts can result in validation errors, such as:
CIDset in subset font is incomplete (font contains glyphs that are not listed).
Type 2 CID font: CIDToGID map is invalid or missing.
If one has access to Adobe’s Acrobat Pro software, then its Preflight utility can rewrite
the uncompressed output from XeL
A
T
E
X into a valid PDF standard, using compression of the
contents but not of the XMP packet. Similarly Preflight can sometimes x the missing font
information.
3.1.2. Limitations using LuaL
A
T
E
X
LuaL
A
T
E
X can handle the OTF font issues mentioned for XeL
A
T
E
X, so can produce valid PDF/A
documents where XeL
A
T
E
X fails. However, since LuaT
E
X expects all input source to be UTF8-
encoded, it cannot work at all with documents using older legacy encodings. Instead one gets
error messages such as:
! String contains an invalid utf-8 sequence.
l.5 \Copyright{\textLII{UWAGA dla recenzent
ïżœw/tÂłumaczy}}
?
from a document using latin2 encoded characters. Thus most of Section 4.1 is just not appli-
cable for LuaL
A
T
E
X, whereas it is for pdfT
E
X. This is essentially the same problem as described
above for XeT
E
X, but here LuaT
E
X advises that there are problems as soon as it encounters
an invalid (for UTF-8) character. Some would regard this as better than having the job run to
completion, only to later discover garbage content within the PDF.
3.2. Files included
The following les are included in the package. Some can be created from pdfx.dtx, using the
Makefile.
3.2.1. Package les
pdfx.sty — main package le generated from pdfx.dtx.
pdfa.xmp — specimen xmp template for PDF/A.
pdfe.xmp — specimen xmp template for PDF/E.
pdfvt.xmp — specimen xmp template for PDF/VT.
pdfx.xmp — specimen xmp template for PDF/X.
8bit.def — custom input encoding.
l8u-penc.def — input encoding macro declarations.
l8uarb-penc.def — input macro declarations for Arabic.
l8uarm-penc.def — input macro declarations for Armenian.
armglyphs.dfu — Unicode mapping for Armenian letters.
l8ucyr-penc.def — input macro declarations for Cyrillic alphabet.
l8udev-penc.def — input macro declarations for Devanagari.
l8ugrk-penc.def — input macro declarations for Greek alphabet.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
19
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
l8uheb-penc.def — input macro declarations for Hebrew alphabet.
l8ulat-penc.def — input macro declarations for Latin 1–9 encodings.
l8umath-penc.def — input macro declarations for mathematical symbols.
glyphtounicode-cmr.tex, glyphtounicode-ntx.tex maps glyph names to corre-
sponding Unicode for Computer Modern and other T
E
X-specic fonts.
AdobeColorProfiles.tex — macros for inclusion of Adobe-supplied color proles.
AdobeExternalProfiles.tex — macros for use of external color proles.
CallasColorProfiles.tex macros for proles included with Callas pdfaPilot soft-
ware.
3.2.2. Documentation & Examples
README — usual top-level information.
manifest.txt — le list.
pdfx.pdf — package documentation.
sample.tex, sample.xmpdata — a sample le with sample metadata.
small2e-pdfx.tex — sample le with included metadata.
3.2.3. Sources
src/pdfx.dtx — composite package and documentation.
src/pdfx.ins — installer batch le.
src/pdfx.xmpdata — metadata for the documentation.
src/rvdtx.sty — used by pdfx.dtx.
src/Makefile — a Makele for building the documentation.
src/MANIFEST — list of les in this directory.
src/text89.def — used with Figure 13 in the documentation.
src/{arm-start,koi8-example,koi8-example2,latin2-example}.tex used in the
documentation with gures showing example coding.
src/{TL-POL-meta,TL-RU-LICRs,TL-RU-metadata,TL-RU-toc,Armenian-example-UTF8,
armtex-meta,usage-meta,math-assign5}.png screenshot images showing multilin-
gual and other metadata.
3.3. Miscellaneous information
The package is released under the L
A
T
E
X Project Public Licence. Bug reports, suggestions,
feature requests, etc., may be sent to the original authors at [email protected] and/or
[email protected], or to the more recent contributors at [email protected] and/or
4. Multilingual and Technical Considerations
T
E
X and L
A
T
E
X have an on-going practice of including metadata within the source les and
package documentation. Usually this is done as comments at the beginning of the le; such as
the following from the English language version of the 2015 T
E
X Live documentation
5
.
5
found at /usr/local/texlive/2016/texmf-dist/doc/texlive/texlive-en/.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
20
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
$Id: texlive-en.tex 37205 2015-05-05 21:36:33Z karl $
TeX Live documentation. Originally written by Sebastian Rahtz and
Michel Goossens, now maintained by Karl Berry and others.
Public domain.
This provides information, ideally suited for copyright metadata elds, as in Section 2.3.2, as
well as for \Subject and \CoverDate from Section 2.3.4.
Also near the top of the le one nds front-matter content
\title{%
{\huge \textit{The \TeX\ Live Guide---2015}}
}
\author{Karl Berry, editor \\[3mm]
\url{http://tug.org/texlive/}
}
\date{May 2015}
which supplies metadata information for the commands \Title, \Author, \CoverDisplayDate
also from Section 2.3.4, and \CopyrightURL.
Most of the hundreds of thousands, if not millions of documents prepared using T
E
X, L
A
T
E
X
and other T
E
X-based formats, include similar metadata information, much of which currently
does not accompany the resulting PDF. It is becoming increasingly common, if not yet a legal
requirement, for PDFs to satisfy a standard that requires inclusion of metadata. This is espe-
cially so for government agencies and institutions receiving government funding, in several
countries around the world.
It is an aim of the pdfx to simplify the process of capturing and including metadata within
L
A
T
E
X-produced PDFs, from both the author’s view and that of archivists. The extra features
introduced with version 1.5.8 take a large step in that direction. This includes the ability,
described in the next subsection, to reliably include data presented in dierent text encodings,
rather than being restricted to UTF-8 only. It is a role of the software to make the conversion,
rather than rely on some 3rd party for a translation.
4.1. Multilingual Metadata
A cursory search of the documentation (.../texmf-dist/doc) subtree of the forthcoming
T
E
X Live 2016 release reveals more than 730 dierent .tex or .dtx document sources which
specify an input encoding, via the \usepackage[...]{inputenc} command. Roughly 380 (a bit
more than half) declare UTF-8 as the input encoding. Of the remainder there are 20 other
encodings specied, covering a range of languages for at least part of their content. At some
point in time, these documents may be required to have accurate accompanying metadata, as
part of conformance to a designated PDF (or other) standard. There are libraries and archives
that already must meet such standards.
We have shown above, in Section 2.2, how the .xmpdata le can be inserted into the doc-
ument source, which then ensures that metadata is reliably transferred along with the source
itself. This seems a good strategy, but are there any problems with it, especially in a multi-
lingual context?
Modern editing software can require an encoding to be associated with each le. This is
what allows the correct characters to be shown, from what is otherwise just a sequence of 8-bit
bytes. The ip-side is that arbitrary editing is not permitted. Add some UTF-8 data into a le
that is encoded as Latin-2 then try to save it. You may be asked to specify a new encoding, or
the application may even crash out entirely. Maybe this happens accidentally. It is not hard
for a curly quote (‘) or endash (–) to be included; many editors have settings which can do this
with normal ascii input. Turn o such settings.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
21
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
The approach that we advocate is that when editing to add metadata, best is to:
1. use the same encoding as is specied for the le itself, if known (as is usually the case);
2. even if 1. is not possible, use Copy/Paste within the document source (e.g., for authors’
names, addresses, aliations, etc.) and from comments, as in Section 4 above;
3. avoid typing new characters, especially quotes and dashes, and be extra careful with
back-spacing to preserve the real meaning of copied content.
Even if the original encoding is not known, use of Copy/Paste from other parts of the docu-
ment is normally not going to change its encoding. This should not cause the le to become
invalid due to mixed content. In some situations it may be necessary to use an ASCII-only
representation, such as L
A
T
E
X’s LICR
6
macros [27, § 7.11].
Figure 1: Metadata generated from the coding shown in Figure 2, viewed using Acrobat Pro’s
Additional Metadata . .. panel.
4.1.1. Metadata with Cyrillics
Here is a ‘real-world’ example, with Figure 1 showing the metadata as could be produced for
the Russian language version of the T
E
X Live documentation, from coding as shown in Figure 2.
The source le itself is actually encoded for KOI8-R, as indicated by the presence of the code line
\usepackage[koi8-r]{inputenc}, but is deliberately shown here encoded as T1 [27, p. 449].
This dierence is immaterial for checking the validity of the metadata. For example, the stream
of upper (accents, etc.) characters within \Title{\textKOI{ ... }} is the same as within
\title{...\textit{ ... }}. Similarly for \Author{\textKOI{...}} and \author{...}, and
\CoverDate and \date. Strings for the \Subject and \Keywords are taken from the rst actual
paragraph in the document, and from early subsection titles.
It is the ‘parser’ command/macro \textKOI{ ... } that indicates that the upper range
characters (having byte codes 128–255) are to be treated as KOI8-R characters, rather than as
part of UTF-8 byte sequences. It works by examining each byte in sequence, and returning the
6
LICR: L
A
T
E
X Internal Character Representation; or think ‘I = Interchange.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
22
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
% $Id: texlive-ru.tex 34060 2014-05-16 19:52:41Z boris $
%
%\def\Status{1}
\providecommand{\pdfxopts}{a-2u,KOIxmp}
\providecommand{\thisyear}{2015}
%\immediate\write18{rm \jobname.xmpdata}% uncomment for Unix-based systems
\begin{filecontents*}{\jobname.xmpdata}
\Title{\textKOI{òÕËÏŒÏÄÓÔŒÏ ÐÏÌØÚÏŒÁÔÅÌÑ} TeX Live \textemdash \thisyear}
\Author{\textKOI{òÅÄÁËÔÏÒ: ëÁÒÌ âÅÒÒÉ}}
\Subject{\textKOI{œ ÜÔÏÍ ÄÏËÕÍÅÎÔÅ ÏÐÉÓÁÎÙ ÏÓÎÏŒÎÙÅ ŒÏÚÍÏÖÎÏÓÔÉ ÐÒÏÇÒÁÍÍÎÏÇÏ ÐÒÏÄÕËÔÁ }
TeX Live \textKOI{--- ÄÉÓÔÒÉÂÕÔÉŒÁ }TeX\textKOI{Á É ÄÒÕÇÉÈ ÐÒÏÇÒÁÍÍ ÄÌÑ} GNU/Linux
\textKOI{É ÄÒÕÇÉÈ }UNIX\textKOI{ÏŒ}, MacOSX\textKOI{ É Windows.}}
\Keywords{TeX Live \thisyear\sep \textKOI{óÔÒÕËÔÕÒÁ}\sep \textKOI{ÕÓÔÁÎÏŒËÉ}\sep \TeX}
\CoverDisplayDate{\textKOI{íÁÊ} \thisyear}
\CoverDate{2015-05-06}
\Copyrighted{False}
\Copyright{Public Domain}
\CopyrightURL{http://tug.org/texlive/}
\Creator{pdfTeX + pdfx.sty with options \pdfxopts }
\end{filecontents*}
\documentclass{article}
\usepackage[\pdfxopts]{pdfx}[2016/03/09]
\PassOptionsToPackage{obeyspaces}{url}
\let\tldocrussian=1 % for live4ht.cfg
\usepackage{cmap}
\usepackage{tex-live}
\usepackage[koi8-r]{inputenc}
\usepackage[russian]{babel}
...
\begin{document}
\title{%
{\huge \textit{òÕËÏŒÏÄÓÔŒÏ ÐÏÌØÚÏŒÁÔÅÌÑ \protect\TL{} "--- \thisyear}}%
}
\author{òÅÄÁËÔÏÒ: ëÁÒÌ âÅÒÒÉ\\[3mm]
\url{http://tug.org/texlive/}}
\date{íÁÊ \thisyear}
ˋ̂̃̈̊̂̆̋́
̉
̌̇
ı
Figure 2: Example of cyrillics in metadata, shown as if T1-encoded. See Figure 1 for the actual
result.
appropriate UTF-8 2-byte sequence for the required cyrillic character. This happens during
the processing of data from \jobname.xmpdata for eshing-out the XMP metadata packet to
be included within the nal PDF/A document.
The ‘parser’ macros dened for various encodings, are given in Figure 3. In Section 2.1.7
the package options are given for loading the appropriate support for desired languages or
alphabets. Support for other encodings can be added, if there proves to be a need.
With encoded characters marked in this way with a ‘parser’ macro, it is actually possible
to mix UTF-8 metadata with other bytes; provided, of course, you have an editor that allows
such a le to be created and saved. On the other hand, if you are unhappy with mixing content
having dierent encodings, then there is another way, based upon L
A
T
E
X’s LICR macros [27,
§ 7.11] for representing accented and non-latin characters. These are normally hidden away
(‘I = Internal’) but in fact can be seen within auxiliary les, such as .aux and .toc, .lof
and .lot. This is how L
A
T
E
X stores the knowledge of such characters for use in a part of the
document processing which may not have the same encoding as the document as a whole, or
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
23
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
macro encodings bytes 128–255 with languages
\textLAT Latin-1 Western European
\textLII Latin-2 Middle European
\textLIII Latin-3 South European
\textLIV Latin-4 North European
\textLTV Latin-5 Turkish
\textLVI Latin-6 Nordic
\textLVII Latin-7 Baltic Rim
\textLIIX Latin-8 Celtic
\textLIX Latin-9 Western European, incl.
\textKOI KOI8-R, KOI8-RU cyrillic alphabets
\textLGR LGR, ISO-8859-7 Greek & Polytonic Greek
\textARM ArmT
E
X, ArmSCII8 Armenian
\textHEB HE8, ISO-8859-8, CP1255 Hebrew
\textHEBO CP862 Hebrew
\(...\) parses simple mathematical expressions
Figure 3: Parser macros, dened for specic types of input.
may require characters generated using several dierent encodings. Thus LICRs allow for a
reliable representation passed to a dierent context; think ‘I = Interchange.
Figure 4 shows how to see this. The document source in the lower portion clearly shows the
cyrillic input, whereas the .log messages in a command-line window above reveal the LICR
representation. A command \showLICRs is available with pdfx.sty version 1.5.8, specically
to allow this. Now the LICR representation can be copied directly from the .log le, modulo
slight diculties due to the way long lines are broken. As this representation is entirely with
ASCII characters, it should not cause any conict with any UTF-8 metadata that you want
within the same le. The .xmpdata le might now look as in Figure 5. Although very verbose,
this should be resistant to any corruption due to character encodings, and produces the same
result within the PDF, as in Figure 1.
Alternatively one can exploit the .toc le, using L
A
T
E
X’s command \addtocontents, as
shown in Figure 6. After processing the le, you can copy the LICR representations out of the
.toc le, taking care to remove anything of a non-character nature (e.g., implementing the size
and spacing of the letters in T
E
X).
Of course once you have harvested the metadata in this format, remove or comment-out
those extra \showLICRs to get uninterrupted processing. Similarly comment-out the extra
\addtocontents lines, else the real Table-of-Contents will become corrupted with unwanted
entries. A couple more L
A
T
E
X processing runs should restore the PDF to the way you want it.
4.1.2. Metadata with Polish
The next example has upper-range bytes intended to represent Latin-2 encoded characters, as
used in Polish. With the L
A
T
E
X source starting as in Figure 8, the resulting metadata is shown
in Figure 7.
Here the ‘parser macro’ is \textLII, which can be seen in Figure 8 to surround either
complete metadata entries, or just those parts containing polish accented (or other) characters
in entries that also contain english words. The macro \textLF provides a line-feed character
for the UTF-8 output.
As a technical note, the \jobname.xmpdata le is read with \obeyspaces in eect. This
causes space runs in the input to be replaced by a single ‘active space’ character, which ulti-
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
24
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Figure 4: How to see LICRs in the .log window.
mately expands into a normal space upon output. This is needed to preserve inter-word spaces,
which would otherwise get lost during parsing, due to T
E
X’s pattern matching when reading
macro arguments. Each byte is examined individually, with normal letters a-zA-Z and most
punctuation characters passed through unchanged.
Let’s understand better how this example was created. There are three les involved.
pdfx.dtx, the source for this documentation, open in an editor with encoding declared
as UTF-8;
texlive-pl.tex the Polish documentation for T
E
X Live, open in the same editor with
Latin-2 encoding;
latin2-example.tex which starts life as an empty le on disk.
This latter le must be opened in the editor, with encoding declared as Latin-2 (ISO-8859-2).
Next the preamble is copied from texlive-pl.tex and pasted into latin2-example.tex which
is then saved to disk. Further editing is done to latin2-example.tex to add verbatim markers
(|...|) and adjust line lengths for display within Figure 8. This le’s contents is included as
part of the documentation via \input{latin2-example} within an environment that handles
presentation aspects, and (since 2018) declares \UseRawInputEncoding.
What cannot be done is to paste the preamble content directly into pdfx.dtx. Consider
what would then happen, using ‘tłumaczy’ (‘translators’, on line 10 following ‘UWAGA’). This
word shows correctly in the Latin-2 encoded les. It was typeset here using \l for the ‘ł’ letter,
having Unicode code-point Ux0142 (so UTF-8 byte pair "C5 "82). However, it occurs at slot "B3
within Latin-2 encoding. In the T1 font encoding [27, p. 449] the character glyph name for slot
"B3 is /scedilla, which is what shows in Figure 8. When the ‘ł’ is pasted directly into a UTF-8
le and shown verbatim, the result is the pair of glyphs "C5 (/Aring) and "82 (/Cacute); viz.
tÅĆumaczy.
As with Figure 2 it is not important that the correct characters are shown here, but that the
metadata in \jobname.xmpdata corresponds to what is used on the titlepage of the PDF; e.g.,
the contents of \Title and \title, \Author and \author, etc.
4.1.3. Metadata with Greek
Prior to proper support for UTF-8 input, a method for preparing document source for the
modern Greek language (and also for polytonic Greek), involved the use of LGR encoded fonts.
Such a font has Greek (instead of Latin) letters in the slots for a-zA-Z, see [27, §9.4.2]. Thus
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
25
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
% $Id: texlive-ru.tex 34060 2014-05-16 19:52:41Z boris $
%
%\def\Status{1}
\providecommand{\pdfxopts}{a-2u,KOIxmp}
\providecommand{\thisyear}{2015}
%\immediate\write18{rm \jobname.xmpdata}% uncomment for Unix-based systems
\begin{filecontents*}{\jobname.xmpdata}
\Title{\IeC {\CYRR }\IeC {\cyru }\IeC {\cyrk }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyro }
\IeC {\cyrd }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyrv }\IeC {\cyro } \IeC {\cyrp }\IeC {\cyro }
\IeC {\cyrl }\IeC {\cyrsftsn }\IeC {\cyrz }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyra }\IeC {\cyrt }
\IeC {\cyre }\IeC {\cyrl }\IeC {\cyrya } TeX Live \textemdash \thisyear}
\Author{\IeC {\CYRR }\IeC {\cyre }\IeC {\cyrd }\IeC {\cyra }\IeC {\cyrk }\IeC {\cyrt }
\IeC {\cyro }\IeC {\cyrr }: \IeC {\CYRK }\IeC {\cyra }\IeC {\cyrr }\IeC {\cyrl }
\IeC {\CYRB }\IeC {\cyre }\IeC {\cyrr }\IeC {\cyrr }\IeC {\cyri }
\Keywords{TeX Live \thisyear\sep \IeC {\CYRS }\IeC {\cyrt }\IeC {\cyrr }\IeC {\cyru }
\IeC {\cyrk }\IeC {\cyrt }\IeC {\cyru }\IeC {\cyrr }\IeC {\cyra }\sep \IeC {\cyru }
\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyrk }
\IeC {\cyri }\sep \TeX}
\Subject{\IeC {\CYRV } \IeC {\cyrerev }\IeC {\cyrt }\IeC {\cyro }\IeC {\cyrm } \IeC {\cyrd }
\IeC {\cyro }\IeC {\cyrk }\IeC {\cyru } ...
...
\CoverDisplayDate{\IeC {\CYRM }\IeC {\cyra }\IeC {\cyrishrt } 2015}
\CoverDate{2015-05-06}
\Copyrighted{False}
Figure 5: Example of cyrillics in metadata, using LICRs.
ordinary ASCII letters are used to produce the Greek characters; the mapping of ASCII to
Greek is referred to as a ‘transliteration’ scheme. It serves as both an input encoding, and as a
font encoding. Accents and diacritic marks are provided through ligatures built-in to the fonts.
Various documents can be found on the web
7
and within T
E
X Live distributions
8
.
Indeed the current maintainer Günther Milde states “The LGR transliteration does not work
for PDF metadata”. This is because there is no translation of LGR input into L
A
T
E
X LICRs, as
happens with say \usepackage[utf8]{inputenc} for UTF-8 input, or when upper 8-bit char-
acters are present using \usepackage[iso-8859-7]{inputenc}. With these, LICRs such as
\textAlpha, \textOmicron, . .. , \textomega are produced, which result in the correct char-
acters for metadata and bookmarks, perhaps employing Unicode combining’ characters for
accented letters. Using pdfx the UTF-8 characters can be put directly into the .xmpdata le;
LICRs are interpreted provided the grkxmp loading option has been specied.
Using the methods of pdfx the metadata diculty is remedied, as can be seen in Figure 9
using coding as shown in Figure 10. This requires the LGRxmp option and \textLGR ‘parser’
macro. The original document source, called usage.tex, can be found in the directory specied
in the footnote below. As this document is essentially an English description of how to use
LGR for Greek, we have used the ‘Keywords’ eld to provide examples of such usage. Since
a macro \textgreek can be used for greek portions within such documents, this macro name
is aliased to \textLGR within the context where metadata is processed. Furthermore, parsing
using \textLGR generates correct pre-composed characters for letters with accents or diacritics.
Bookmarks can also be generated from LGR input, using a technique described in Section 4.1.4.
The features available with dierent loading options are summarised here.
7
e.g., http://milde.users.sourceforge.net/LGR/
8
TeXLive: .../2016/texmf-dist/doc/generic/babel-greek/
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
26
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Figure 6: How to get desired LICRs into the .toc le.
no option: all metadata in .xmpdata le is in UTF-8 (incl. ASCII)
grkxmp: LICRs can be present; e.g. \textAlpha, \textOmega, etc.
LGRxmp: supports LGR-encoded input and ISO-8859-7 upper range characters, using the
\textLGR ‘parser’ macro.
With LGRxmp specied, the features of grkxmp are also available; so any lower-listed option
allows data to be mixed with that for higher-listed ones.
The nal piece to get validation for PDF/A from LGR input, is to specify a Unicode point
for the v used only in the strong sv ligature to obtain a non-nal ‘sigma’ typeset in isolation.
\pdfglyphtounicode{internalchar2}{200D}
This gives an interpretation as ‘zero-width joiner’. There are two instances of this within
usage.tex. Copy/Paste works as desired. Using pdfT
E
X the above command is done automat-
ically. Drivers, such as XeL
A
T
E
X lacking an implementation of \pdfglyphtounicode, can fail to
produce a valid PDF due to this rather minor deciency.
Greek numerals, using \greeknumeral or \Greeknumeral cannot work directly within a
.xmpdata le. However if such is desired, the following technique allows correct LICRs to be
found for use in the metadata. At any convenient place within the L
A
T
E
X source; e.g., near
where the required number is used, insert coding such as:
{\pdfxGreeknumeralsHack \textgreek{\edef\num{\greeknumeral{1997}}\show\num}}%
Upon processing, the following will be written to the console or .log-window.
> \num=macro:
->\LGR\textaristerikeraia \LGR\textalpha \LGR\textsampi \let \protect \LGR\text
dexiakeraia \LGR\textqoppa \let \protect \LGR\textdexiakeraia \LGR\textzeta \le
t \protect \LGR\textdexiakeraia \protect \LGR\textdexiakeraia .
<argument> ...um {\greeknumeral {1997}}\show \num
l.90 ...k{\edef\num{\greeknumeral{1997}}\show\num}
}
?
from which the desired string of LICRs, is extracted; viz.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
27
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Figure 7: Metadata generated from the coding shown in Figure 8 for the Polish version of
T
E
X Live 2015 documentation, showing Latin-2 encoded characters. The document is valid for
PDF/A-2, after having been processed with pdf-L
A
T
E
X.
\textaristerikeraia\textalpha\textsampi\textqoppa\textzeta\textdexiakeraia
The corresponding trick does not work with \Greeknumeral, but the uppercasing can be done
manually from the string obtained using \greeknumeral,
\textaristerikeraia\textAlpha\textSampi\textQoppa\textZeta\textdexiakeraia
leaving the initial and nal \text...keraia macros as all lowercase. For smooth processing,
remove or comment-out the added line after collecting the LICRs.
4.1.4. Metadata with Armenian
The ArmT
E
X package
9
provides the method to typeset Armenian, with input being specied
in various ways including a transliteration scheme from ASCII input. This transliteration is
directed at the use of the OT6 encoding, developed for this purpose. Each way is supported by
pdfx.sty with appropriate loading options, similar to the support for Greek (see Section 4.1.3).
no option: all metadata in .xmpdata le is in UTF-8 (incl. ASCII)
armxmp: using LICR-like macro names; e.g. \armAyb, \armsha, \armfe etc.
9
documentation: TeXLive: .../2016/texmf-dist/doc/generic/armenian/
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
28
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
% iso8859-2
% $Id: texlive-pl.tex, v. 53 2015/05/17
% TeX Live documentation.
% Originally written by Sebastian Rahtz and Michel Goossens,
% now maintained by Karl Berry and others.
% Polish translation and additions by Staszek Wawrykiewicz
% (with a little help from my friends, while my guitar gently weeps ;-)
% Public domain.
% ----
% UWAGA dla recenzentów/tşumaczy: %%! to moje komentarze (StaW)
%
\providecommand{\pdfxopts}{a-2u,LATxmp}
\providecommand{\thisyear}{2015}
\begin{filecontents*}{\jobname.xmpdata}
\Title{Przewodnik po TeX Live \thisyear}
\Author{Redakcja: Karl Berry\sep \textLII{tşumaczenie: Staszek Wawrykiewicz}}
\Subject{\textLII{Niniejsza dokumentacja opisuje oprogramowanie \TeX\ Live
-- dystrybucjê \TeX-a wraz z~programami pomocniczymi, dostêpnś dla ró£nych wersji Unix,
w~tym GNU/Linux, MacOSX i~Cygwin, oraz Windows.}\textLF\textLF Documentation originally
written by Sebastian Rahtz and Michel Goossens, now maintained by Karl Berry and others.}
\Keywords{TeX Live \thisyear\sep documentation\sep installation\sep \TeX}
\Copyright{Public domain}\Copyrighted{False}
\CopyrightURL{http://tug.org/texlive/}
\CoverDisplayDate{Maj \thisyear}
\CoverDate{\thisyear-05-17}
\Creator{pdfTeX + pdfx.sty with options \pdfxopts, from TeX Live 2016}
\end{filecontents*}
%
\documentclass{article}
\let\tldocenglish=0 % for live4ht.cfg
\let\textsl\textit
\usepackage[\pdfxopts]{pdfx}[2016/04/13]
\PassOptionsToPackage{obeyspaces}{url}
\PassOptionsToPackage{breaklinks,colorlinks,linkcolor=hypercolor,citecolor=hypercolor,%
urlcolor=hypercolor,filecolor=hypercolor,bookmarksopen,hyperindex}{hyperref}
\hypersetup{breaklinks,colorlinks,allcolors=hypercolor}
\usepackage{tex-live}
\usepackage{polski} %% for PL
\usepackage[latin2]{inputenc} %% for PL
\usepackage[T1]{fontenc}
...
\begin{document}
\title{\huge \textit{Przewodnik po \protect\TL{} 2015}}
\author{Redakcja: Karl Berry; tşumaczenie: Staszek Wawrykiewicz \\[3mm]
\url{http://tug.org/texlive/}}
\date{Maj 2015}
Figure 8: Start of the L
A
T
E
X source for the Polish version of T
E
X Live documentation. Although
Latin-2 encoded, the bytes are shown here using L
A
T
E
X’s T1 encoding [27, p. 449].
AR8xmp: using the ArmT
E
X (OT6) transliteration scheme or with upper-range characters
in ArmSCII8 encoding, using the ‘parser’ macro \textARM.
There are 39 letters in the Armenian alphabet, so the transliteration includes many 2-letter
combinations to specify the desired character. Whereas Greek uses punctuation symbols to
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
29
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
specify diacritics, Armenian requires either ligatures implemented in the OT6-encoded font, or
careful parsing of the input into LICR-like macros. L
A
T
E
X source
10
for the ArmT
E
X documen-
tation is available in both English and Armenian. Figure 11 shows the result of enriching the
Armenian version with relevant metadata, using coding as shown in Figure 12.
As in earlier examples, that metadata has come from the extensive comments at the head of
the L
A
T
E
X source le (represented by ... in Figure 12), and other title-page material, such as title
and author names in both English and Armenian. Within the keywords are armenian words
that are mentioned in the documentation as being slightly tricky to represent in transliteration,
to verify that the required tricks have been correctly implemented.
Also apparent in Figure 11 is the use of Armenian letters in the Bookmarks pane, having
been generated from the transliteration source. This requires a 3-step process, as follows.
1. conversion of transliterated source into UTF-8. This is done as the .xmpdata le is pro-
cessed, using \pdfxEnableCommands to make global denitions; e.g,
\xdef\sectAtitle{\textARM{Nerac'uthyun}}
capturing the section title in the form supplied in the L
A
T
E
X source. This can be seen in
Figure 12, near the end of the {filecontents} environment, and at the bottom where
the \section command would occur.
2. conversion of the UTF-8 representation into UTF16-be, suitable for bookmark strings
within the PDF le. With pdfT
E
X this is done using \StringEncodingConvert from Heiko
10
TeXLive: .../2016/texmf-dist/doc/generic/armenian/examples/latex/
Figure 9: Metadata generated from the coding shown in Figure 10 using the greek language
specied via the LGR encoding.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
30
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
% ...
% This file is part of the Babel system.
% --------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% ...
% The Current Maintainer of this work is Günter Milde.
% ...
\providecommand{\pdfxopts}{a-2u,LGRxmp,LATxmp}
\begin{filecontents}[force]{\jobname.xmpdata}
\Title{Writing Greek with the "greek" option of the "babel" package}
\Author{Apostolos Syropoulos\sep Günter Milde}
\Subject{This document describes the use of the Latin transliteration for Greek that is
defined by the LGR font encoding. Today, all modern LaTeX distributions support literal
input of Greek, which is the preferred method for new documents. [G. Milde 2013/12/02]}
\Keywords{\textLGR{monotonik'o}\sep \textLGR{polutonik'o}\sep \textgreek{oxe'ia} \sep
\textgreek{>a’erac}\sep \textgreek{>anate’ilh|}\sep \textgreek{qa"ide’uh|c}} \sep
\textgreek{D'uskoloc} of \textgreek{M'enandroc}\textLF \textLGR{T'i f'hic? <Id̀wn
>enj'ede pa~id'' >eleuj'eran\textLF t̀ac plhs'ion N'umfac stefano~usan, S'wstrate,
\textLF >er~wn 'ap~hljec e>uj'uc? \sep
\textaristerikeraia\textalpha\textsampi\textqoppa\textzeta\textdexiakeraia\sep
\textaristerikeraia\textAlpha\textSampi\textQoppa\textZeta\textdexiakeraia}}
\CoverDate{1997-10-15}
\CoverDisplayDate{October 15, 1997}
\Copyright{This file is part of the Babel system.\textLF This file may be distributed and/or
modified under the conditions of the LaTeX Project Public License, either version 1.3
of this license or (at your option) any later version.}
\CopyrightURL{http://www.latex-project.org/lppl.txt}
\end{filecontents}
%
\documentclass[11pt]{article}
\usepackage[\pdfxopts]{pdfx}[2016/04/13]
\hypersetup{colorlinks,allcolors=blue}
\usepackage[american,greek]{babel}
\languageattribute{greek}{polutoniko}
\usepackage{athnum,grmath}
\newcommand{\sg}{\selectlanguage{greek}}
\newcommand{\sa}{\selectlanguage{american}}
\begin{document}
\selectlanguage{american}
\title{Writing Greek with the \ttfamily greek\rmfamily\ option of the
\ttfamily babel\rmfamily\ package}
\author{Apostolos Syropoulos\\
...\\...}
\date{October 15, 1997}
\maketitle
\abstract{\noindent
This document describes the use of the Latin transliteration for Greek that
is defined by the LGR font encoding. Today, all modern LaTeX distributions
support literal input of Greek, which is the preferred method for new
documents. [G. Milde 2013/12/02]}
Figure 10: Start of enriched L
A
T
E
X source for a document describing how to typeset in Greek,
with added metadata demonstrating the LGR transliteration encoding.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
31
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Figure 11: Metadata generated from the coding shown in Figure 12 using the Armenian lan-
guage specied using ArmT
E
X transliteration. Bookmarks have been generated in Armenian.
Figure 13 explains how the word indicated in red is obtained via parsing.
Oberdiek’s stringenc.sty package. LuaL
A
T
E
X and XeL
A
T
E
X can use the UTF-8 represen-
tation directly.
3. integration of the UTF16-be string (pdfT
E
X) or UTF-8 string (LuaT
E
X and XeT
E
X) into
the coding that would normally generate the bookmark from a provided section title, in
transliterated form.
These last two steps are combined into a single command, to replace the usual command for a
section title; \section, \subsection, etc.
\pdfxBookmark{\section}{\sectAtitle}{Nerac'uthyun}
Now \pdfxBookmark rst checks that the macro passed as the 2nd argument actually exists. If it
does not, an error message is given and upon continuation would just do \section{Nerac'uthyun}
as normal. When it does exist, then step 2 is done (by pdfT
E
X) storing the result as \pdfx@temp.
With LuaT
E
X and XeT
E
X, \pdfx@temp stores a copy of the UTF-8 data. Then the commands
needing to be executed are essentially
\pdfstringdefDisableCommands{\let\sectAtitle\pdfx@temp}
\def\sectAtitle{Nerac'uthyun}
\section{\sectAtitle}
so that the correct section heading is displayed on the page, but when \sectAtitle is processed
to create a bookmark it is replaced by the pre-prepared contents of \pdfx@temp. There are some
technicalities
11
to make this work cleanly, as just doing these commands would interfere with
other uses of \pdfstringdef. In case a long sectioning command has an optional argument,
or a -variant is needed, then include it this way.
11
In fact a small change is made to how \@@writetorep is used.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
32
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This is the ̀manual.tex' file (ArmTeX manual in Armenian).
...
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\providecommand{\pdfxopts}{a-2u,armxmp,AR8xmp}
\immediate\write18{rm \jobname.xmpdata}
\begin{filecontents*}{\jobname.xmpdata}
\Title{ArmTeX is a system for writing in Armenian with Plain TeX and/or LaTeX(2e).\textLF
\textARM{\ArmTeX̀ {\aroff\TeX}-um ev {\aroff\LaTeX}-um Hayeren Lezvov Grelu Hamakarg}}
\Author{Sergue\"i Dachian \textARM{--- Sergey DASHYAN}\sep Arnak Dalalyan
\textARM{--- Ar'nak DALALYAN}\sep Vardan Akopian \textARM{--- Vardan HAKOBYAN}}
\Copyright{\textcopyright 1997\textendash 2013 ArmTeX may be distributed and/or modified
under the conditions of the LaTeX Project Public License, either version 1.3 of this
license or (at your option) any later version.}
\CopyrightURL{http://www.latex-project.org/lppl.txt}
\Subject{WARNING! This is the (almost unchanged) manual of the version 2.0. It will be
replaced by the manual of the version 3.0 before this beta release becomes official.
A (temporary) brief description of the new features of \latArmTeX~3.0 can be found at
the end of the ̀̀readme.txt'' file. \textLF
\textLF\textARM{OWSHADROWT’YO|WN: Sa tarberak 2.0-i (grethe anphophox) dzer'narkn e': Ayn
kphoxarinvi tarberak 3.0-i dzer'narkov naxqan ays beta tho\-ghark\-man pashtonakanacowmu':
\ArmTeX~3.0-i nor hnaravoruthyunneri (g'a\-ma\-na\-ka\-vor) hamar'ot nkaragrowmu' (angleren
lezvov) karogh eq gu't\armuh nel~̀̀}readme.txt\textARM{'' fayli verjum:}
\textLF\textLF\textARM{Hamakargu' o'gtagorc'elu hamar bavakan e' karoghanal ayn kanchel dzer
fayleric, tirapetel tar'qatesakneru' phoxogh hramannerin ev i\-ma\-nal the inchpes petq e'
nermuc'el teqstu' steghnasharic: Ays gor\-c'o\-ghu\-thyun\-ne\-ru' nkaragrvac' en hajordogh
ereq bag'innerum:}}
\Keywords{\textARM{si\-ra\-marg}\sep \textARM{bu'\armuh nuthyun}\sep \textARM{Se\armuh van}
\sep \textARM{tare\*verj}\sep \textARM{̀̀mat''}\sep \textARM{̀̀mat"}\sep \textARM{d\*zzal}
\sep \textARM{t\*haj'}\sep \textARM{t\*has}}
\CoverDisplayDate{1 June 1999 (\textARM{1-u' hunisi 1999 th.})}
\Creator{pdfTeX + pdfx.sty with \pdfxopts\space options}
\pdfxEnableCommands{\let\sl\empty%
\xdef\sectAtitle{\textARM{Nerac'uthyun}}%
\xdef\sectBtitle{\textARM{Tar'eri ev ketadrakan nshanneri greladzevu'}}%
...
\xdef\sectFtitle{\textARM{Arm\TeX-i phophoxman patmuthyunu'}}%
}
\end{filecontents*}
\documentclass[12pt,a4paper]{article}
\usepackage[\pdfxopts]{pdfx}
\hypersetup{colorlinks,allcolors=blue}
...
\title{\ArmTeX$\,$̀ $\,${\aroff \TeX}-um ev {\aroff \LaTeX}-um Hayeren Lezvov
Grelu Hamakarg\\ {\normalsize\aroff (\latArmTeX: a System for Writing in Armenian
with \TeX\ and \LaTeX)}}
\author{ ... }%
\date{1-u' hunisi 1999 th.}
...
\begin{document}
\maketitle
...
%\section{\sectAtitle}%{Nerac'uthyun}}
\pdfxBookmark{\section}{\sectAtitle}{Nerac'uthyun}
Figure 12: Enriched L
A
T
E
X source for the Armenian version of the ArmT
E
X manual, with added
metadata demonstrating the ArmT
E
X transliteration scheme for OT6 encoding. Also shown is
coding used to produce bookmarks from the transliteration.
\pdfxBookmark[Ar'avot e'r]{\section*}{\sectAtitle}{Ar'avot e'r, Araratyan dashti ...}
4.1.5. Other Languages
There is support for Metadata using characters from other languages, with corresponding load-
ing options, as follows.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
33
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
arbxmp : Arabic; via LICRs \textarabicalef, \textarabicqaf,
\textarabicaleflowerhamza, etc.
devxmp : Devanagari; via LICRs \textdevanagaria, \textdevanagarivocalicr,
\textdevanagaricandrabindu, etc.
hebxmp : Hebrew; via LICRs \hebalef, \hebsamekh, \hebfinalpe and accent marks
\segol, \qubuts, etc.
vnmxmp : Vietnamese; via LICRs \ABREVE, \OCIRCUMFLEX, \uhorn etc. and the combina-
tions of multiple accents applied as usual via \', \̀, \^, etc.
The LICRs include support mapping accented letters to precomposed glyphs, falling back on
‘combining characters’ only in unusual situations. Special input conventions or methods, such
as transliteration schemes, are not yet supported. Indeed, these options are largely untested,
so any diculties encountered should be reported to the package authors. Requests to support
extra input methods or other language blocks should also be directed to the authors, along
with pointers to where the desired input methods are fully described. Sample ‘real-world’
documents would be greatly appreciated.
4.2. L8U pseudo-encoding
To understand how pdfx handles the translation into UTF-8 of input that is not already in
that format, we’ll briey discuss L
A
T
E
X’s font-encoding mechanism, which is the basis for LICR
macros [27, § 7.11]. As an example, consider the macro \textgamma representing the lowercase
Greek letter γ. Various L
A
T
E
X packages declare this as LICR in dierent ways, for dierent
purposes.
greek-fontenc/lgrenc.def:\DeclareTextSymbol{\textgamma}{LGR}{103}
tipa/t3enc.def:\DeclareTextSymbol\textgamma{T3}{71} % Gamma
greek-fontenc/greek-euenc.def:\DeclareTextCommand{\textgamma}{\LastDeclaredEncoding}{Îł}
hyperref/puenc.def:\DeclareTextCommand{\textgamma}{PU}{\83\263}%* U+03B3
ucs/data/uni-2.def:\uc@dclc{611}{tipa}{\textgamma}%
ucs/data/uni-3.def:\uc@dclc{947}{default}{\textgamma}%
Here the \uc@dclc commands associate UTF-8 input of Ux0263 (IPA small letter gamma) and
Ux03B3 (Greek small letter gamma) internally with \textgamma, whereas the others deal with
output formats
12
. In four of these examples there is a number, which refers to a position in an
‘encoding vector’ for the particular font used to place the character onto the printable page.
For example LGR refers to greek fonts, encoded as explained in Section 4.1.3. IPA phonetics use
the T3 encoding, so \textgamma refers to a character from a dierent Unicode block.
With two of these cases there is no specic font. For example, PU is used to create book-
mark strings, and other PDF string inclusions, using \pdfstringdef from the hyperref pack-
age. With greek-euenc.def designed for XeT
E
X and LuaT
E
X, the encoding can be variable,
with the output bytes being those for the UTF-8 encoding of γ, namely ^^ce^^b3, shown here
as the T1-encoded pair Îł. The term ‘pseudo-encoding’ has been coined by the L
A
T
E
X team.
Although there is no actual font to determine the encoding, to an author there is essentially
no dierence in how corresponding macros can be used to get a character placed into an ap-
propriate structure within the PDF.
Thus there are 4 output forms for this character, and we’ve not even considered how γ
is used in mathematics! To handle these concurrently, one has internally-dened control-
sequence names
12
Whereas ucs.sty handles UTF-8 input, mapping it to LICRs, with pdfx.sty we need the reverse mapping into
UTF-8, not just from LICRs but also from legacy 8-bit encodings and transliteration schemes.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
34
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\LGR\textgamma=\char"67 where 6 × 16 + 7 = 103
\T3\textgamma=\char"47 where 4 × 16 + 7 = 71
\PU\textgamma=\long macro:->\83\263
\L8U\textgamma=\long macro:->Îł
where the 2nd ‘\’ is part of the name
13
. The latter macro is explained below. To use
the specic version of the macro, L
A
T
E
X maintains a ‘font-encoding’ parameter, set using
\fontencoding{...} local to the surrounding environment grouping.
To the above declarations of \textgamma, to deal with conversion to UTF-8, the pdfx pack-
age adds the following declarations when the LGRxmp option is used.
pdfx/l8ugrk.def:\DeclareTextCommand{\textgamma}{L8U}{Îł}
pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{\textgamma}{Îł}
pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{g}{Îł}
pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{^^e3}{Îł}
The pseudo-encoding name L8U indicates Local conversion into UTF-8 Unicode, as required
for metadata, using pdfx.sty. Currently this pseudo-encoding is used in one place only; during
the interpretation of information supplied through the \jobname.xmpdata le. This happens
as part of the pdfx package, before it uses xmpincl.sty. Such specicity justies being called a
‘Local’ encoding. However, other tasks may emerge requiring on-the-y conversion to UTF-8.
In this case all the functionality of this pseudo-encoding could be shifted into a separate pack-
age, and the name changed to reect this more general usage. Bookmarks from transliterated
input, as described in Section 4.1.4, is possibly a sucient reason to have a separate package.
Another possibility is to generate on-the-y creation of UTF-8 strings, to be sent to XeT
E
X or
LuaT
E
X running as a slave process to generate images of string using OTF fonts, which pdfT
E
X
currently cannot handle. The result would then be imported back into the running job as an
image. The authors invite suggestions of how this L8U pseudo-encoding functionality can be
put to good use.
Accented letters normally use (e.g., from t1enc.def)
\DeclareTextComposite{\̀}{T1}{A}{192}
to get the pre-composed À, rather than a composite built from
̀
and A. The last parameter
is an index into a font; however the \DeclareTextCompositeCommand variant allows arbitrary
coding as that nal parameter, so can be the bytes for the UTF-8 representation of a character.
In the above code lines, macros are dened as follows
\\L8U\textLGRenc-\textgamma=macro:->Îł
\\L8U\textLGRenc-g=macro:->Îł
\\L8U\textLGRenc-ã=macro:->Îł
where now the 2nd and 3rd (and perhaps 4th) ‘\’ are part of the name
14
. This shows how the
ascii letter ‘g’ is associated with the UTF-8 bytes for γ, and how the upper 8-bit character from
^^e3 can be similarly associated, as in ISO-8859-7 encoding.
All these associations come together in the ‘parser’ macro \textLGR which works as fol-
lows. Firstly, \textLGR is declared for L8U pseudo-encoding only, where it expands as follows.
13
obtained using \csname LGR\string\textgamma\endcsname.
14
obtained using \csname\string\LGR\string\textLGRenc-\string\textgamma\endcsname.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
35
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\L8U\textLGR #1->\textgreekLGRstring {#1}
\L8U\textgreekLGRstring #1->\textgreekLGR@ii #1\@empty \@empty
\textgreekLGR@ii #1#2\@empty -> ... coding to test what is in #2
... \textLGRenc{#1}\@empty if #2 is \@empty
... \textLGRenc{#1}\textgreekLGR@i #2\@empty if #2 has more tokens
\textgreekLGR@i #1->\textgreekLGR@ii #1
Thus \textLGRenc is called on each token in the argument of \textLGR. Now \textLGRenc,
which is applicable only when L8U pseudo-encoding is in eect, has a default expansion of just
passing the character through unchanged; viz.
\DeclareTextCommand{\textLGRenc}{L8U}[1]{#1}
but by using \DeclareTextCompositeCommand{\textLGRenc}{L8U}{...}{...}, alternate ex-
pansions apply with specic arguments, as shown above. In particular, that nal argument
can include coding that ‘looks ahead’ to nd the next character. This is used, for example,
with diacritics in Greek, multi-letter sequences for Armenian letters, and other special cases
related to ligatures and punctuation symbols. To illustrate this Figure 13 (below) follows the
conversion of a specic word, given in the transliteration for Armenian (see Section 4.1.4).
This conversion occurs using only T
E
X’s macro-expansion ability. Some details relevant to
this example are explained there.
Note how in Figure 13 the ArmT
E
X user macro \armuh gets aliased to an LICR called
\textarmuh. Since \armuh is already dened, not as an LICR, it cannot be declared to be
one without creating problems. Instead, within the environment grouping where L8U pseudo-
encoding is specied, one uses \let\armuh\textarmuh within a ‘rebinding’ macro command
\LIIXUmaparmenianletters
15
to get LICR functionality from user-commands.
\def\LIIXUmaparmenianletters{%
\let\ArmTeX\textArmTeX
\let\Armayb\textArmayb
...
\let\armuh\textarmuh
...
\def\armbf{}%
... }
As well as rebinding each command for a letter, the font style-switching commands are aliased
to do nothing, as these are not relevant to creating UTF-8 output. Being localised by the L8U
grouping, this causes no problem elsewhere within the document. These are similar to macros
\psdaliasnames and \psdmapshortnames from hyperref.sty, which rebind user macros to
LICRs, so that PU encoded versions of LICRs can be used.
Several other ‘rebinding’ commands are dened, mostly with package-loading options.
\LIIXUmapTeXnames always dened
\LIIXUscriptcommands handles \textsuperscript, \textsubscript, \t
\LIIXUtipacommands handles IPA letters and symbols
\LIIXUmaparabicletters with arbxmp
\LIIXUmaparmenianletters with armxmp and AR8xmp
\LIIXUmapdevaccents with devxmp
\LIIXUmapgreekletters with grkxmp and LGRxmp
15
The start of the macro name is derived from pseudo-Roman numerals: IX = 9, IIX = 8
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
36
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\textARM{Se\armuh van}
\textarmenARMstring {Se\armuh van}
\textarmenARM@ii Se\armuh van\@empty \@empty
\textARMenc {S}\textarmenARM@i e\armuh van\@empty \@empty
\arm@en{S}{Ő?}{\arm@nc{h}{Ő?}{\arm@nc{H}{Ő?}{Ő?}}}\textarmenARM@i e\armuh van\@empty ...
\arm@nc{h}{Ő?}{\arm@nc{H}{Ő?}{Ő?}}\textarmenARM@i e\armuh van\@empty \@empty
\arm@nc{H}{Ő?}{Ő?}\textarmenARM@i e\armuh van\@empty \@empty
Ő?\textarmenARM@i e\armuh van\@empty \@empty
Ő?\textARMenc {e}\textarmenARM@i \armuh van\@empty \@empty
Ő?\textARMenc {e}\textarmenARM@i \armuh van\@empty \@empty
Ő?\arm@en{e}{Ő„}{\arm@nc{'}{Ő§}{\arm@nc{v}{Ö?}{Ő„}}}\textarmenARM@i \armuh van\@empty ...
Ő?\arm@nc{'}{Ő§}{\arm@nc{v}{Ö?}{Ő„}}\textarmenARM@i \armuh van\@empty \@empty
Ő?\arm@nc{v}{Ö?}{Ő„}\textarmenARM@i \armuh van\@empty \@empty
Ő?Ő„\textarmenARM@i \armuh van\@empty \@empty
Ő?Ő„\textARMenc {\armuh }\textarmenARM@i van\@empty \@empty
Ő?Ő„\textarmuh\textarmenARM@i van\@empty \@empty
Ő?Ő„\\L8U\textarmuh-\textarmenARM@i van\@empty \@empty
Ő?Ő„\textarmgobblespace van\@empty \@empty
Ő?Ő„\\L8U\textarmgobblespace- van\@empty \@empty
Ő?Ő„\textarmenARM@i van\@empty \@empty
Ő?Ő„\textARMenc {v}\textarmenARM@i an\@empty \@empty
Ő?Ő„\arm@en{v}{ŐŸ}{\arm@nc{n}{ïŹ?}{ŐŸ}}\textarmenARM@i an\@empty \@empty
Ő?Ő„\arm@nc{n}{ïŹ?}{ŐŸ}\textarmenARM@i an\@empty \@empty
Ő?Ő„ŐŸ\textarmenARM@i an\@empty \@empty
Ő?Ő„ŐŸ\textARMenc {a}\textarmenARM@i n\@empty \@empty
Ő?Ő„ŐŸŐĄ\textarmenARM@i n\@empty \@empty
Ő?Ő„ŐŸŐĄ\textARMenc {n}\@empty
Ő?Ő„ŐŸŐĄŐ\@empty
Ő?Ő„ŐŸŐĄŐ
The macro \armen@en (named for empty or next), looks ahead to see if the 5th-next argument
token is \@empty, signifying that there is nothing left of the original input. (A closed bracing
{...} counts as a single argument.) If \@empty the tokens in the 2nd bracing are substituted,
otherwise those in the 3rd bracing. Similarly \armen@nc (named for next character) looks to
see whether that 5th argument token matches with the character in the 1st bracing. If so, the
2nd bracing’s tokens are substituted, else those of the 3rd bracing. This is how to cope with
‘Sh’ or ‘SH’, implemented as ligatures in an OT6 encoded font, denoting a dierent letter from
a single ‘S’. The macro \armuh is used here to prevent a ligature from ev that would otherwise
occur. One writes e\armuh v to get the separate letters. As the space becomes an active token,
we need \textarmgobblespace to restart parsing appropriately. Of course \textarmenARM@i
behaves like \textgreekLGR@i as explained earlier, with a test for \@empty as the 2nd token.
At the end, any remaining \@empty expand into nothing.
Figure 13: Partial tracing of the conversion of an Armenian word, indicated by the red oval in
Figure 11, from OT6 transliterated form into UTF-8 bytes. In each line, T
E
X expansion occurs
at the position of the left-most ‘\’. The resulting bytes are shown here in T1 encoding, as in
previous examples, with ? indicating an invisible character in the byte range Ox80Ox9f. See
Figure 14 for how this source appears with UTF-8 encoding.
\LIIXUmaphebrewletters with hebxmp and HEBxmp
\LIIXUmaplatinchars and \LIIXUcancelfontswitches with LATxmp
\LIIXUmapmathletterlikes always dened
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
37
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Figure 14: Image of part of the source coding for Figure 13, viewed as UTF-8 encoded, within
editing software.
\LIIXUmapmathspaces always dened
\LIIXUmapmath... with mathxmp — see Section 4.3 below.
It may well be that more macro names can be added to some of these commands, to allow
macro usage within the metadata. Suggestions for such additions should be sent to the pdfx
package authors, along with example documents. Similarly support for more languages can
be requested.
4.3. Nested Parsing Mathematics in Metadata
Macro commands for many mathematical symbols can be used directly in metadata without
extra support; e.g., basic arithmetic operations, letter-like symbols, spacing commands. Super-
and subscripted letters and numerals can use \textsuperscript and \textsubscript when
there is an appropriate Unicode character (digits, comma, +//=, parentheses, many letters
but not all).
When the mathxmp loading option is specied, many more symbols become available, using
‘rebinding’ macros. These are necessary, as the macros for mathematical symbols are generally
not dened as LICRs, but use \mathchar. Thus new LICRs are needed, and existing names
bound to these.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
38
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\LIIXUmapmathaccents using ‘combining’ characters from Unicode ranges at Ux0300, Ux1DC0, Ux20D0
\LIIXUmapisomathgreek using Ux0391Ux03F8 for greek symbols
\LIIXUmapmatharrowsA supporting symbols in the Ux2190Ux21FF block
\LIIXUmapmathoperatorsA supporting symbols in the Ux2200Ux227F block
\LIIXUmapmathoperatorsB supporting symbols in the Ux2280Ux22FF block
\LIIXUmapmiscmathsymbolsA supporting some symbols in the Ux27C0Ux27EF range
\LIIXUmapsupparrowsA supporting some symbols in the Ux27F0Ux27FF block
\LIIXUmapsupparrowsB supporting some symbols in the Ux2900-â??Ux297F block
\LIIXUmapmiscmathsymbolsB supporting symbols in the Ux2980Ux29FF block
\LIIXUmapsuppmathoperators supporting symbols in the Ux2A00Ux2AFF block
\LIIXUmapunimathgreek using Ux1D6E2Ux1D71B for greek symbols
\LIIXUmapmathalphabets allows access to symbols in the Ux1D400Ux1D755 block
The ‘parser’ macro idea can extends to handle a large class of mathematical expressions.
\let\(\textinlinemath
\DeclareTextCommand{\textinlinemath}{L8U}{\liixu@getinlinemath}
\def\liixu@getinlinemath#1\){\space\textmathnormalstring{#1}\space}
\DeclareTextCommand{\textmathnormalstring}{L8U}[1]{\textmathnormal@ii#1\@empty\@empty}
\textmathnormal@ii #1#2\@empty -> ... coding to test what is in #2
... \textmathnormal{#1}\@empty if #2 is \@empty
... \textmathnormal{#1}\textmathnormal@i #2\@empty if #2 has more tokens
\let\[\textdisplaymath dened similarly to call \textmathnormalstring
This allows \textmathnormal to test each token, in particular mapping letters A–Za–z into the
Unicode range Ux1D44EUx1D467 (except for h). Mathematical styles, such as \mathrm, \mathbf,
\mathbb etc. can now be handled using declarations such as:
\Dec...positeCommand{\textmathnormal}{L8U}{\mathrm}{\liixu@mathreorder\textmathrmstring}
\Dec...positeCommand{\textmathnormal}{L8U}{\mathbf}{\liixu@mathreorder\textmathbfstring}
where \liixu@mathreorder uses some T
E
X pattern-matching to allow the \textmathrmstring
parser macro to work on the argument to \mathrm before allowing \textmathnormal parsing
to continue afterwards. We refer to this as ‘nested parsing’.
Similarly ‘nested parsing’ can be used with superscripts and subscripts using ^{...} and
_{...} and to specify linebreaks, and even super-/subscripts within styles; viz.
\Declar...CompositeCommand{\textmathnormal}{L8U}{^}{\liixu@mathreorder\textsuperstring}
\DeclareTextCompositeCommand{\textmathnormal}{L8U}{_}{\liixu@mathreorder\textsubstring}
\DeclareTextCompositeCommand{\textmathnormal}{L8U}{\\}{\textLF}
\DeclareTextCompositeCommand{\textmathnormal}{L8U}{\cr}{\textLF}
\DeclareTextCompositeCommand{\textmathrm}{L8U}{^}{\liixu@mathreorder\textsuperstring}
\DeclareTextCompositeCommand{\textmathrm}{L8U}{_}{\liixu@mathreorder\textsubstring}
Such ‘nested parsing’ seems to be quite robust
16
, but a great deal more testing is required
to uncover cases which may require special handling. An ultimate aim is to be able to just
copy the L
A
T
E
X source for the Abstract’ of a technical paper into the \Subject{...} eld of
the .xmpdata le, with a large expectation that it will ‘just work’, or need only trivial edits to
make it so.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
39
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Figure 15: Metadata from student assignment papers, using information drawn from a
database. The start of the L
A
T
E
X coding for this example is shown in Figure 16.
4.4. Metadata in a Production Workow
At Macquarie University, the Mathematics Department produces personalised topmatter or
coversheets for student assignments and tutorial papers using L
A
T
E
X, incorporating information
that has been stored in a database. This is done by writing extra denitions at the top of a
copy of the L
A
T
E
X source as prepared by the lecturers. For example information analogous to
the following
\def\thestudentname{\utext{Moore} Ross}
\def\thestudentid{55507247}
\def\theunitcode{MATH337}
\def\theoffering{S116}
\def\thetaskname{Assignment 5}
\def\theassignmentnumber{5}
\def\theduedate{09/05 2016}
...
is prepended to the le shown in Figure 16, for each student downloading their personalised
assignment paper. The L
A
T
E
X source makes use of this information, including recording some
of it within the Metadata. When preparing such documents L
A
T
E
X’s \providecommand is used
to supply default values, not drawn from the database; but when actually used, these are ig-
16
... so far, barring multi-line aligned environments.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
40
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\providecommand{\theassignmentnumber}{5}
\providecommand{\assignLecturer}{Dr Ross Moore}
\providecommand{\theunitcode}{MATH337}
\providecommand{\theunitname}{Algebra IIIA}
\providecommand{\theyear}{2016}
...
\def\assigntopics{orbits, stabilisers, groups of matrices}
\providecommand{\pdfxopts}{a-1b}
%% XMP metadata for PDF/A conformance
\begin{filecontents}[force]{\jobname.xmpdata}
\Title{\theunitcode\ \theoffering: Assignment \theassignmentnumber}
\Author{\assignLecturer}
\Copyright{Macquarie University, Mathematics Department}
\Subject{Assignment \theassignmentnumber, with coversheet personalised for \thestudentname,
id = \thestudentid}
\Keywords{\assigntopics}
\Creator{pdfTeX + pdfx.sty with \pdfxopts\space option}
\pdfxEnableCommands{\def\utext#1{#1,}}
\end{filecontents}
\documentclass[a4paper,11pt]{article}
\RequirePackage{assignments}
\usepackage[\pdfxopts]{pdfx}
Figure 16: Start of the L
A
T
E
X source for an assignment paper, using macro expansion values
supplied via denitions prepended to this le.
nored as the required information has been supplied using T
E
X’s \def command. The resulting
metadata is as in Figure 15, showing also how the information is displayed at the top of the
PDF le that is produced. Notice how a command \utext is included to obtain the underlining
of the surname within the produced PDF. This is modied, using \pdfxEnableCommands in the
\jobname.xmpdata le, to just place a comma after the surname in the metadata, as it precedes
the given name.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
41
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
Another way that jobs can be customised using essentially the same L
A
T
E
X source, is via the
command used to initiate the job. For example the le sample.tex, accompanying the pdfx
distribution, can be used to test the loading options to create PDFs conforming to the var-
ious avours of PDF/A, PDF/E and PDF/X. Consider a shell script containing the following
(Unix/Linux) commands.
pdflatex "\def\pdfxopt{a-2b}\input sample.tex"
pdflatex "\def\pdfxopt{a-2b}\input sample.tex"
mv sample.pdf sample-a2b.pdf
pdflatex "\def\pdfxopt{a-2u}\input sample.tex"
pdflatex "\def\pdfxopt{a-2u}\input sample.tex"
mv sample.pdf sample-a2u.pdf
...
With a 3-line block for each avour, this produces a corresponding PDF from the same L
A
T
E
X
source, named according to each particular variant. A default \providecommand{\pdfxopt}{a-1b}
at the start of sample.tex catches the case of normal typesetting, doing nothing when \pdfxopt
already has an expansion value.
4.5. Further Developments
Prospects for further development of the pdfx package are as follows, listed not necessarily in
order of perceived importance.
Support for the dvips driver with Ghostscript as PDF producer; possible since gs v9.21.
Separate the L8U pseudo-encoding support into a separate package.
Conformance to multiple PDF standards; e.g. both PDF/A and PDF/E, both PDF/A and
PDF/X with RGB or CMYK color prole, other combinations.
Explore delaying the processing of metadata until \begin{document}, thereby allowing
some elds to be set automatically from other information supplied within the document
preamble.
Support for input using other legacy 8-bit encodings and transliterations.
Support for more mathematical environments within the metadata.
Support for more PRISM metadata elds, incl. PRISM 3.0 [34].
Explore ways to overcome incompatibilities that may arise with other packages.
Full support for PDF/VT; in particular, transparency groups and PDF/VT-2s.
Support for more aspects of PDF/UA and ‘Tagged PDF.
Develop ways to usefully use L8U apart from metadata and bookmarks.
Support emerging standards based on PDF 2.0 [26].
5. Bibliography
References
[1] Adobe Systems Inc.; PDF Reference 1.7, November 2006. Also available as [25].
http://www.adobe.com/devnet/pdf/pdf_reference.html.
[2] Adobe Systems Inc.; XMP Specication, Adding Intelligence to Media. September 2005.
Also available as ISO 16684-1:2012 [18].
http://www.adobe.com/devnet/xmp/.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
42
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
[3] ANSI / AIIM / ISO 14289-1:2012; Document management applications Electronic docu-
ment le format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1);
Technical Committee ISO/TC 171/SC 2 (July 2012 – withdrawn).
Revised as ISO 14289-1:2014 (Dec. 2014): https://www.iso.org/standard/64599.html.
Available from ANSI at https://webstore.ansi.org/standards/iso/iso142892014.
[4] ISO 14289-2:2024; Document management applications — Electronic document le for-
mat enhancement for accessibility — Part 2: Use of ISO 32000-2 (PDF/UA-2);
Technical Committee ISO/TC 171/SC 2 WG9 (March 2024). https://pdfa.org/iso-
14289-2-pdfua-2/
[5] BS,/ ISO 14289-1:2014; Document Management Applications. Electronic Document File
Format Enhancement For Accessibility. Use Of ISO 32000-1 (PDF/UA-1) (British Stan-
dard) https://webstore.ansi.org/standards/bsi/bsiso142892014.
[6] Callas Software Gmbh.; pdfaPilot, plug-in or desktop software for PDF/A versions.
https://www.callassoftware.com/en/products/pdfapilot.
[7] Dublin Core Metadata Element Set, Version 1.1, October 2010
http://dublincore.org/documents/dces/.
[8] IETF; Best Current Practice #47: Tags for Identifying Languages. Incorporates RFC 5646;
obsoletes RFC 4646. IETF Network Working Group, September 2009. https://tools.
ietf.org/pdf/bcp47.pdf.
[9] ISO 15930-1:2001; Graphic technology Prepress digital data exchange Use of PDF
Part 1: Complete exchange using CMYK data (PDF/X-1 and PDF/X-1a). Technical
Committee ISO/TC 130 (December 2001). https://www.iso.org/standard/29061.html.
[10] ISO 15930-3:2002; Graphic technology — Prepress digital data exchange — Use of PDF
Part 3: Complete exchange suitable for colour-managed workows (PDF/X-3). Techni-
cal Committee ISO/TC 130 (September 2002). https://www.iso.org/standard/34941.
html.
[11] ISO 15930-4:2003; Graphic technology Prepress digital data exchange Use of PDF
Part 4: Complete exchange of CMYK and spot colour printing data using PDF 1.4
(PDF/X-1a). Technical Committee ISO/TC 130 (December 2003). https://www.iso.org/
standard/39938.html.
[12] ISO 15930-6:2003; Graphic technology Prepress digital data exchange Use of PDF
Part 6: Complete exchange of printing data suitable for colour-managed workows
using PDF 1.4 (PDF/X-3). Technical Committee ISO/TC 130 (December 2003). https:
//www.iso.org/standard/39940.html.
[13] ISO 15930-7:2010; Graphic technology — Prepress digital data exchange — Use of PDF
Part 7: Complete exchange of printing data (PDF/X-4) and partial exchange of printing
data with external prole reference (PDF/X-4p) using PDF 1.6. Technical Committee
ISO/TC 130 (July 2010). https://www.iso.org/standard/55843.html.
[14] ISO 15930-8:2010; Graphic technology Prepress digital data exchange Use of PDF
Part 8: Partial exchange of printing data using PDF 1.6 (PDF/X-5). Technical Com-
mittee ISO/TC 130 (July 2010). https://www.iso.org/standard/55844.html. Revision
via Corrigendum: ISO 15930-8:2010/Cor 1:2011 (August 2011); https://www.iso.org/
standard/60210.html.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
43
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
[15] ISO 15930-9:2020; Graphic technology — Prepress digital data exchange — Use of PDF
Part 9: Complete exchange of printing data (PDF/X-6) and partial exchange of printing
data with external prole reference (PDF/X-6p and PDF/X-6n) using PDF 2.0 Techni-
cal Committee ISO/TC 130 (November 2020). https://www.iso.org/standard/77103.
html.
[16] ISO 16612-2:2010; Graphic technology Variable data exchange—Part 2: Using PDF/X-4
and PDF/X-5 (PDF/VT-1 and PDF/VT-2). Technical Committee ISO/TC 130 (December
2005). https://www.iso.org/standard/38013.html.
[17] ISO 16612-3:2020; Graphic technology Variable data exchange—Part 3: Using PDF/X-6
(PDF/VT-3). Technical Committee ISO/TC 130 (Edition1, 2020). https://www.iso.org/
standard/75218.html.
[18] ISO 16684-1:2012; Graphic technology Extensible metadata platform (XMP) speci-
cation Part 1: Data model, serialization and core properties. Technical Committee
ISO/TC 130 (February 2012 withdrawn). Revised as ISO 16684-1:2019; (Edition 2, 2019).
https://www.iso.org/standard/75163.html.
[19] ISO 19005-1:2005; Document Management Electronic document le format
for long term preservation Part 1: Use of PDF 1.4 (PDF/A-1); Technical
Committee ISO/TC 171/SC 2 (Sept. 2005). Revisions via Corrigenda: ISO 19005-
1:2005/Cor 1:2007 (March 2007); ISO 19005-1:2005/Cor 2:2011 (Dec. 2011). https://www.
iso.org/standard/38920.html.
[20] ISO 19005-2:2011; Document Management Electronic document le format for long
term preservation — Part 2: Use of ISO 32000-1 (PDF/A-2); Technical Committee ISO/
TC 171/SC 2 (June 2011). https://www.iso.org/standard/50655.html.
[21] ISO 19005-3:2012; Document Management Electronic document le format for long
term preservation Part 3: Use of ISO 32000-1 with support for embedded les
(PDF/A-3); Technical Committee ISO/TC 171/SC 2 (October 2012). https://www.iso.
org/standard/57229.html.
[22] ISO 19005-4:2020; Document Management Electronic document le format for long
term preservation Part 4: Use of ISO 32000-2 (PDF/A-4); Technical Committee
ISO/TC 171/SC 2 (Edition 1, 2020). https://www.iso.org/standard/71832.html.
[23] PDF Declarations. A use of ISO 32000. PDF Association, Berlin, Germany (2019). https:
//pdfa.org/resource/pdf-declarations/
[24] ISO 24517-1:2008; Document Management Engineering document format using PDF
— Part 1: Use of PDF 1.6 (PDF/E-1); Technical Committee ISO/TC 171/SC 2 (May 2008).
https://www.iso.org/standard/42274.html.
[25] ISO 32000-1:2008; Document management Portable document format (PDF 1.7); Tech-
nical Committee ISO/TC 171/SC 2 (July 2008). Also available as [1].
https://www.iso.org/standard/51502.html.
[26] ISO 32000-2:2017; Document management Portable document format Part 2:
PDF 2.0; Technical Committee ISO/TC 171/SC 2 Document le formats, EDMS systems
and authenticity of information. (July 2017 — withdrawn) Revised as ISO 32000-2:2020;
(Edition 2, 2020) https://www.iso.org/standard/75839.html.
Sponsored access available since 5 April 2023, from PDF Association.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
44
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
[27] F. Mittelbach, M. Goossens with J. Braams, D. Carlisle, C. Rowley; The L
A
T
E
X Companion
2nd edition. Addison–Wesley (now Pearson Education Inc.), 2004. ISBN 0-201-36299-6
(paperback).
[28] L
A
T
E
X Project Working Group, PDF Association. https://pdfa.org/community/
latex-project-lwg/
[29] L
A
T
E
X Tagged PDF A blueprint for a large project. Frank Mittelbach, Chris
Rowley; TUGboat, Volume 41 (2020), No 3. https://tug.org/TUGboat/tb41-3/
tb129mitt-tagpdf.pdf. Project website https://www.latex-project.org/; Preprint.
[30] PDF/A Competence Centre; TechNote 0009: XMP Extension Schemas in PDF/A-1.
(March 2008) https://www.pdfa.org/publication/technical-note-tn-0009-xmp-
extension-schemas-in-pdfa-1/.
[31] PDF/UA Technical Implementation Guide: Understanding ISO 14289-1
(PDF/UA-1). AIIM Global Community of Information Professionals. http://
www.aiim.org/Research-and-Publications/standards/committees/PDFUA/Technical
-Implementation-Guide.
[32] Well-Tagged PDF (WTPDF); Using Tagged PDF for Accessibility and Reuse in PDF 2.0.
PDF Association; PDF Reuse TWG & PDF/UA TWG. Version 1.0.0, February 2024. https:
//pdfa.org/wtpdf/
[33] N. Preining; colorprofiles Collection of free ICC proles. T
E
X and L
A
T
E
X pack-
age (by R. Moore), distributed with T
E
XLive. (Nov. 2018) https://ctan.org/pkg/
colorprofiles.
[34] PRISM; Publishing Requirements for Industry Standard Metadata. PRISM Metadata
Initiative; Idealliance Working Group. http://www.idealliance.org/specifications/
prism-metadata-initiative/prism
[35] C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore, Peter Selinger; Generation of PDF/X-
and PDF/A-compliant PDFs with pdfT
E
X— pdfx.sty. TUGboat Vol. 36, No. 2; TUG 2015
Conference Proceedings. T
E
X Users Group, 2015; pp. 136–142.
[36] tagpdf – Tools for experimenting with tagging using pdfL
A
T
E
X and LuaL
A
T
E
X. Ulrike Fis-
cher. Available via CTAN repository. https://ctan.org/pkg/tagpdf.
[37] tpdf; Ross Moore. Unpublished. L
A
T
E
X package and macro suite for producing ‘real-
world’ standards-conforming PDF documents. Examples available at http://maths.mq.
edu.au/~ross/TaggedPDF/.
[38] veraPDF. Industry Supported PDF/A Validation. Software, dual-licensed under the
GNU General Public License v3 or later (GPLv3+) and Mozilla Public License
v2 or later (MPLv2+). https://verapdf.org. Wiki: https://github.com/veraPDF/
veraPDF-validation-profiles/wiki
[39] World Wide Web Consortium (W3C); Resource Description Format: RDF 1.1
XML Syntax. W3C Recommendation. (February 2014) https://www.w3.org/TR/
rdf-syntax-grammar/.
[40] Wikipedia; PDF/A: https://en.wikipedia.org/wiki/PDF/A
PDF/E: https://en.wikipedia.org/wiki/PDF/E
PDF/VT: https://en.wikipedia.org/wiki/PDF/VT
PDF/UA: https://en.wikipedia.org/wiki/PDF/UA
PDF/X: https://en.wikipedia.org/wiki/PDF/X
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
45
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
6. Implementation
1 \@ifpackageloaded{pdfxmult}{%
2 \PackageError{pdfx}%
3 {^^JThis package may not be used in conjunction with the \space
4 pdfxmult \space package}%
5 {Type \space x <return> \space to exit; or just \space <return> \space
6 to continue without this package.}%
7 \expandafter\let\csname [email protected]\endcsname\@empty\endinput
8 }{}%
9 \NeedsTeXFormat{LaTeX2e}
10 \ProvidesPackage{pdfx}
11 [2024/06/24 v1.6.5f PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
12
13 \newif\ifpdfx@noBOM \pdfx@noBOMfalse % use a BOM in the XMP packet
14 \newif\ifpdfx@x \pdfx@xfalse % PDF/X mode
15 \newif\ifpdfx@e \pdfx@efalse % PDF/E mode; not fully implemented yet
16 \newif\ifpdfx@ua\pdfx@uafalse % PDF/UA mode; not fully implemented yet
17 \newif\ifpdfx@vt \pdfx@vtfalse % PDF/VT mode, extension of PDF/X
18 \newif\ifno@iccprofile % used with PDF/X-4p and PDF/X-5pg
19 \newif\ifpdfx@noerr % error messages become just warnings
20 \newif\ifpdfx@omitcharset % used with pdfomitcharset primitive
21
22 \DeclareOption{noerr}{\pdfx@noerrtrue}
23
24 %% Not all combinations of the following parameters are meaningful.
25 \def\xmp@Part{1} % PDF/A part: 1, 2, or 3
26 \def\xmp@Conformance{B} % Conformance level: A, B, or U
27 \def\xmp@ReleaseDate{2005} % 2001 for PDF/X-1, 2005 for PDF/A-1,
28 % 2010 for PDF/A-2, 2012 for PDF/A-3.
29
30 %% with Beamer pgf will have written Resource objects already
31 \newif\ifpdfx@luacheck@needed
32 \@ifpackageloaded{pgfcore}{\pdfx@luacheck@neededtrue}{}
33 %% thanks to Ryutaroh Matsumoto for reporting this issue
34
35 \newcount\pdfx@minorversion
36 \newcount\pdfx@majorversion
37 \expandafter\ifx\csname pdfmajorversion\endcsname\relax
38 %% RRM: 20240614 LuaLaTeX may not have this defined
39 \newcount\pdfmajorversion
40 \pdfmajorversion=1\relax
41 \fi
42 \expandafter\ifx\csname pdfminorversion\endcsname\relax
43 %% RRM: 20240614 this could be set in luatex85 package
44 \newcount\pdfminorversion
45 \pdfminorversion=3\relax
46 \fi
47 %% options can change these from the defaults
48 \global\pdfx@majorversion=\the\pdfmajorversion
49 \global\pdfx@minorversion=\the\pdfminorversion
50
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
46
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
51 \def\pdfx@ErrorWarning #1#2#3#4{%
52 \ifpdfx@noerr \PackageWarning{pdfx}{#1.^^J #2#3.^^J}%
53 \else \PackageError{pdfx}{#1}{#2#4.^^J
54 Use option 'noerr' to avoid this message.^^J}%
55 \fi}
56
57 \def\pdfx@Xvn@message{%
58 \pdfx@ErrorWarning{PDF/X-5n has no default profile}%
59 {Provide your own}{; continuing to build a non-valid document}%
60 {, else continue to build a non-valid document}%
61 }
62
63 %% support pdfomitcharset primitive, added to pdfTeX in 2019
64 \DeclareOption{nocharset}{\pdfx@omitcharsettrue}
65 \DeclareOption{usecharset}{\pdfx@omitcharsetfalse}
66
67 %% PDF/A options
68 %% default is to create PDF/A-1b
69 %% options can change this for PDF/X or higher levels of PDF/A
70 \DeclareOption{a-1a}{\global\pdfx@xfalse\def\xmp@Part{1}%
71 \def\xmp@Conformance{A}\def\xmp@ReleaseDate{2005}%
72 \pdfx@omitcharsetfalse}
73 \DeclareOption{a-1b}{\global\pdfx@xfalse\def\xmp@Part{1}%
74 \def\xmp@Conformance{B}\def\xmp@ReleaseDate{2005}%
75 \pdfx@omitcharsetfalse}
76 \DeclareOption{a-2a}{\global\pdfx@xfalse\def\xmp@Part{2}%
77 \def\xmp@Conformance{A}\def\xmp@ReleaseDate{2010}%
78 \pdfx@omitcharsettrue}
79 \DeclareOption{a-2b}{\global\pdfx@xfalse\def\xmp@Part{2}%
80 \def\xmp@Conformance{B}\def\xmp@ReleaseDate{2010}%
81 \pdfx@omitcharsettrue}
82 \DeclareOption{a-2u}{\global\pdfx@xfalse\def\xmp@Part{2}%
83 \def\xmp@Conformance{U}\def\xmp@ReleaseDate{2010}%
84 \pdfx@omitcharsettrue}
85 \DeclareOption{a-3a}{\global\pdfx@xfalse\def\xmp@Part{3}%
86 \def\xmp@Conformance{A}\def\xmp@ReleaseDate{2012}%
87 \pdfx@omitcharsettrue}
88 \DeclareOption{a-3b}{\global\pdfx@xfalse\def\xmp@Part{3}%
89 \def\xmp@Conformance{B}\def\xmp@ReleaseDate{2012}%
90 \pdfx@omitcharsettrue}
91 \DeclareOption{a-3u}{\global\pdfx@xfalse\def\xmp@Part{3}%
92 \def\xmp@Conformance{U}\def\xmp@ReleaseDate{2012}%
93 \pdfx@omitcharsettrue}
94 %%
95 %% PDF/X options
96 %% comments added, using
97 %% https://www.eci.org/_media/downloads/pdfx/pdfx_faq_english_nov05.pdf
98 %% https://en.wikipedia.org/wiki/PDF/X#List_of_the_PDF.2FX_standards
99 %%
100 \DeclareOption{x-1}{\global\pdfx@xtrue\def\xmp@Part{1}% obsolete
101 \def\xmp@Conformance{a}\def\xmp@ReleaseDate{1999}% CMYK only
102 \global\pdfx@minorversion=2\relax
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
47
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
103 \pdfx@ErrorWarning{PDF/X-1:1999 is no longer an accepted standard}%
104 {Use option x-1a1 or x-1a3 }{; continuing to build a non-valid document}%
105 {, else continue to build a non-valid document.}%
106 }% effectively same as x-1a1
107 \DeclareOption{x-1a}{\global\pdfx@xtrue\def\xmp@Part{1}% CMYK only
108 \def\xmp@Conformance{a}\def\xmp@ReleaseDate{2003}%
109 \global\pdfx@minorversion=3 }% same as x-1a3
110 \DeclareOption{x-1a1}{\global\pdfx@xtrue\def\xmp@Part{1}%
111 \def\xmp@Conformance{a}\def\xmp@ReleaseDate{2001}% ISO 15930-1:2001
112 \global\pdfx@minorversion=3 }
113 \DeclareOption{x-1a3}{\global\pdfx@xtrue\def\xmp@Part{1}%
114 \def\xmp@Conformance{a}\def\xmp@ReleaseDate{2003}% ISO 15930-4:2003
115 \global\pdfx@minorversion=3 }
116 \DeclareOption{x-2}{\global\pdfx@xtrue\def\xmp@Part{2}% XMP Metadata
117 %% \def\xmp@Conformance{}\def\xmp@ReleaseDate{2002}% ISO 15930-2:2003
118 \def\xmp@Conformance{}\def\xmp@ReleaseDate{2003}% ISO 15930-5, withdrawn 2011
119 \global\pdfx@minorversion=4\relax
120 \pdfx@ErrorWarning{PDF/X-2:2003 was never published as a standard}%
121 {Use option x-1a or x-3 }{; continuing to build a non-valid document}%
122 {, else continue to build a non-valid document}%
123 }% external OPI workflow, i.e. multiple files involved
124 \DeclareOption{x-3}{\global\pdfx@xtrue\def\xmp@Part{3}% RGB allowed, but rare!
125 \def\xmp@Conformance{}\def\xmp@ReleaseDate{2003}%
126 \global\pdfx@minorversion=4 }% same as x-303
127 \DeclareOption{x-302}{\global\pdfx@xtrue\def\xmp@Part{3}%
128 \def\xmp@Conformance{}\def\xmp@ReleaseDate{2002}% ISO 15930-3:2002
129 \global\pdfx@minorversion=3 }
130 \DeclareOption{x-303}{\global\pdfx@xtrue\def\xmp@Part{3}%
131 \def\xmp@Conformance{}\def\xmp@ReleaseDate{2003}% ISO 15930-6:2003
132 \global\pdfx@minorversion=4 }
133 %%% Later versions, yet to be fully implemented
134 \DeclareOption{x-4}{\global\pdfx@xtrue\def\xmp@Part{4}%
135 \def\xmp@Conformance{}\def\xmp@ReleaseDate{2010}% ISO 15930-7:2010
136 \global\pdfx@minorversion=6 }% same as x-410
137 \DeclareOption{x-4p}{\global\pdfx@xtrue\global\no@iccprofiletrue
138 \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2010}%
139 \global\pdfx@minorversion=6 }% same as x-4p10
140 \DeclareOption{x-408}{\global\pdfx@xtrue\def\xmp@Part{4}%
141 \def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}% ISO 15930-7:2008
142 \global\pdfx@minorversion=6 }
143 \DeclareOption{x-410}{\global\pdfx@xtrue\def\xmp@Part{4}%
144 \def\xmp@Conformance{}\def\xmp@ReleaseDate{2010}% ISO 15930-7:2010
145 \global\pdfx@minorversion=6 }
146 \DeclareOption{x-4p08}{\global\pdfx@xtrue\global\no@iccprofiletrue
147 \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2008}%
148 \global\pdfx@minorversion=6 }% ISO 15930-7:2010
149 \DeclareOption{x-4p10}{\global\pdfx@xtrue\global\no@iccprofiletrue
150 \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2010}%
151 \global\pdfx@minorversion=6 }% ISO 15930-7:2010
152 \DeclareOption{x-5}{\global\pdfx@xtrue\def\xmp@Part{5}%
153 \def\xmp@Conformance{g}\def\xmp@ReleaseDate{2008}%
154 \global\pdfx@minorversion=6 }% ISO 15930-8:2010
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
48
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
155 \DeclareOption{x-5g}{\global\pdfx@xtrue\def\xmp@Part{5}%
156 \def\xmp@Conformance{g}\def\xmp@ReleaseDate{2008}%
157 \global\pdfx@minorversion=6 }% ISO 15930-8:2010
158 \DeclareOption{x-5n}{\global\pdfx@xtrue %\global\no@iccprofiletrue
159 \def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2010}%
160 \global\pdfx@minorversion=6 \pdfx@Xvn@message}% ISO 15930-8:2010
161 \DeclareOption{x-5pg}{\global\pdfx@xtrue\global\no@iccprofiletrue
162 \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2010}%
163 \global\pdfx@minorversion=6 }% ISO 15930-8:2010
164 \DeclareOption{x-508}{\global\pdfx@xtrue\def\xmp@Part{5}%
165 \def\xmp@Conformance{g}\def\xmp@ReleaseDate{2008}%
166 \global\pdfx@minorversion=6 }% ISO 15930-8:2008
167 \DeclareOption{x-5g08}{\global\pdfx@xtrue\def\xmp@Part{5}%
168 \def\xmp@Conformance{g}\def\xmp@ReleaseDate{2008}%
169 \global\pdfx@minorversion=6 }% ISO 15930-8:2008
170 \DeclareOption{x-5n08}{\global\pdfx@xtrue %\global\no@iccprofiletrue
171 \def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2008}%
172 \global\pdfx@minorversion=6 \pdfx@Xvn@message}% ISO 15930-8:2008
173 \DeclareOption{x-5pg08}{\global\pdfx@xtrue\global\no@iccprofiletrue
174 \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2008}%
175 \global\pdfx@minorversion=6 }% ISO 15930-8:2008
176 \DeclareOption{x-510}{\global\pdfx@xtrue\def\xmp@Part{5}%
177 \def\xmp@Conformance{g}\def\xmp@ReleaseDate{2010}%
178 \global\pdfx@minorversion=6 }% ISO 15930-8:2010
179 \DeclareOption{x-5g10}{\global\pdfx@xtrue\def\xmp@Part{5}%
180 \def\xmp@Conformance{g}\def\xmp@ReleaseDate{2010}%
181 \global\pdfx@minorversion=6 }% ISO 15930-8:2010
182 \DeclareOption{x-5n10}{\global\pdfx@xtrue %\global\no@iccprofiletrue
183 \def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2010}%
184 \global\pdfx@minorversion=6 \pdfx@Xvn@message}% ISO 15930-8:2010
185 \DeclareOption{x-5pg10}{\global\pdfx@xtrue\global\no@iccprofiletrue
186 \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2010}%
187 \global\pdfx@minorversion=6 }% ISO 15930-8:2010
188 %%
189 %% PDF/E options
190 %%
191 \DeclareOption{e}{\global\pdfx@xfalse\global\pdfx@etrue
192 \def\xmp@Part{1}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}%
193 \gdef\thepdfminorversion{6}% same as e-1
194 }
195 \DeclareOption{e-1}{\global\pdfx@xfalse\global\pdfx@etrue
196 \def\xmp@Part{1}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}%
197 \gdef\thepdfminorversion{6}% ISO 24517-1:2008
198 }
199 %% PDF/UA options
200 %%
201 \let\xmp@PDFUA\@empty
202 \DeclareOption{ua}{\global\pdfx@uatrue % ISO 14289-1:2012, 2014
203 \def\xmp@UAlevel{1}\let\xmp@PDFUA\relax}% same as ua-1
204 \DeclareOption{ua-1}{\global\pdfx@uatrue % ISO 14289-1:2012, 2014
205 \def\xmp@UAlevel{1}\let\xmp@PDFUA\relax}
206 %%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
49
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
207 %% PDF/VT options
208 %%
209 \DeclareOption{vt-1}{\global\pdfx@xtrue\global\pdfx@vttrue
210 \def\xmp@Part{4}\def\xmp@vtPart{1}\def\xmp@Conformance{}%
211 \def\xmp@vtConformance{}\def\xmp@ReleaseDate{2010}%
212 \gdef\xmpMM@VersionID{1}%
213 \global\pdfx@minorversion=6 }
214 \DeclareOption{vt-2}{\global\pdfx@xtrue\global\pdfx@vttrue
215 \global\no@iccprofiletrue \gdef\xmpMM@VersionID{1}%
216 \def\xmp@Part{5}\def\xmp@vtPart{2}\def\xmp@Conformance{pg}%
217 \def\xmp@vtConformance{}\def\xmp@ReleaseDate{2010}%
218 \global\pdfx@minorversion=6 }
219 \DeclareOption{vt-2s}{\global\pdfx@xtrue\global\pdfx@vttrue
220 \global\no@iccprofiletrue \gdef\xmpMM@VersionID{1}%
221 \def\xmp@Part{5}\def\xmp@vtPart{2}\def\xmp@Conformance{pg}%
222 \def\xmp@vtConformance{s}\def\xmp@ReleaseDate{2010}%
223 \global\pdfx@minorversion=6 }
224
225 %% options to alter PDF minor version, in case needed in special circumstances
226 \DeclareOption{pdf12}{\global\pdfx@minorversion=2 }% 1999
227 \DeclareOption{pdf13}{\global\pdfx@minorversion=3 }% 2001 Acrobat 4 (ISBN 0-201-61588-6)
228 \DeclareOption{pdf14}{\global\pdfx@minorversion=4 }% 2003 Acrobat 5 (ISBN 0-201-75839-3)
229 \DeclareOption{pdf15}{\global\pdfx@minorversion=5 }% 2005 Acrobat 6
230 \DeclareOption{pdf16}{\global\pdfx@minorversion=6 }% 2006 Acrobat 7 (ISBN 0-321-30474-8)
231 \DeclareOption{pdf17}{\global\pdfx@minorversion=7 }% 2008 ISO 32000-1:2008
232 \DeclareOption{pdf20}{% 2020 ISO 32000-2:2020
233 \global\pdfx@majorversion=2 \relax
234 \global\pdfx@minorversion=0 }%
235
236 %% inhibits writing the XMP byte-order marker
237 \DeclareOption{noBOM}{\pdfx@noBOMtrue}
238 \DeclareOption{useBOM}{\pdfx@noBOMfalse}
239
240 %% options for language character macros in XMP metadata
241 \newif\ifcyrxmp
242 \newif\ifcyrKOIxmp
243 \newif\ifgrkxmp
244 \newif\ifgrkLGRxmp
245 \newif\ifhebxmp
246 \newif\ifhebHEBxmp
247 \newif\ifarbxmp
248 \newif\ifarmxmp
249 \newif\ifarmSCIxmp
250 \newif\ifdevxmp
251 \newif\ifvnmxmp
252 \newif\iflatEXTxmp
253 \newif\iflatLATxmp
254 \newif\ifipaxmp
255 \newif\ifmathxmp
256
257 \DeclareOption{latxmp}{\global\latEXTxmptrue}
258 \DeclareOption{LATxmp}{\global\latLATxmptrue\global\latEXTxmptrue}
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
50
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
259 \DeclareOption{cyrxmp}{\global\cyrxmptrue}
260 \DeclareOption{KOIxmp}{\global\cyrKOIxmptrue\global\cyrxmptrue}
261 \DeclareOption{grkxmp}{\global\grkxmptrue}
262 \DeclareOption{LGRxmp}{\global\grkLGRxmptrue\global\grkxmptrue}
263 \DeclareOption{hebxmp}{\global\hebxmptrue}
264 \DeclareOption{HEBxmp}{\global\hebHEBxmptrue\global\hebxmptrue}
265 \DeclareOption{arbxmp}{\global\arbxmptrue}
266 \DeclareOption{armxmp}{\global\armxmptrue}
267 \DeclareOption{AR8xmp}{\global\armSCIxmptrue\global\armxmptrue}
268 \DeclareOption{devxmp}{\global\devxmptrue}
269 \DeclareOption{vnmxmp}{\global\vnmxmptrue}
270 \DeclareOption{ipaxmp}{\global\ipaxmptrue\global\latEXTxmptrue}
271 \DeclareOption{mathxmp}{\global\mathxmptrue\global\grkxmptrue}
272
273 %% all the above
274 \DeclareOption{allxmp}{%
275 \global\cyrxmptrue
276 \global\cyrKOIxmptrue
277 \global\grkxmptrue
278 \global\grkLGRxmptrue
279 \global\hebxmptrue
280 \global\hebHEBxmptrue
281 \global\arbxmptrue
282 \global\armxmptrue
283 \global\armSCIxmptrue
284 \global\devxmptrue
285 \global\vnmxmptrue
286 \global\latEXTxmptrue
287 \global\latLATxmptrue
288 \global\vnmxmptrue
289 \global\ipaxmptrue
290 \global\mathxmptrue
291 \global\let\pdfx@useactivespacestrue\pdfx@useactivespacesfalse
292 }
293
294 \newif\ifpdfx@useactivespaces
295
296 \ExecuteOptions{noBOM,a-1b}
297 \ProcessOptions
298
299 \RequirePackage{ifluatex}
300 \ifpdfx@luacheck@needed
301 \ifluatex
302 \RequirePackage{luatex85}
303 \fi
304 \fi
305
306 \ifpdfx@ua\ifpdfx@x\else
307 \expandafter\if\xmp@Conformance A\else
308 \pdfx@ErrorWarning{PDF/UA requires 'Tagged PDF' for any structure.^^J
309 Then PDF/A Conformance must be 'a'}%
310 {Use option 'a-\xmp@Part a'}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
51
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
311 {; continuing with a likely invalid document}%
312 {, or continue for a likely invalid document}%
313 %%% \gdef\xmp@Conformance{A}% do we want this?
314 \fi\fi\fi
315
316 \expandafter\ifx\csname pdflastobj\endcsname\relax
317 \else
318 \ifnum\pdflastobj >\z@ % pdf/luatex has already written objects
319 % e.g. by pgfcore , called from Beamer or other class
320 \ifnum\pdfx@minorversion=\pdfminorversion\else
321 \PackageError{pdfx}%
322 {^^J(pdfx) Cannot change the \string\pdfminorversion^^J%
323 (pdfx) PDF version remains at \the\pdfmajorversion.\the\pdfminorversion.^^J%
324 (pdfx) Use \string\pdfmajorversion=\the\pdfx@majorversion\space^^J%
325 and \string\pdfminorversion=\the\pdfx@minorversion\space
326 before \string\documentclass}%
327 {(pdfx) Another package or document-class has written objects into the PDF.^^J%
328 (pdfx) Hit return to continue with PDF version %
329 \the\pdfmajorversion.\the\pdfminorversion.}%
330 \global\pdfx@majorversion=\the\pdfmajorversion
331 \global\pdfx@minorversion=\the\pdfminorversion
332 \fi
333 \else
334 \global\pdfmajorversion\pdfx@majorversion
335 \global\pdfminorversion\pdfx@minorversion
336 \fi
337 \fi
338
339 \expandafter\ifx\csname thepdfminorversion\endcsname\relax
340 \expandafter\ifx\csname pdfminorversion\endcsname\relax
341 \else
342 \xdef\thepdfmajorversion{\the\pdfmajorversion}
343 \xdef\thepdfminorversion{\the\pdfminorversion}
344 \fi\fi
345
346 \expandafter\ifx\csname pdfminorversion\endcsname\relax
347 \gdef\thepdfminorversion{4}% assumed with XeTeX
348 \def\pdf@minorversion@xetex=#1{\gdef\thepdfminorversion{#1}}%
349 \let\pdfminorversion\pdf@minorversion@xetex
350 \else
351 \ifnum\pdfmajorversion > 1\relax
352 \pdfminorversion=3\relax
353 %% else some JPG graphics with DCT encoding will fail
354 \else
355 \ifnum\pdfminorversion < 4\relax
356 \ifpdfx@x
357 % more testing needed with PDF/X
358 \else
359 \pdfminorversion=4\relax % assumed for PDF/A ; options may change this for PDF/X
360 \gdef\thepdfminorversion{4}%
361 \fi
362 \else
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
52
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
363 \ifnum\pdfminorversion<\thepdfminorversion\relax
364 \global\pdfminorversion=\thepdfminorversion\relax
365 \fi
366 \fi
367 \fi
368 \fi
369 \expandafter\ifx\csname pdfresetpageorigin\endcsname\relax\else
370 \pdfresetpageorigin=0
371 \fi
372
373 \expandafter\ifx\csname pdfomitcharset\endcsname\relax
374 \else
375 \ifpdfx@omitcharset
376 \pdfomitcharset = 1 %
377 %% do not create /Charset listings of font glyphs;
378 %% optional for PDF/A-2,3 and PDF 2.x
379 \else
380 \pdfomitcharset = 0 %
381 %% create the /Charset listings of font glyphs, required with PDF/A-1
382 \fi
383 \fi
384
385 \newif\ifpdfx@nopdfinfo
386 \ifmathxmp\pdfx@nopdfinfotrue
387 \else
388 \iflatLATxmp\pdfx@nopdfinfotrue
389 \else
390 \ifgrkLGRxmp\pdfx@nopdfinfotrue
391 \else
392 \ifhebHEBxmp\pdfx@nopdfinfotrue
393 \else
394 \ifcyrKOIxmp\pdfx@nopdfinfotrue
395 \else
396 \ifarmSCIxmp\pdfx@nopdfinfotrue
397 \fi\fi\fi\fi\fi\fi
398
399 \iflatLATxmp\pdfx@useactivespacestrue\fi
400 \ifgrkLGRxmp\pdfx@useactivespacestrue\fi
401 \ifhebHEBxmp\pdfx@useactivespacestrue\fi
402 \ifcyrKOIxmp\pdfx@useactivespacestrue\fi
403 \ifarmSCIxmp\pdfx@useactivespacestrue\fi
404
405 \newif\ifpdfx@transliterated
406 \ifgrkLGRxmp\pdfx@transliteratedtrue\fi
407 \ifhebHEBxmp\pdfx@transliteratedtrue\fi
408 \ifarmSCIxmp\pdfx@transliteratedtrue\fi
409
410 \RequirePackage{iftex}
411 \RequirePackage{ifpdf}
412 %\expandafter\show\csname ifpdf\endcsname
413 %% Support for pdfTeX primitives when using XeTeX:
414 \RequirePackage{ifxetex}
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
53
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
415 %\expandafter\show\csname ifpdf\endcsname
416 \ifxetex
417 \def\pdfx@pages@xetex#1{\special{pdf:put @pages <<#1>>}}
418 \def\pdfx@pageattr@xetex#1{\special{pdf:put @thispage <<#1>>}}
419 \def\pdfx@docinfo@xetex#1{\special{pdf:put @docinfo <<#1>>}}
420 \def\pdfx@catalog@xetex#1{\special{pdf:put @catalog <<#1>>}}
421 \def\pdfx@mapline@xetex#1{\special{pdf:mapline #1}}%% does this work ??
422 %% \def\pdfx@mapline@xetex#1{}
423 \def\pdf@compress@xetex=#1{}
424 %%
425 \let\pdfpagesattr\pdfx@pages@xetex
426 \let\pdfinfo\pdfx@docinfo@xetex
427 \let\pdfcatalog\pdfx@catalog@xetex
428 \let\pdfmapline\pdfx@mapline@xetex
429 \let\pdfcompresslevel\pdf@compress@xetex
430 \let\pdfobjcompresslevel\pdf@compress@xetex
431 \fi
432
433 %%\newif\ifpdfx@pdfmark % control future support for dvips
434
435 \RequirePackage{everyshi}
436 \RequirePackage{ifluatex}
437 \ifluatex
438 \IfFileExists{luatex85.sty}{% 2016+
439 \RequirePackage{luatex85}%
440 \edef\pdfcreationdate{\pdfcreationdate}%
441 }{% earlier versions
442 }%
443 \RequirePackage{pdftexcmds}%
444 \let\pdfx@mdfivesum\pdf@mdfivesum
445 % \let\pdfescapestring\pdf@escapestring
446 \long\def\pdf@escapestring@byte #1{%
447 \directlua {oberdiek.pdftexcmds.escapestring("\luaescapestring {#1}", "byte")}}%
448 %\let\pdf@escapestring\pdf@escapestring@byte
449 \else
450 \ifxetex
451 \expandafter\ifx\csname mdfivesum\endcsname\relax
452 % too early a version of XeTeX
453 \let\pdfx@mdfivesum\relax
454 \else
455 % since mid-2015
456 \let\pdfx@mdfivesum\mdfivesum
457 \fi
458 \else
459 \let\pdfx@mdfivesum\pdfmdfivesum
460 \fi
461 \fi
462 \def\pdfx@encodingfile{l8u-penc.def}
463
464 \expandafter\ifx\csname pdftexbanner\endcsname\relax
465 \expandafter\ifx\csname luatexbanner\endcsname\relax
466 \else % luatex85
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
54
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
467 \let\pdftexbanner\luatexbanner
468 \fi
469 \else % pdfTeX, but which version ???
470 {\endlinechar=-1
471 \everyeof{\noexpand}%
472 \xdef\pdfx@bannerstring{\expandafter\scantokens\expandafter{\pdftexbanner}}
473 }%
474 \def\pdfx@testbannerstr{%
475 This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/dev)
476 kpathsea version 6.2.0dev}%
477 \ifx\pdfx@bannerstring\pdfx@testbannerstr
478 \typeout{This version of pdfTeX cannot write out upper-range character bytes,
479 128-255.}%
480 \typeout{Any UTF-8 Unicode characters in the Metadata will not be written
481 correctly.}%
482 \typeout{Please update to a more stable version of pdfTeX.^^J}%
483 \fi
484 \fi
485
486 %% How to support XeTeX here ?
487 \ifpdfx@x
488 \pdfobjcompresslevel=0 \relax
489 \expandafter\ifx\csname pdfinterwordspaceoff\endcsname\relax\else
490 \pdfinterwordspaceoff
491 \let\pdfinterwordspaceon\pdfinterwordspaceoff
492 \let\pdfinterwordspace\relax
493 \fi
494 \expandafter\ifx\csname pdfgeninterwordspace\endcsname\relax\else
495 \pdfgeninterwordspace=0 \relax
496 \fi
497 \begingroup
498 \expandafter\ifx\csname stockwidth\endcsname\relax\else
499 \ifdim\stockwidth=\z@ %% 20240528
500 \else
501 %% 20231023 support for memoir's stockwidth/height
502 \let\paperwidth\stockwidth
503 \let\paperheight\stockheight
504 \fi \fi
505 \dimen0=0.996264009963\paperwidth\relax
506 \edef\pdfx@mwidth{\strip@pt\dimen0}%
507 \advance\dimen0 -25\p@
508 \edef\pdfx@twidth{\strip@pt\dimen0}%
509 \dimen0=0.996264009963\paperheight\relax
510 \edef\pdfx@mheight{\strip@pt\dimen0}%
511 \advance\dimen0 -20\p@
512 \edef\pdfx@theight{\strip@pt\dimen0}%
513 \ifxetex
514 \xdef\pdfx@everypage@xetex{%
515 /MediaBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
516 /BleedBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
517 /CropBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
518 /TrimBox[25 20 \pdfx@twidth\space \pdfx@theight]%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
55
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
519 }%
520 \fi
521 \edef\next{\endgroup\pdfpagesattr{%
522 /MediaBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
523 %% /ArtBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
524 /BleedBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
525 /CropBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
526 /TrimBox[25 20 \pdfx@twidth\space \pdfx@theight]}
527 }\next
528 \ifxetex
529 \AtBeginDvi{%
530 \expandafter\immediate\pdfx@pageattr@xetex{\pdfx@everypage@xetex}}%
531 \EveryShipout{%
532 \expandafter\immediate\pdfx@pageattr@xetex{\pdfx@everypage@xetex}}%
533 \else
534 \EveryShipout{%
535 \expandafter\ifx\expandafter\relax\the\pdfpageattr\relax
536 \immediate\pdfpageattr\expandafter{\the\pdfpagesattr}%
537 \fi }%
538 \fi
539 \else
540 %% PDF/A-1b doesn't allow object compression
541 \ifnum\xmp@ReleaseDate=2005\relax
542 \expandafter\ifx\csname pdfobjcompresslevel\endcsname\relax
543 \else
544 \pdfobjcompresslevel=0\relax
545 \fi \fi
546 \fi
547 \ifxetex
548 %% How to support XeTeX here ?
549 \else
550 \ifnum\thepdfminorversion >3 \relax
551 \expandafter\ifx\csname pdfsuppresswarningdupmap\endcsname\relax
552 \expandafter\ifx\csname pdfmapline\endcsname\relax
553 \else
554 \pdfmapline{+dummy-space <dummy-space.pfb}
555 \fi
556 \else
557 \advance\pdfsuppresswarningdupmap 1
558 \pdfmapline{+dummy-space <dummy-space.pfb}
559 \advance\pdfsuppresswarningdupmap -1
560 \fi
561 \expandafter\ifx\csname pdfgeninterwordspace\endcsname\relax\else
562 \pdfgeninterwordspace=1 \relax
563 \fi
564 \fi
565 \fi
566
567 \ifluatex\else\ifxetex\else
568 \@ifpackageloaded{inputenc}{%
569 }{%
570 \RequirePackage{inputenc}
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
56
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
571 % allow this to be loaded again cleanly
572 \expandafter\let\csname [email protected]\endcsname\relax
573 }
574 \fi\fi
575
576 %% pseudo-declare the L8U encoding
577 \expandafter\let\csname L8U-cmd\expandafter\endcsname\csname OT1-cmd\endcsname
578 \@namedef{T@L8U}{}%
579 \@namedef{D@L8U}{}%
580 \@namedef{M@L8U}{}%
581
582 %% adjust to LaTeX's 2018 change to the default encoding
583 \def\pdfx@utfencodingname{utf8}%
584 \def\pdfx@RawInputEncoding{%
585 % \begingroup
586 % \@tempcnta=0
587 % % print out the catcodes of chars < 32
588 % \loop
589 % \typeout{\the\@tempcnta: \expandafter\the\catcode\@tempcnta}%
590 % \advance\@tempcnta\@ne
591 % \ifnum\@tempcnta<32
592 % \repeat
593 % \endgroup
594 \UseRawInputEncoding
595 }
596 \expandafter\ifx\csname inputencodingname\endcsname\relax
597 \else
598 \def\pdfx@restoreencoding#1{%
599 \@tempcnta=1\relax
600 \loop
601 % \catcode\@tempcnta=13\relax
602 \advance\@tempcnta\@ne
603 \ifnum\@tempcnta<8\relax
604 \repeat
605 \catcode11=13 \relax
606 \@tempcnta=14\relax
607 \loop
608 % \catcode\@tempcnta=13\relax
609 \advance\@tempcnta\@ne
610 \ifnum\@tempcnta<31 \relax
611 \repeat
612 \@tempcnta=128\relax
613 \loop
614 % \catcode\@tempcnta=13\relax
615 \advance\@tempcnta\@ne
616 \ifnum\@tempcnta<256
617 \repeat
618 % {\tracingall
619 % \ifx\inputencodingname\pdfx@utfencodingname\else
620 \let\inputencodingname\relax %% kill previous
621 % \fi
622 \inputencoding{#1}%}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
57
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
623 \let\LastDeclaredEncoding\pdfx@LastDeclaredEncoding
624 \let\DeclareFontEncoding@\pdfx@DeclareFontEncoding@
625 \let\DeclareUnicodeCharacter\pdfx@DeclareUnicodeCharacter
626 }%
627 \AtEndOfPackage{\pdfx@restoreencoding\pdfx@inputencodingname}%
628 \let\pdfx@inputencodingname\inputencodingname
629 \global\let\pdfx@DeclareUnicodeCharacter\DeclareUnicodeCharacter
630 \global\let\pdfx@DeclareFontEncoding@\DeclareFontEncoding@
631 % \@tempcnta=0
632 % \loop
633 % \typeout{\the\@tempcnta: \expandafter\the\catcode\@tempcnta}%
634 %% \expandafter\showthe\catcode\@tempcnta
635 % \advance\@tempcnta\@ne
636 % \ifnum\@tempcnta<32
637 % \repeat
638 %\show\UseRawInputEncoding
639 %% if the encoding is utf8 then don't change it here â?? wrong!
640 % \ifx\inputencodingname\pdfx@utfencodingname\else
641 % \expandafter\expandafter
642 \expandafter\pdfx@RawInputEncoding %\fi
643 \fi
644 \InputIfFileExists{\pdfx@encodingfile}{}{}
645 \expandafter\ifx\csname pdfx@inputencodingname\endcsname\relax
646 \else
647 \let\inputencodingname\pdfx@inputencodingname
648 %% \global\let\DeclareUnicodeCharacter\pdfx@DeclareUnicodeCharacter
649 %% \global\let\DeclareFontEncoding@\DeclareFontEncoding@saved
650 \global\let\pdfx@LastDeclaredEncoding\LastDeclaredEncoding
651 \expandafter\inputencoding\expandafter{\inputencodingname}%
652 \fi
653
654 %%----------------------------------------------------------------------
655 %% Macros for reading XMP data with special catcodes. Usage:
656 %%
657 %% \xmp@parse{continuation}{data}
658 %%
659 %% The effect is to read the data with special catcodes: '<', '>', and
660 %% '&' are "active", and '^', '_', '#', '$', '~' are "other". The data
661 %% is then bound to the locally scoped name \@this, and the
662 %% continuation is called.
663 \def\xmp@parse#1{%
664 \begingroup
665 \catcodè\<=13\catcodè\>=13\catcodè\&=13\catcodè\^=12
666 \catcodè\_=12\catcodè\#=12\catcodè\$=12\catcodè\~=12
667 \ifpdfx@useactivespaces\obeyspaces\fi % capture spaces as active characters
668 \xmp@doparse{#1}%
669 }
670 \def\afterxmp@parse{}% methods may change this
671 \def\xmp@doparse#1#2{%
672 \def\@this{#2}#1
673 \endgroup
674 % do any post-processing
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
58
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
675 \afterxmp@parse
676 \def\afterxmp@parse{}%
677 }
678
679 %%----------------------------------------------------------------------
680 %% Local commands. They are only brought into scope during the reading
681 %% of xmpdata. Some fields can have a 'xml:lang' attribute; others must have.
682 %% LANG values as in: (BCP 47) https://tools.ietf.org/html/rfc5646#appendix-A
683 %%
684 \def\xmp@lang@Default{x-default}
685 \let\xmp@lang@Title\xmp@lang@Default
686 \let\xmp@lang@Author\xmp@lang@Default
687 \let\xmp@lang@Keywords\xmp@lang@Default
688 \let\xmp@lang@Subject\xmp@lang@Default
689 %%\def\xmp@lang@CreatorTool{\xmp@lang@Default}
690 \let\xmp@lang@Producer\xmp@lang@Default
691 %%\def\xmp@lang@Volume{\xmp@lang@Default}
692 %%\def\xmp@lang@Issue{\xmp@lang@Default}
693 \let\xmp@lang@Copyright\xmp@lang@Default
694 \let\xmp@lang@PublicationType\xmp@lang@Default
695 \let\xmp@lang@Publisher\xmp@lang@Default
696 \let\xmp@lang@Coverage\xmp@lang@Default
697 \let\xmp@lang@Contributor\xmp@lang@Default
698 \let\xmp@lang@Relation\xmp@lang@Default
699 %%% PRISM fields
700 \let\xmp@lang@CoverDisplayDate\xmp@lang@Default
701 \let\xmp@lang@JournalTitle\xmp@lang@Default
702 %%\def\xmp@lang@JournalNumber{\xmp@lang@Default}
703 %%% xmp: & xmpRights: fields
704 \let\xmp@lang@Advisory\xmp@lang@Default
705 \let\xmp@lang@Identifier\xmp@lang@Default
706 \let\xmp@lang@Nickname\xmp@lang@Default
707 \let\xmp@lang@Owner\xmp@lang@Default
708
709 %% some validators require a language attribute for
710 %% dc:title set via \Title
711 %% dc:description set via \Subject
712 %% dc:rights set via \Copyright
713 %% xmpRights:UsageTerms set via \Copyright
714 %%
715 {\catcode ̀\" 12 \catcodè\: 12 \catcodè\= 12
716 \gdef\pdfx@xmp@checklang#1{%
717 \ifx #1\xmp@lang@Default\else\space xml:lang="#1"\fi}
718 \gdef\pdfx@xmp@strictlang#1{\space xml:lang="#1"}
719 }% end of \catcodes
720 \let\xmp@checklang\pdfx@xmp@checklang
721 \let\xmp@strictlang\pdfx@xmp@strictlang
722
723 \newcommand{\pdfx@Title}[1][]{%
724 \ifx\relax#1\relax\else\gdef\xmp@lang@Title{#1}\fi
725 \xmp@parse{\global\let\xmp@Title\@this}}
726
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
59
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
727 %% allow for multiple authors, keywords and languages
728 %% also: contributor, date, relation, type, thumbnails
729 %% and AuthoritativeDomain, Advisory, Identifier, Owner
730 \newcommand{\pdfx@Author}[1][]{%
731 \ifx\relax#1\relax\else\gdef\xmp@lang@Author{#1}\fi
732 \def\afterxmp@parse{\let\Author\pdfx@extraAuthor}%
733 \xmp@parse{\global\let\xmp@Author\@this}}
734 \newcommand{\pdfx@Keywords}[1][]{%
735 \ifx\relax#1\relax\else\gdef\xmp@lang@Keywords{#1}\fi
736 \def\afterxmp@parse{\let\Keywords\pdfx@extraKeywords}%
737 \xmp@parse{\global\let\xmp@Keywords\@this}}
738 \newcommand{\pdfx@Language}{%
739 \def\afterxmp@parse{\let\Language\pdfx@extraLanguages}%
740 \xmp@parse{\global\let\xmp@Language\@this}}
741
742 \newcommand{\pdfx@AuthoritativeDomain}{%
743 \def\afterxmp@parse{\let\AuthoritativeDomain\pdfx@extraAuthoritativeDomain}%
744 \xmp@parse{\global\let\xmp@AuthoritativeDomain\@this}}
745 \newcommand{\pdfx@Date}{%
746 \def\afterxmp@parse{\let\Date\pdfx@extraDate}%
747 \xmp@parse{\global\let\xmp@Date\@this}}
748 \newcommand{\pdfx@Contributor}[1][]{%
749 \ifx\relax#1\relax\else\gdef\xmp@lang@Contributor{#1}\fi
750 \def\afterxmp@parse{\let\Contributor\pdfx@extraContributor}%
751 \xmp@parse{\global\let\xmp@Contributor\@this}}
752 \newcommand{\pdfx@Relation}[1][]{%
753 \ifx\relax#1\relax\else\gdef\xmp@lang@Relation{#1}\fi
754 \def\afterxmp@parse{\let\Relation\pdfx@extraRelation}%
755 \xmp@parse{\global\let\xmp@Relation\@this}}
756 %%\newcommand{\pdfx@Type}[1][]{%
757 %% \ifx\relax#1\relax\else\gdef\xmp@lang@Type{#1}\fi
758 %% \def\afterxmp@parse{\let\Type\pdfx@extraType}%
759 %% \xmp@parse{\global\let\xmp@Type\@this}}
760
761 \newcommand{\pdfx@Advisory}[1][]{%
762 \ifx\relax#1\relax\else\gdef\xmp@lang@Advisory{#1}\fi
763 \def\afterxmp@parse{\let\Advisory\pdfx@extraAdvisory}%
764 \xmp@parse{\global\let\xmp@Advisory\@this}}
765 \newcommand{\pdfx@Identifier}[1][]{%
766 \ifx\relax#1\relax\else\gdef\xmp@lang@Identifier{#1}\fi
767 \def\afterxmp@parse{\let\Identifier\pdfx@extraIdentifier}%
768 \xmp@parse{\global\let\xmp@Identifier\@this}}
769 \newcommand{\pdfx@Nickname}[1][]{%
770 \ifx\relax#1\relax\else\gdef\xmp@lang@Nickname{#1}\fi
771 % \def\afterxmp@parse{\let\Identifier\pdfx@extraNickname}%
772 \xmp@parse{\global\let\xmp@Nickname\@this}}
773 \newcommand{\pdfx@Thumbnails}{%
774 \def\afterxmp@parse{\let\Thumbnails\pdfx@extraThumbnails}%
775 \xmp@parse{\global\let\xmp@Thumbnails\@this}}
776
777 \newcommand{\pdfx@Owner}[1][]{%
778 \ifx\relax#1\relax\else\gdef\xmp@lang@Owner{#1}\fi
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
60
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
779 \def\afterxmp@parse{\let\Owner\pdfx@extraOwner}%
780 \xmp@parse{\global\let\xmp@Owner\@this}}
781
782 {\obeyspaces%
783 \ifpdfx@useactivespaces\gdef\pdfx@insert@sep{\sep }%
784 \else\gdef\pdfx@insert@sep{\sep}\fi%
785 }
786 \newcommand{\pdfx@extraAuthor}[1][]{%
787 \ifx\relax#1\relax
788 \expandafter\expandafter\expandafter\gdef
789 \expandafter\expandafter\expandafter\xmp@Author
790 \expandafter\expandafter\expandafter{%
791 \expandafter\xmp@Author\pdfx@insert@sep}%
792 \else
793 \expandafter\expandafter\expandafter\gdef
794 \expandafter\expandafter\expandafter\xmp@Author
795 \expandafter\expandafter\expandafter{%
796 \expandafter\xmp@Author\pdfx@insert@sep[#1]}%
797 \fi
798 \def\afterxmp@parse{%
799 \expandafter\expandafter\expandafter\gdef
800 \expandafter\expandafter\expandafter\xmp@Author
801 \expandafter\expandafter\expandafter{%
802 \expandafter\xmp@Author\xmp@extraAuthor}%
803 }%
804 \xmp@parse{\global\let\xmp@extraAuthor\@this}%
805 }%
806 \newcommand{\pdfx@extraKeywords}[1][]{%
807 \ifx\relax#1\relax
808 \expandafter\expandafter\expandafter\gdef
809 \expandafter\expandafter\expandafter\xmp@Keywords
810 \expandafter\expandafter\expandafter{%
811 \expandafter\xmp@Keywords\pdfx@insert@sep}%
812 \else%
813 \expandafter\expandafter\expandafter\gdef
814 \expandafter\expandafter\expandafter\xmp@Keywords
815 \expandafter\expandafter\expandafter{%
816 \expandafter\xmp@Keywords\pdfx@insert@sep[#1]}%
817 \fi%
818 \def\afterxmp@parse{%
819 \expandafter\expandafter\expandafter\gdef
820 \expandafter\expandafter\expandafter\xmp@Keywords
821 \expandafter\expandafter\expandafter{%
822 \expandafter\xmp@Keywords\xmp@extraKeywords}}%
823 \xmp@parse{\global\let\xmp@extraKeywords\@this}%
824 }%
825 \newcommand{\pdfx@extraLanguages}{%
826 \expandafter\expandafter\expandafter\gdef
827 \expandafter\expandafter\expandafter\xmp@Language
828 \expandafter\expandafter\expandafter{%
829 \expandafter\xmp@Language\pdfx@insert@sep}%
830 \def\afterxmp@parse{%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
61
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
831 \expandafter\expandafter\expandafter\gdef
832 \expandafter\expandafter\expandafter\xmp@Language
833 \expandafter\expandafter\expandafter{%
834 \expandafter\xmp@Language\xmp@extraLanguages}}%
835 \xmp@parse{\global\let\xmp@extraLanguages\@this}%
836 }%
837
838 \newcommand{\pdfx@extraContributor}[1][]{%
839 \ifx\relax#1\relax
840 \expandafter\expandafter\expandafter\gdef
841 \expandafter\expandafter\expandafter\xmp@Contributor
842 \expandafter\expandafter\expandafter{%
843 \expandafter\xmp@Contributor\pdfx@insert@sep}%
844 \else
845 \expandafter\expandafter\expandafter\gdef
846 \expandafter\expandafter\expandafter\xmp@Contributor
847 \expandafter\expandafter\expandafter{%
848 \expandafter\xmp@Contributor\pdfx@insert@sep[#1]}%
849 \fi
850 \def\afterxmp@parse{%
851 \expandafter\expandafter\expandafter\gdef
852 \expandafter\expandafter\expandafter\xmp@Contributor
853 \expandafter\expandafter\expandafter{%
854 \expandafter\xmp@Contributor\xmp@extraContributor}%
855 }%
856 \xmp@parse{\global\let\xmp@extraContributor\@this}%
857 }%
858
859 \newcommand{\pdfx@extraAuthoritativeDomain}{%
860 \expandafter\expandafter\expandafter\gdef
861 \expandafter\expandafter\expandafter\xmp@AuthoritativeDomain
862 \expandafter\expandafter\expandafter{%
863 \expandafter\xmp@AuthoritativeDomain\pdfx@insert@sep}%
864 \def\afterxmp@parse{%
865 \expandafter\expandafter\expandafter\gdef
866 \expandafter\expandafter\expandafter\xmp@AuthoritativeDomain
867 \expandafter\expandafter\expandafter{%
868 \expandafter\xmp@AuthoritativeDomain\xmp@extraAuthoritativeDomain}%
869 }%
870 \xmp@parse{\global\let\xmp@extraAuthoritativeDomain\@this}%
871 }%
872
873 \newcommand{\pdfx@extraDate}{%
874 \expandafter\expandafter\expandafter\gdef
875 \expandafter\expandafter\expandafter\xmp@Date
876 \expandafter\expandafter\expandafter{%
877 \expandafter\xmp@Date\pdfx@insert@sep}%
878 \def\afterxmp@parse{%
879 \expandafter\expandafter\expandafter\gdef
880 \expandafter\expandafter\expandafter\xmp@Date
881 \expandafter\expandafter\expandafter{%
882 \expandafter\xmp@Date\xmp@extraDate}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
62
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
883 }%
884 \xmp@parse{\global\let\xmp@extraDate\@this}%
885 }%
886
887 \newcommand{\pdfx@extraRelation}[1][]{%
888 \ifx\relax#1\relax
889 \expandafter\expandafter\expandafter\gdef
890 \expandafter\expandafter\expandafter\xmp@Relation
891 \expandafter\expandafter\expandafter{%
892 \expandafter\xmp@Relation\pdfx@insert@sep}%
893 \else
894 \expandafter\expandafter\expandafter\gdef
895 \expandafter\expandafter\expandafter\xmp@Relation
896 \expandafter\expandafter\expandafter{%
897 \expandafter\xmp@Relation\pdfx@insert@sep[#1]}%
898 \fi
899 \def\afterxmp@parse{%
900 \expandafter\expandafter\expandafter\gdef
901 \expandafter\expandafter\expandafter\xmp@Relation
902 \expandafter\expandafter\expandafter{%
903 \expandafter\xmp@Relation\xmp@extraRelation}%
904 }%
905 \xmp@parse{\global\let\xmp@extraRelation\@this}%
906 }%
907
908 %%\newcommand{\pdfx@extraType}[1][]{%
909 %%% \show\xmp@Type
910 %% \ifx\relax#1\relax
911 %% \expandafter\expandafter\expandafter\gdef
912 %% \expandafter\expandafter\expandafter\xmp@Type
913 %% \expandafter\expandafter\expandafter{%
914 %% \expandafter\xmp@Type\pdfx@insert@sep}%
915 %% \else
916 %% \expandafter\expandafter\expandafter\gdef
917 %% \expandafter\expandafter\expandafter\xmp@Type
918 %% \expandafter\expandafter\expandafter{%
919 %% \expandafter\xmp@Type\pdfx@insert@sep[#1]}%
920 %% \fi
921 %% \def\afterxmp@parse{%
922 %% \expandafter\expandafter\expandafter\gdef
923 %% \expandafter\expandafter\expandafter\xmp@Type
924 %% \expandafter\expandafter\expandafter{%
925 %% \expandafter\xmp@Type\xmp@extraType}%
926 %% %\show\xmp@Type
927 %% }%
928 %% \xmp@parse{\global\let\xmp@extraType\@this}%
929 %% }%
930
931 \newcommand{\pdfx@extraAdvisory}[1][]{%
932 \ifx\relax#1\relax
933 \expandafter\expandafter\expandafter\gdef
934 \expandafter\expandafter\expandafter\xmp@Advisory
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
63
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
935 \expandafter\expandafter\expandafter{%
936 \expandafter\xmp@Advisory\pdfx@insert@sep}%
937 \else
938 \expandafter\expandafter\expandafter\gdef
939 \expandafter\expandafter\expandafter\xmp@Advisory
940 \expandafter\expandafter\expandafter{%
941 \expandafter\xmp@Advisory\pdfx@insert@sep[#1]}%
942 \fi
943 \def\afterxmp@parse{%
944 \expandafter\expandafter\expandafter\gdef
945 \expandafter\expandafter\expandafter\xmp@Advisory
946 \expandafter\expandafter\expandafter{%
947 \expandafter\xmp@Advisory\xmp@extraAdvisory}%
948 }%
949 \xmp@parse{\global\let\xmp@extraAdvisory\@this}%
950 }%
951
952 \newcommand{\pdfx@extraIdentifier}[1][]{%
953 \ifx\relax#1\relax
954 \expandafter\expandafter\expandafter\gdef
955 \expandafter\expandafter\expandafter\xmp@Identifier
956 \expandafter\expandafter\expandafter{%
957 \expandafter\xmp@Identifier\pdfx@insert@sep}%
958 \else
959 \expandafter\expandafter\expandafter\gdef
960 \expandafter\expandafter\expandafter\xmp@Identifier
961 \expandafter\expandafter\expandafter{%
962 \expandafter\xmp@Identifier\pdfx@insert@sep[#1]}%
963 \fi
964 \def\afterxmp@parse{%
965 \expandafter\expandafter\expandafter\gdef
966 \expandafter\expandafter\expandafter\xmp@Identifier
967 \expandafter\expandafter\expandafter{%
968 \expandafter\xmp@Identifier\xmp@extraIdentifier}%
969 }%
970 \xmp@parse{\global\let\xmp@extraIdentifier\@this}%
971 }%
972
973 %% Nickname only supports a single usage, for PDF/X
974 %\newcommand{\pdfx@extraNickname}[1][]{%
975 % \ifx\relax#1\relax
976 % \expandafter\expandafter\expandafter\gdef
977 % \expandafter\expandafter\expandafter\xmp@Nickname
978 % \expandafter\expandafter\expandafter{%
979 % \expandafter\xmp@Nickname\pdfx@insert@sep}%
980 % \else
981 % \expandafter\expandafter\expandafter\gdef
982 % \expandafter\expandafter\expandafter\xmp@Nickname
983 % \expandafter\expandafter\expandafter{%
984 % \expandafter\xmp@Nickname\pdfx@insert@sep[#1]}%
985 % \fi
986 % \def\afterxmp@parse{%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
64
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
987 % \expandafter\expandafter\expandafter\gdef
988 % \expandafter\expandafter\expandafter\xmp@Nickname
989 % \expandafter\expandafter\expandafter{%
990 % \expandafter\xmp@Nickname\xmp@extraNickname}%
991 % }%
992 % \xmp@parse{\global\let\xmp@extraNickname\@this}%
993 % }%
994
995 \newcommand{\pdfx@extraThumbnails}[1][]{%
996 \ifx\relax#1\relax
997 \expandafter\expandafter\expandafter\gdef
998 \expandafter\expandafter\expandafter\xmp@Thumbnails
999 \expandafter\expandafter\expandafter{%
1000 \expandafter\xmp@Thumbnails\pdfx@insert@sep}%
1001 \else
1002 \expandafter\expandafter\expandafter\gdef
1003 \expandafter\expandafter\expandafter\xmp@Thumbnails
1004 \expandafter\expandafter\expandafter{%
1005 \expandafter\xmp@Thumbnails\pdfx@insert@sep[#1]}%
1006 \fi
1007 \def\afterxmp@parse{%
1008 \expandafter\expandafter\expandafter\gdef
1009 \expandafter\expandafter\expandafter\xmp@Thumbnails
1010 \expandafter\expandafter\expandafter{%
1011 \expandafter\xmp@Thumbnails\xmp@extraThumbnails}%
1012 }%
1013 \xmp@parse{\global\let\xmp@extraThumbnails\@this}%
1014 }%
1015
1016 \newcommand{\pdfx@extraOwner}[1][]{%
1017 \ifx\relax#1\relax
1018 \expandafter\expandafter\expandafter\gdef
1019 \expandafter\expandafter\expandafter\xmp@Owner
1020 \expandafter\expandafter\expandafter{%
1021 \expandafter\xmp@Owner\pdfx@insert@sep}%
1022 \else
1023 \expandafter\expandafter\expandafter\gdef
1024 \expandafter\expandafter\expandafter\xmp@Owner
1025 \expandafter\expandafter\expandafter{%
1026 \expandafter\xmp@Owner\pdfx@insert@sep[#1]}%
1027 \fi
1028 \def\afterxmp@parse{%
1029 \expandafter\expandafter\expandafter\gdef
1030 \expandafter\expandafter\expandafter\xmp@Owner
1031 \expandafter\expandafter\expandafter{%
1032 \expandafter\xmp@Owner\xmp@extraOwner}%
1033 }%
1034 \xmp@parse{\global\let\xmp@extraOwner\@this}%
1035 }%
1036
1037 \newcommand{\pdfx@Subject}[1][]{%
1038 \ifx\relax#1\relax\else\gdef\xmp@lang@Subject{#1}\fi
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
65
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1039 \xmp@parse{\global\let\xmp@Subject\@this}}
1040 \newcommand{\pdfx@Producer}[1][]{%
1041 \ifx\relax#1\relax\else\gdef\xmp@lang@Producer{#1}\fi
1042 \xmp@parse{\global\let\xmp@Producer\@this}}
1043 \newcommand{\pdfx@Publisher}[1][]{%
1044 \ifx\relax#1\relax\else\gdef\xmp@lang@Publisher{#1}\fi
1045 \xmp@parse{\global\let\xmp@Publisher\@this}}
1046 \newcommand{\pdfx@Copyright}[1][]{%
1047 \ifx\relax#1\relax\else\gdef\xmp@lang@Copyright{#1}\fi
1048 \xmp@parse{\global\let\xmp@Copyright\@this%
1049 \ifx\xmp@Copyrighted\@empty\gdef\xmp@Copyrighted{True}\fi}}
1050
1051 \newcommand{\pdfx@Coverage}[1][]{%
1052 \ifx\relax#1\relax\else\gdef\xmp@lang@Coverage{#1}\fi
1053 \xmp@parse{\global\let\xmp@Coverage\@this}}
1054
1055 %% PRISM Text fields
1056 \newcommand{\pdfx@CoverDisplayDate}[1][]{%
1057 \ifx\relax#1\relax\else\gdef\xmp@lang@CoverDisplayDate{#1}\fi
1058 \xmp@parse{\global\let\xmp@CoverDisplayDate\@this}}
1059 \newcommand{\pdfx@JournalTitle}[1][]{%
1060 \ifx\relax#1\relax\else\gdef\xmp@lang@JournalTitle{#1}\fi
1061 \ifx\xmp@PublicationType\@empty\gdef\xmp@PublicationType{journal}\fi
1062 \xmp@parse{\global\let\xmp@JournalTitle\@this}}
1063
1064 %% Uses PRISM Controlled Vocabulary:
1065 %% http://prismstandard.org/vocabularies/3.0/aggregationtype.xml
1066 %% blog, book, bookazine, catalog, feed, journal, magazine, manual
1067 %% newsletter, newspaper, other, report, pamphlet, vook, whitepaper
1068 %%
1069 \newcommand{\pdfx@PublicationType}[1][]{%
1070 \ifx\relax#1\relax\else\gdef\xmp@lang@PublicationType{#1}\fi
1071 \xmp@parse{\global\let\xmp@PublicationType\@this}}
1072
1073 \def\pdfx@localcommands{
1074 \let\Title\pdfx@Title
1075 \let\Author\pdfx@Author
1076 \let\Keywords\pdfx@Keywords
1077 \let\Subject\pdfx@Subject
1078 \let\Language\pdfx@Language
1079 \def\CreatorTool{\xmp@parse{\global\let\xmp@CreatorTool\@this}}
1080 \let\Producer\pdfx@Producer
1081 \def\Volume{\xmp@parse{\global\let\xmp@Volume\@this}}
1082 \def\Issue{\xmp@parse{\global\let\xmp@Issue\@this}}
1083 \let\CoverDisplayDate\pdfx@CoverDisplayDate
1084 \def\CoverDate{\xmp@parse{\global\let\xmp@CoverDate\@this}}
1085 \let\Copyright\pdfx@Copyright
1086 \def\CopyrightURL{\xmp@parse{\global\let\xmp@CopyrightURL\@this%
1087 \ifx\xmp@Copyrighted\@empty\gdef\xmp@Copyrighted{True}\fi}}
1088 \def\Copyrighted{\xmp@parse{\global\let\xmp@Copyrighted\@this}}
1089 \def\Doi{\xmp@parse{\global\let\xmp@Doi\@this}}
1090 \def\ISBN{\xmp@parse{\global\let\xmp@ISBN\@this}}
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
66
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1091 \def\URLlink{\xmp@parse{\global\let\xmp@URL\@this}}
1092 \def\Lastpage{\xmp@parse{\global\let\xmp@Lastpage\@this}}
1093 \def\Firstpage{\xmp@parse{\global\let\xmp@Firstpage\@this}}
1094 \let\PublicationType\pdfx@PublicationType
1095 \let\Journaltitle\pdfx@JournalTitle
1096 \def\Journalnumber{\xmp@parse{\global\let\xmp@Journalnumber\@this}}
1097 \let\Publisher\pdfx@Publisher
1098 \let\Coverage\pdfx@Coverage
1099 \def\Source{\xmp@parse{\global\let\xmp@Source\@this}}
1100 \let\Contributor\pdfx@Contributor
1101 \let\Date\pdfx@Date
1102 \let\Relation\pdfx@Relation
1103 \let\Advisory\pdfx@Advisory
1104 \def\BaseURL{\xmp@parse{\global\let\xmp@BaseURL\@this}}
1105 \let\Identifier\pdfx@Identifier
1106 \let\Nickname\pdfx@Nickname
1107 \let\Thumbnails\pdfx@Thumbnails
1108 \let\Owner\pdfx@Owner
1109 \def\CertificateURL{\xmp@parse{\global\let\xmp@CertificateURL\@this}}
1110 \def\MMversionID{\xmp@parse{\global\let\xmpMM@versionID\@this}}
1111 %% \let\Type\pdfx@Type
1112 %%
1113 %% currently unused; for backward compatibility only
1114 \let\AuthoritativeDomain\pdfx@AuthoritativeDomain
1115 \let\Creator\CreatorTool % for backward compatibility
1116 \let\Org\Publisher % for backward compatibility
1117 \let\WebStatement\CopyrightURL % for backward compatibility
1118 }
1119
1120 %%----------------------------------------------------------------------
1121 %% The following characters and markup can be used within the XMP data
1122 %% defined by \Author, \Title, and so on.
1123 %%
1124 %% * All printable non-whitespace ASCII characters except
1125 %% '%', '{', '}', '\' can be used as themselves.
1126 %%
1127 %% * All printable non-whitespace UTF-8 encoded Unicode characters
1128 %% from the basic multilingual plane can be used as themselves.
1129 %%
1130 %% * As usual, consecutive whitespace characters are contracted to a
1131 %% single space. Whitespace after a macro such as \copyright is
1132 %% ignored. Blank lines are not permitted.
1133 %%
1134 %% * The following markup can be used:
1135 %% '\ ' - a literal space (for example after a macro)
1136 %% \% - a literal '%'
1137 %% \{ - a literal '{'
1138 %% \} - a literal '}'
1139 %% \backslash - a literal '\'
1140 %% \copyright - the (c) copyright symbol
1141 %%
1142 %% \sep - only permitted within \Author, \Keywords, \Publisher.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
67
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1143 %%
1144 %% * For backward compatibility, \& and \TextCopyright are also
1145 %% provided. Their use is deprecated.
1146
1147 %%----------------------------------------------------------------------
1148 %% The macro \pdfx@actives binds the active characters
1149 %% '&', '<', and '>' to \pdfx@amp, \pdfx@lt, and \pdfx@gt,
1150 %% respectively, without actually making them active.
1151 \begingroup
1152 \catcodè\<=13
1153 \catcodè\>=13
1154 \catcodè\&=13
1155 \gdef\pdfx@actives{
1156 \def&{\pdfx@amp}
1157 \def<{\pdfx@lt}
1158 \def>{\pdfx@gt}
1159 }
1160 \endgroup
1161
1162 %%----------------------------------------------------------------------
1163 %% Markup bindings to be used during XMP generation.
1164
1165 {%
1166 \catcodè\<=12 \catcodè\>=12 \catcodè\/=12 \catcodè\:=12 \catcodè\"=12
1167 \obeyspaces\ifpdfx@useactivespaces%
1168 \gdef\pdfx@sep {\pdfx@check@lang}%
1169 \else%
1170 \gdef\pdfx@sep{\pdfx@check@lang}%
1171 \fi%
1172 \xdef\pdfx@sep@nolang{</rdf:li>^^J <rdf:li>}%
1173 \xdef\pdfx@sep@lang[#1]{</rdf:li>^^J <rdf:li xml:lang="#1">}%
1174 }% end of \obeyspaces and \catcode ....
1175
1176 \def\pdfx@check@lang#1{%
1177 \ifx[#1\expandafter\@firstoftwo
1178 \else\expandafter\@secondoftwo\fi
1179 {\pdfx@sep@lang#1}{\pdfx@sep@nolang#1}}
1180
1181 \def\pdfx@xmpmarkup{%
1182 \pdfx@actives
1183 \edef\@amp{\expandafter\@gobble\string\&}%
1184 \edef\@hash{\expandafter\@gobble\string\#}%
1185 \edef\ {\expandafter\@gobble\string\ }%
1186 \edef\%{\expandafter\@gobble\string\%}%
1187 \edef\{{\expandafter\@gobble\string\{}%
1188 \edef\}{\expandafter\@gobble\string\}}%
1189 \edef\backslash{\expandafter\@gobble\string\\}%
1190 \def\@unicode##1{\@amp\@hash x##1;}%
1191 \def\pdfx@amp{\@unicode{0026}}%
1192 \def\pdfx@lt{\@unicode{003c}}%
1193 \def\pdfx@gt{\@unicode{003e}}%
1194 \def\copyright{\@unicode{00A9}}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
68
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1195 \let\&\pdfx@amp % for backward compatibility
1196 \let\TextCopyright\copyright % for backward compatibility
1197 \let\sep\pdfx@sep
1198 \pdfx@xmpunimarkup % only need this when writing XMP
1199 \the\pdfxsafeforxmp@toks
1200 }
1201
1202 %% cope with active spaces with LGR encoding
1203 %% and the spaces written out with \IeC in KOI8-r
1204 %% It's possible to have both together.
1205 \def\liixu@IeC#1#{\liixu@IeCi}
1206 \def\liixu@IeCi#1{\liixu@IeCii#1}
1207 \def\liixu@IeCii#1#2{#1}
1208 \def\liixu@enableIeC{\ifpdfx@useactivespaces
1209 \let\IeC\liixu@IeC\else\def\IeC##1{##1}\fi}
1210 \def\liixu@numberline#1#{\liixu@numberlinei}
1211 \def\liixu@numberlinei#1{\liixu@numberlineii#1}
1212 \def\liixu@numberlineii#1{\textLF #1. }
1213 \def\liixu@enablenumberline{\ifpdfx@useactivespaces
1214 \let\numberline\liixu@numberline
1215 \else\def\numberline##1{\textLF ##1. }\fi}
1216
1217 \def\pdfx@xmpunimarkup{%
1218 \liixu@enableIeC
1219 \liixu@enablenumberline
1220 \def\empty{}% used in LICR patterns
1221 \LIIXUscriptcommands
1222 \LIIXUtipacommands
1223 \LIIXUmapTeXnames
1224 %% from Hyperref's psdextra.def
1225 \csname psdmapshortnames\endcsname
1226 \csname psdaliasnames\endcsname
1227 %% from lu8enc.def
1228 \csname LIIXUmapmathletterlikes\endcsname
1229 \csname LIIXUmapmathspaces\endcsname
1230 \iflatLATxmp
1231 \LIIXUmaplatinchars
1232 \LIIXUcancelfontswitches
1233 \fi
1234 \ifmathxmp
1235 \let\(\textinlinemath
1236 \let\[\textdisplaymath
1237 \LIIXUmapmathaccents
1238 \LIIXUmapisomathgreek
1239 \LIIXUmapmatharrowsA
1240 \LIIXUmapmathoperatorsA
1241 \LIIXUmapmathoperatorsB
1242 \LIIXUmapmiscmathsymbolsA
1243 \LIIXUmapsupparrowsA
1244 \LIIXUmapsupparrowsB
1245 \LIIXUmapmiscmathsymbolsB
1246 \LIIXUmapsuppmathoperators
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
69
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1247 \LIIXUmapunimathgreek
1248 \LIIXUmapmathalphabets
1249 \fi
1250 \ifarbxmp \LIIXUmaparabicletters\fi
1251 \ifarmxmp \LIIXUmaparmenianletters\fi
1252 \ifdevxmp\LIIXUmapdevaccents\fi
1253 \ifgrkxmp \LIIXUmapgreekletters\fi
1254 \ifhebxmp \LIIXUmaphebrewletters\fi
1255 }
1256
1257 %% In case macros are used in XMP Metadata, need a way to map these
1258 %% to simple text, rather than specific font characters, or whatever:
1259 \newtoks\pdfxsafeforxmp@toks
1260 \def\pdfxEnableCommands{% user command
1261 \begingroup
1262 \ifpdfx@useactivespaces\obeyspaces\fi
1263 \pdfx@EnableCommands
1264 }
1265 \def\pdfx@EnableCommands#1{% internal command
1266 \expandafter\global\expandafter\pdfxsafeforxmp@toks
1267 \expandafter{\the\pdfxsafeforxmp@toks#1}%
1268 \endgroup
1269 }
1270
1271 %%----------------------------------------------------------------------
1272 %% Markup bindings to be used during PDF string generation.
1273
1274 \def\pdfx@pdfmarkup{%
1275 \pdfx@actives
1276 \edef\%{\expandafter\@gobble\string\%}%
1277 \edef\{{\expandafter\@gobble\string\{}%
1278 \edef\}{\expandafter\@gobble\string\}}%
1279 \edef\pdfx@backslash{\expandafter\@gobble\string\\}%
1280 \def\backslash{\pdfx@backslash000\pdfx@backslash134}%
1281 \edef\pdfx@amp{\expandafter\@gobble\string\&}%
1282 \edef\pdfx@lt{\expandafter\@gobble\string\<}%
1283 \edef\pdfx@gt{\expandafter\@gobble\string\>}%
1284 \let\TextCopyright\copyright % for backward compatibility
1285 \def\sep{; }%
1286 %\let\sep\pdfx@sep
1287 %% Note: '\ ', \&, \copyright are already predefined by hyperref.
1288 %% allow LICRs to expand into PDF strings
1289 \def\cf@encoding{PU}%
1290 \def\9##1{\ifcase##1\string\0\or\string\1\or\string\2\or\string\3\fi}%
1291 \def\8{\string\00}%
1292 \def\0{\string\0}\def\1{\string\1}\def\2{\string\2}\def\3{\string\3}%
1293 \pdfx@xmpunimarkup
1294 \the\pdfxsafeforxmp@toks
1295 }
1296
1297 %%----------------------------------------------------------------------
1298 %% Defaults
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
70
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1299 \ifxetex
1300 \def\xmp@Producer{XeTeX}
1301 \else\ifluatex
1302 \def\xmp@Producer{LuaTeX}
1303 \else
1304 \def\xmp@Producer{pdfTeX}
1305 \fi\fi
1306 \global\let\pdfxProducer\xmp@Producer
1307
1308 \global\let\xmp@CreatorTool\@empty
1309 \global\let\xmp@Title\@empty
1310 \global\let\xmp@Author\@empty
1311 \global\let\xmp@Keywords\@empty
1312 \global\let\xmp@Subject\@empty
1313 \global\let\xmp@Language\@empty
1314 \global\let\xmp@Volume\@empty
1315 \global\let\xmp@Issue\@empty
1316 \global\let\xmp@CoverDisplayDate\@empty
1317 \global\let\xmp@CoverDate\@empty
1318 \global\let\xmp@Copyright\@empty
1319 \global\let\xmp@Copyrighted\@empty
1320 \global\let\xmp@CopyrightURL\@empty
1321 \gdef\xmp@WebStatement{\xmp@CopyrightURL}
1322 \global\let\xmp@Doi\@empty
1323 \global\let\xmp@ISBN\@empty
1324 \global\let\xmp@URL\@empty
1325 \global\let\xmp@Lastpage\@empty
1326 \global\let\xmp@Firstpage\@empty
1327 \global\let\xmp@PublicationType\@empty
1328 \global\let\xmp@Journaltitle\@empty
1329 \global\let\xmp@Journalnumber\@empty
1330 %%\global\let\xmp@Type\@empty
1331 \global\let\xmp@Contributor\@empty
1332 \global\let\xmp@Coverage\@empty
1333 \global\let\xmp@Date\@empty
1334 \global\let\xmp@Relation\@empty
1335 \global\let\xmp@Source\@empty
1336 \global\let\xmp@Publisher\@empty
1337 \gdef\xmp@Org{\xmp@Publisher}
1338 \global\let\xmp@AuthoritativeDomain\@empty
1339 \global\let\xmp@Advisory\@empty
1340 \global\let\xmp@BaseURL\@empty
1341 \global\let\xmp@Identifier\@empty
1342 \global\let\xmp@Nickname\@empty
1343 \global\let\xmp@Thumbnails\@empty
1344 \global\let\xmp@Owner\@empty
1345 \global\let\xmp@CertificateURL\@empty
1346
1347 %%----------------------------------------------------------------------
1348 %% Alternative way to get the CreationDate using Lua for XeTeX
1349 \ifdefined\pdfcreationdate\else
1350 \ifdefined\creationdate %% added to XeTeX in 2019
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
71
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1351 \let\pdfcreationdate\creationdate
1352 \else
1353 \begingroup %% ensure correct catcodes, not done by \dospecials
1354 \catcodè\:=12 \catcodè\.=12
1355 \begin{filecontents*}{creationdate.lua}
1356 os.remove("creationdate.timestamp")
1357 io.output("creationdate.timestamp"):write(os.date("\\edef\\tempa{\\string D:%Y%m%d%H%M%S}\n\\def\\tempb{%z}"))
1358 \end{filecontents*}
1359 \endgroup
1360 \ifnum\shellescape=1
1361 \begingroup %% ensure correct catcodes when file is read in
1362 \catcodè\'=12 \catcodè\.=12 \catcodè\:=12 \catcodè\+=12
1363 \immediate\write18{texlua creationdate.lua}
1364 \input{creationdate.timestamp}
1365 \def\tempc#1#2#3#4#5{#1#2#3'#4#5'}
1366 \edef\tempb{\expandafter\tempc\tempb}
1367 \edef\x{\endgroup\def\noexpand\pdfcreationdate{\tempa\tempb}}\x
1368 \else
1369 \begingroup %% ensure correct catcodes in the error/warning messages
1370 \catcodè\<=12 \catcodè\>=12 \catcodè\"=12 \catcodè\-=12
1371 \catcodè\: 12 \catcodè\' 12 \catcodè\= 12
1372 \ifpdfx@noerr
1373 \PackageWarning{pdfx}{%
1374 CreationDate is not properly supported;^^J
1375 PDF validation may fail. To avoid this problem use:^^J
1376 xelatex -shell-escape -output-driver="xdvipdfmx -z 0" <filename>^^J}
1377 \else
1378 \PackageError{pdfx}{%
1379 CreationDate is not properly supported;^^J
1380 PDF validation may fail.}{To avoid this problem use:^^J
1381 xelatex -shell-escape -output-driver="xdvipdfmx -z 0" <filename> }
1382 \fi
1383 %% Using a constant date, to allow processing to finish smoothly.
1384 \edef\x{\endgroup
1385 \def\noexpand\pdfcreationdate{\string D:20181028075445+10'00'}}%
1386 \x
1387 \fi
1388 \fi \fi
1389
1390 %%----------------------------------------------------------------------
1391 \def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfx@mdfivesum{#1}}
1392 \expandafter\pdfx@eightofnine\pdfx@tmpstring\end}
1393 \def\pdfx@eightofnine#1#2#3#4#5#6#7#8#9\end{%
1394 \xdef\pdfx@eightchars{#1#2#3#4#5#6#7#8}
1395 \pdfx@fouroffive#9\end}
1396 \def\pdfx@fouroffive#1#2#3#4#5\end{\xdef\pdfx@ffourchars{#1#2#3#4}
1397 \pdfx@sfouroffive#5\end}
1398 \def\pdfx@sfouroffive#1#2#3#4#5\end{\xdef\pdfx@sfourchars{#1#2#3#4}
1399 \pdfx@tfouroffive#5\end}
1400 \def\pdfx@tfouroffive#1#2#3#4#5\end{\xdef\pdfx@tfourchars{#1#2#3#4}
1401 \xdef\pdfx@laststring{#5}}
1402
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
72
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1403 \def\pdfx@uuid{\pdfx@eightchars-%
1404 \pdfx@ffourchars-%
1405 \pdfx@sfourchars-%
1406 \pdfx@tfourchars-%
1407 \pdfx@laststring}
1408
1409 \expandafter\ifx\csname pdfx@mdfivesum\endcsname\relax
1410 \PackageError{pdfx}{%
1411 No implementation for \string\pdfx@mdfivesum.^^J
1412 \ifxetex XeTeX needs to be 2015 or later\fi
1413 }{%
1414 Continue without, but the PDF will not validate.
1415 }%
1416 \def\xmp@docid{}%
1417 \def\pdfx@findUUID#1{}%
1418 \def\pdfx@uuid{}%
1419 \else
1420 \pdfx@findUUID{\jobname.pdf}
1421 \edef\xmp@docid{\pdfx@uuid}
1422 \fi
1423
1424 \expandafter\ifx\csname pdfcreationdate\endcsname\relax\relax
1425 \PackageWarning{pdfx}{%
1426 No implementation for \string\pdfxcreation .
1427 }%
1428 \def\xmp@instid{}%
1429 %%
1430 \else %% use the MD5 sum methods
1431 %%
1432 \pdfx@findUUID{\pdfcreationdate}%
1433 \edef\xmp@instid{\pdfx@uuid}
1434 \fi
1435
1436 %%----------------------------------------------------------------------
1437 %% load xcolor before hyperref to get the link colors correct
1438 %%
1439 \PassOptionsToPackage{nosetpagesize}{color}
1440 \PassOptionsToPackage{nosetpagesize}{graphics}
1441 \@ifpackageloaded{xcolor}{%
1442 % Beamer will have already loaded xcolor
1443 % need to understand what options it used
1444 }{
1445 \ifpdfx@x
1446 \RequirePackage[cmyk,hyperref]{xcolor}
1447 \else
1448 \RequirePackage[rgb,hyperref]{xcolor}
1449 \fi
1450 }%
1451
1452 %% loading puenc.def will kill a lot of what mathtext.sty established
1453 \@ifpackageloaded{mathtext}{%
1454 \PackageWarningNoLine{pdfx}{pdfx.sty and hyperref.sty should be loaded^^J
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
73
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1455 before mathtext.sty , otherwise text symbols may not show in math mode.}%
1456 }{}
1457
1458 \newif\ifpdfx@hluatex
1459 \IfFileExists{hluatex.def}{\pdfx@hluatextrue}{\pdfx@hluatexfalse}
1460
1461 %% the "pdftex" option seems to work fine with LuaTeX
1462 \def\pdfx@luatest{\ifpdfx@hluatex luatex\else pdftex \fi}
1463
1464 %% Hyperref options for PDF/X
1465 \edef\pdfx@pdfX@opts@pdftex{%
1466 draft,pdftex,pdfpagemode=UseNone,bookmarks=false,%
1467 pdfversion=1.\thepdfminorversion,pdfstartview=}
1468 \edef\pdfx@pdfX@opts@xetex{%
1469 draft,xetex,pdfpagemode=UseNone,bookmarks=false,%
1470 pdfversion=1.\thepdfminorversion,pdfstartview=}
1471 \edef\pdfx@pdfX@opts@luatex{%
1472 draft,\pdfx@luatest,pdfpagemode=UseNone,bookmarks=false,%
1473 pdfversion=1.\thepdfminorversion,pdfstartview=}%
1474
1475 \newif\ifpdfx@hyperrefloaded
1476 \expandafter\ifx\csname ifHy@pdfa\endcsname\relax\else\pdfx@hyperrefloadedtrue\fi
1477
1478 %% Hyperref options for PDF/A and PDF/E
1479 \newtoks\pdfx@tmptoks
1480 \pdfx@tmptoks{%
1481 \ifHy@pdfa
1482 \edef\pdfx@pdfAE@opts@pdftex{pdftex}%
1483 \edef\pdfx@pdfAE@opts@xetex{xetex,pdfversion=1.\thepdfminorversion}%
1484 \edef\pdfx@pdfAE@opts@luatex{\pdfx@luatest,pdfversion=1.\thepdfminorversion}%
1485 \edef\pdfx@pdfAE@opts@pdfmark{pdfmark,pdfversion=1.\thepdfminorversion}%
1486 \else
1487 \edef\pdfx@pdfAE@opts@pdftex{pdftex,pdfa}%
1488 \edef\pdfx@pdfAE@opts@xetex{xetex,pdfa,pdfversion=1.\thepdfminorversion}%
1489 \edef\pdfx@pdfAE@opts@luatex{\pdfx@luatest,pdfa,pdfversion=1.\thepdfminorversion}%
1490 \edef\pdfx@pdfAE@opts@pdfmark{pdfmark,pdfa,pdfversion=1.\thepdfminorversion}%
1491 \fi
1492 }
1493 \ifpdfx@hyperrefloaded
1494 \the\pdfx@tmptoks\relax
1495 \else
1496 \edef\pdfx@pdfAE@opts@pdftex{pdftex,pdfa}%
1497 \edef\pdfx@pdfAE@opts@xetex{xetex,pdfa,pdfversion=1.\thepdfminorversion}%
1498 \edef\pdfx@pdfAE@opts@luatex{\pdfx@luatest,pdfa,pdfversion=1.\thepdfminorversion}%
1499 \edef\pdfx@pdfAE@opts@pdfmark{pdfmark,pdfa,pdfversion=1.\thepdfminorversion}%
1500 \fi
1501 \pdfx@tmptoks{}%
1502
1503 \ifpdfx@x
1504 \@ifpackageloaded{hyperref}{%
1505 \ifxetex
1506 \expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@xetex}
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
74
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1507 \else\ifluatex
1508 \expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@luatex}
1509 \else
1510 \expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@pdftex}
1511 \fi\fi
1512 }{%
1513 \ifxetex
1514 \expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@xetex]{hyperref}
1515 \else\ifluatex
1516 \expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@luatex]{hyperref}
1517 \else
1518 \expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@pdftex]{hyperref}
1519 \fi\fi
1520 }%
1521 \else
1522 \ifpdfx@e
1523 \@ifpackageloaded{hyperref}{%
1524 \ifxetex
1525 \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@xetex}
1526 \else\ifluatex
1527 \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@luatex}
1528 \else
1529 \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@pdftex}
1530 \fi\fi
1531 }{%
1532 \ifxetex
1533 \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@xetex]{hyperref}
1534 \else\ifluatex
1535 \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@luatex]{hyperref}
1536 \else
1537 \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@pdftex]{hyperref}
1538 \fi\fi
1539 }%
1540 \else % generating PDF/A or ...
1541 \@ifpackageloaded{hyperref}{%
1542 \ifxetex
1543 \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@xetex}%
1544 \else\ifluatex
1545 \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@luatex}%
1546 \else
1547 \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@pdftex}%
1548 \fi\fi
1549 }{%
1550 \ifxetex
1551 \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@xetex]{hyperref}
1552 \else\ifluatex
1553 \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@luatex]{hyperref}
1554 \else
1555 \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@pdftex]{hyperref}
1556 \fi\fi
1557 }%
1558 \fi\fi
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
75
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1559 %\hypersetup{pdfencoding=auto}% 2019-12-08 No; this writes 8-bit bookmarks.
1560 \expandafter\ifx\csname KV@Hyp@psdextra\endcsname\relax\else
1561 \hypersetup{psdextra}
1562 \fi
1563
1564 %% hyperref doesn't set the minor version for XeTeX
1565 \ifxetex
1566 \special{pdf:minorversion \thepdfminorversion}
1567 \fi
1568
1569 \ifx\xmp@CreatorTool\@empty
1570 \edef\xmp@CreatorTool{\@pdfcreator}
1571 \fi
1572
1573 \newif\ifpdfx@cmyk
1574 \newif\ifpdfx@custom
1575 \ifpdfx@x % PDF/X normally needs a CMYK color profile for printing
1576 \global\pdfx@cmyktrue
1577 \fi
1578 %%----------------------------------------------------------------------
1579 %% ----- Color Profiles -------
1580 %% Define how to specify the profile, so the default
1581 %% can be over-ridden in the .xmpdata file.
1582 %%
1583 %% --- user-command --- RGB profile needed with PDF/A-??
1584 %% \setRGBcolorprofile{<filename>}{<identifier>}
1585 %% {<info string>}{<registry URL>}
1586 \def\setRGBcolorprofile{%
1587 \begingroup
1588 \catcodè\_ 11\relax\catcodè\& 11\relax\catcodè\~ 11\relax
1589 \catcodè\% 11\relax
1590 \edef\({\string\(}\edef\){\string\)}%
1591 \pdfx@setrgbprofile}
1592 %%
1593 %% --- user-command --- CMYK profile needed with PDF/X-??
1594 %% \setCMYKcolorprofile{<filename>}{<output intent>}
1595 %% {<identifier>}{<registry URL>}
1596 \def\setCMYKcolorprofile{%
1597 \begingroup
1598 \catcodè\_ 11\relax\catcodè\& 11\relax\catcodè\~ 11\relax
1599 \catcodè\% 11\relax
1600 \edef\({\string\(}\edef\){\string\)}%
1601 \pdfx@setcmykprofile}
1602 %%
1603 %% --- user-command --- DeviceGray profile needed with PDF/E-1
1604 %% \setGRAYcolorprofile{<filename>}{<output intent>}
1605 %% {<identifier>}{<registry URL>}
1606 \def\setGRAYcolorprofile{%
1607 \begingroup
1608 \catcodè\_ 11\relax\catcodè\& 11\relax\catcodè\~ 11\relax
1609 \catcodè\% 11\relax
1610 \edef\({\string\(}\edef\){\string\)}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
76
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1611 \pdfx@setgrayprofile}
1612 %%
1613 %% --- user-command --- External profile with PDF/X-4p and PDF/X-5pg
1614 %% \setEXTERNALprofile{<profilename>}{<output intent>}
1615 %% {<identifier>}{<registry URL>}{<color-space>}%
1616 %% {<ICC Version>}{<provider URL>}{<extra info>}{<Check Sum>}
1617 \def\setEXTERNALprofile{%
1618 \begingroup
1619 \catcodè\_ 11\relax\catcodè\& 11\relax\catcodè\~ 11\relax
1620 \catcodè\% 11\relax
1621 \edef\({\string\(}\edef\){\string\)}%
1622 \ifno@iccprofile
1623 \expandafter\pdfx@externalprofile
1624 \else
1625 \expandafter\pdfx@externalprofile@gobble
1626 \fi
1627 }
1628 %%
1629 %%
1630 \def\pdfx@setRGBcolorprofiledir#1{%
1631 \xdef\pdfx@RGBcolorprofiledir{#1}%
1632 }
1633 \def\pdfx@setCMYKcolorprofiledir#1{%
1634 \xdef\pdfx@CMYKcolorprofiledir{#1}%
1635 }
1636 \pdfx@setRGBcolorprofiledir{}
1637 \pdfx@setCMYKcolorprofiledir{}
1638
1639 %% This does indeed work! Use it in .xmpdata files
1640 \providecommand{\MacOSColordir}{/System/Library/ColorSync/Profiles/}
1641 \providecommand{\MacOSLibraryColordir}{/Library/ColorSync/Profiles/}
1642 \providecommand{\AdobeMacOSdir}%
1643 {/Library/Application Support/Adobe/Color/Profiles/Recommended/}
1644 \edef\pdfx@tmp{C:\string\Windows\string\System32\string\Spool%
1645 \string\Drivers\string\Color\string/}
1646 \expandafter\providecommand\expandafter
1647 {\expandafter\WindowsColordir\expandafter}\expandafter{\pdfx@tmp}
1648 %%\pdfx@setcolorprofiledir{\AdobeMacOSdir}
1649
1650 %% overide that value using the following commands:
1651 \let\pdfxSetCMYKcolorProfileDir\pdfx@setCMYKcolorprofiledir
1652 \let\pdfxSetRGBcolorProfileDir\pdfx@setRGBcolorprofiledir
1653 %% for back-compatibility
1654 \let\pdfxSetColorProfileDir\pdfxSetCMYKcolorProfileDir
1655 %%
1656 \def\pdfx@setrgbprofile#1#2#3#4{%
1657 \xdef\pdfx@rgb@profile{\pdfx@RGBcolorprofiledir#1}% valid file path/name
1658 \xdef\pdfx@rgb@profilename{#1}% valid file name
1659 \gdef\pdfx@rgb@identifier{#2}%
1660 \gdef\pdfx@rgb@info{#3}%
1661 \pdfstringdef\pdfx@rgb@registry{#4}% valid URL
1662 \endgroup
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
77
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1663 \global\pdfx@cmykfalse
1664 }% closes-off \setRGBcolorprofile
1665 %%
1666 \def\pdfx@setcmykprofile#1#2#3#4{%
1667 \xdef\pdfx@cmyk@profile{\pdfx@CMYKcolorprofiledir#1}% valid file path/name
1668 \xdef\pdfx@cmyk@profilename{#1}% valid file name
1669 %% \expandafter\gdef\expandafter\pdfx@cmyk@profile\expandafter
1670 %% {\pdfx@colorprofiledir#1}% valid file name
1671 \gdef\pdfx@cmyk@intent{#2}%
1672 %% \pdfstringdef\pdfx@cmyk@intent{#2}% color intent
1673 \gdef\pdfx@cmyk@identifier{#3}%
1674 %% \pdfstringdef\pdfx@cmyk@identifier{#3}% text string identifier
1675 \gdef\pdfx@cmyk@registry{#4}%
1676 %% \pdfstringdef\pdfx@cmyk@registry{#4}% valid URL
1677 \endgroup
1678 \global\pdfx@cmyktrue
1679 }% closes-off \setcmykcolorprofile
1680 %%
1681 \def\setCUSTOMcolorprofile{%
1682 \begingroup
1683 \catcodè\_ 11\relax\catcodè\& 11\relax\catcodè\~ 11\relax
1684 \catcodè\% 11\relax
1685 \edef\({\string\(}\edef\){\string\)}%
1686 \pdfx@setcustomprofile
1687 }
1688 \def\pdfx@setcustomprofile#1#2#3#4#5#6#7#8{%
1689 \xdef\pdfx@customcolorprofiledir{#2}% valid directory location
1690 \xdef\pdfx@custom@profile{#1}% valid file name
1691 \gdef\pdfx@custom@identifier{#3}%
1692 \gdef\pdfx@custom@registry{#4}%
1693 \gdef\pdfx@custom@numcolors{#5}% num-colors specifier
1694 \gdef\pdfx@iccversion{#6}% Hex string for /ICCVersion < ... >
1695 \gdef\pdfx@custom@colornames{#7}%
1696 \gdef\pdfx@profile@checksum{#8}% Hex string for /CheckSum < ... >
1697 \endgroup
1698 \global\pdfx@cmykfalse
1699 \global\pdfx@customtrue
1700 }% closes-off \pdfx@setcustomprofile
1701 %%
1702 \def\pdfx@setgrayprofile#1#2#3#4{%
1703 \gdef\pdfx@gray@profile{#1}% valid file name
1704 \gdef\pdfx@gray@intent{#2}%
1705 \gdef\pdfx@gray@identifier{#3}%
1706 \pdfstringdef\pdfx@gray@registry{#4}% valid URL
1707 \endgroup}% closes-off \setGRAYcolorprofile
1708 %%
1709 \def\pdfx@externalprofile#1#2#3#4#5#6#7#8#9{%
1710 \gdef\pdfx@extprofile{#1}% PDF string for /ProfileName
1711 \gdef\pdfx@cmyk@intent{#2}% PDF string for /OutputCondition
1712 \gdef\pdfx@cmyk@identifier{#3}% PDF string for /OutputConditionIdentifier
1713 \gdef\pdfx@cmyk@registry{#4}% {http://www.color.org}%
1714 \gdef\pdfx@profileCS{#5}% 4 bytes for /ProfileCS
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
78
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1715 \gdef\pdfx@iccversion{#6}% Hex string for /ICCVersion < ... >
1716 \gdef\pdfx@colorURL{#7}% URL
1717 \gdef\pdfx@cmyk@info{#8}% for /Info
1718 \gdef\pdfx@profile@checksum{#9}% Hex string for /CheckSum < ... >
1719 \endgroup}% closes-off \setEXTERNALprofile
1720 \def\pdfx@externalprofile@gobble#1#2#3#4#5#6#7#8#9{%
1721 \PackageError{pdfx}{Wrong option for using an External Color profile}%
1722 {Use one of the options: x-4p , x-4p08 , x-4p10 or x-5pg .}%
1723 \endgroup}
1724 %%
1725 %% default color profiles
1726
1727 {\catcodè\_ 12 \catcodè\& 12 \catcodè\~ 12
1728 \gdef\pdfx@xprofile@cmykdefault{coated_FOGRA39L_argl.icc}
1729 \gdef\pdfx@aprofile@rgbdefault{sRGB_IEC61966-2-1_black_scaled.icc}
1730 \gdef\pdfx@eprofile@graydefault{Gray_linear.icc}
1731 \gdef\pdfx@pprofile@externaldefault{FOGRA39}
1732 }% end of \catcode
1733 \xdef\pdfx@rgb@profile{\pdfx@aprofile@rgbdefault}
1734 \xdef\pdfx@cmyk@profile{\pdfx@xprofile@cmykdefault}
1735 \xdef\pdfx@gray@profile{\pdfx@eprofile@graydefault}
1736 \xdef\pdfx@external@profile{\pdfx@pprofile@externaldefault}
1737
1738 %%----------------------------------------------------------------------
1739 %% License for the file sRGB_IEC61966-2-1_black_scaled.icc :
1740 %%
1741 %% Copyright International Color Consortium, 2009 -- http://www.color.org/
1742 %%
1743 %% It is hereby acknowledged that the file "sRGB_IEC61966-2-1_black_scaled.icc"
1744 %% is provided "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTY.
1745 %%
1746 %% Licensing
1747 %%
1748 %% This profile is made available by the International Color Consortium,
1749 %% and may be copied, distributed, embedded, made, used, and sold without
1750 %% restriction. Altered versions of this profile shall have the original
1751 %% identification and copyright information removed and shall not be
1752 %% misrepresented as the original profile.
1753 %%
1754 %% Terms of use
1755 %%
1756 %% To anyone who acknowledges that the file "sRGB_IEC61966-2-1_black_scaled.icc"
1757 %% is provided "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTY, permission to use,
1758 %% copy and distribute these file for any purpose is hereby granted without fee,
1759 %% provided that the file is not changed including the ICC copyright notice tag,
1760 %% and that the name of ICC shall not be used in advertising or publicity
1761 %% pertaining to distribution of the software without specific, written prior
1762 %% permission. ICC makes no representations about the suitability of this
1763 %% software for any purpose.
1764 %%
1765 %%----------------------------------------------------------------------
1766
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
79
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1767 \newif\ifpdfx@tryoldprofiles
1768
1769 %% The colorprofiles package was added to TeXLive in October 2018.
1770 %% It allows the default Color Profiles to be maintained independent
1771 %% of the pdfx package.
1772 %% In particular sRGB_IEC61966-2-1_black_scaled.icc is no longer
1773 %% distributed with TeXLive 2018 and later.
1774 %% Older versions still have this file.
1775 %%
1776 \IfFileExists{colorprofiles.tex}{%
1777 \RequirePackage{colorprofiles}[2018/11/01]%
1778 \ifx\colorpro@rgb@profile\relax
1779 \expandafter\pdfx@tryoldprofilestrue
1780 \else
1781 \begingroup %% \endgroup occurs within the macro expansion
1782 \pdfx@setrgbprofile{\colorpro@rgb@profile
1783 }{\colorpro@rgb@identifier
1784 }{\colorpro@rgb@info
1785 }{\colorpro@rgb@registry
1786 }%
1787 \begingroup %% \endgroup occurs within the macro expansion
1788 \pdfx@setcmykprofile{\colorpro@cmyk@profile
1789 }{\colorpro@cmyk@intent
1790 }{\colorpro@cmyk@identifier
1791 }{\colorpro@cmyk@registry
1792 }%
1793 \expandafter\pdfx@tryoldprofilesfalse
1794 \fi
1795 }{%
1796 \PackageWarning{pdfx}{%
1797 The 'colorprofiles' package is not installed correctly.^^J
1798 File 'colorprofiles.tex' is missing. Proceeding without it.
1799 }%
1800 \pdfx@tryoldprofilestrue
1801 }
1802
1803 {\catcodè\| 14 \catcodè\% 12 \catcodè\_ 12 \catcodè\: 12
1804 \catcodè\. 12 \catcodè\- 12 \catcodè\/ 12
1805 \edef\@bchar{\expandafter\@gobble\string\\}|
1806 \edef\({\string\(}\edef\){\string\)}|
1807 \ifpdfx@tryoldprofiles
1808 || this will be used by TeXLive installations up to 2017.
1809 \begingroup | \endgroup occurs within the macro expansion
1810 \expandafter\pdfx@setrgbprofile\expandafter
1811 {sRGB_IEC61966-2-1_black_scaled.icc}|
1812 {sRGB_IEC61966-2-1_black_scaled}|
1813 {sRGB IEC61966 v2.1 with black scaling}|
1814 {http://www.color.org}|
1815 \begingroup | \endgroup occurs within the macro expansion
1816 \pdfx@setcmykprofile{coated_FOGRA39L_argl.icc}| coated_FOGRA39L_argl.icc
1817 {Coated FOGRA39}|
1818 {FOGRA39 \string\(ISO Coated v2 300%\space \string\(ECI\string\)\string\)}|
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
80
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1819 {http://www.argyllcms.com/}|{http://www.color.org}|
1820 \fi || end of \ifpdfx@tryoldprofiles
1821 \begingroup | \endgroup occurs within the macro expansion
1822 \pdfx@setgrayprofile{Gray_linear.icc}|
1823 {}|
1824 {Custom}|
1825 {http://www.freedesktop.org/wiki/OpenIcc}|
1826 \ifno@iccprofile
1827 \begingroup | \endgroup occurs within the macro expansion
1828 \pdfx@externalprofile{Coated FOGRA39 \(ISO 12647-2:2004\)}|
1829 {Offset commercial and specialty printing according to ISO 12647-2:2004 |
1830 / Amd 1, paper type 1 or 2 \(gloss or matte coated offset, 115 g/m2\), |
1831 screen frequency 60/cm.}|
1832 {FOGRA39}{http://www.color.org}{CMYK}{02100000}{http://www.adobe.com}|
1833 {Coated FOGRA39 \(ISO 12647-2:2004\)}{74FF62F330BF0DBE4495B5720542D511}|
1834 \fi
1835 }% end of \catcode
1836
1837 %%
1838 %%----------------------------------------------------------------------
1839 %% License for the file coated_FOGRA39L_argl.icc :
1840 %%
1841 %% The zlib/libpng License
1842 %%
1843 %% Copyright (c) 2008 Kai-Uwe Behrmann
1844 %%
1845 %% This software is provided 'as-is', without any express or implied
1846 %% warranty. In no event will the authors be held liable for any damages
1847 %% arising from the use of this software.
1848 %%
1849 %% Permission is granted to anyone to use this software for any purpose,
1850 %% including commercial applications, and to alter it and redistribute
1851 %% it freely, subject to the following restrictions:
1852 %%
1853 %% 1. The origin of this software must not be misrepresented; you
1854 %% must not claim that you wrote the original software. If you use
1855 %% this software in a product, an acknowledgment in the product
1856 %% documentation would be appreciated but is not required.
1857 %%
1858 %% 2. Altered source versions must be plainly marked as such, and
1859 %% must not be misrepresented as being the original software.
1860 %%
1861 %% 3. This notice may not be removed or altered from any source
1862 %% distribution.
1863 %%----------------------------------------------------------------------
1864
1865 \newif\ifexternalICCprofiles
1866 \newif\ifpdfx@noXMPdata
1867
1868 \begingroup
1869 %% override unneeded color-profile specifier
1870 \ifpdfx@x
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
81
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1871 \ifno@iccprofile % PDF/X-4p and PDF/X-5pg PDF/VT-2
1872 \begingroup
1873 \def\pdfx@extprofiles@store{AdobeExternalProfiles.tex}%
1874 \InputIfFileExists{\pdfx@extprofiles@store}%
1875 {\global\externalICCprofilestrue \catcode ̀\# 12\relax}%
1876 {\typeout{** pdfx: No file \pdfx@extprofiles@store\space
1877 found for PDF/X-4p or PDF/X-5pg}}%
1878 \endgroup
1879 \else
1880 \begingroup
1881 \def\pdfx@profiles@store{AdobeColorProfiles.tex}%
1882 \InputIfFileExists{\pdfx@profiles@store}%
1883 {\global\externalICCprofilesfalse \catcode ̀\# 12\relax}%
1884 {\typeout{** pdfx: No file \pdfx@profiles@store\space
1885 found for PDF/X variants}}%
1886 \endgroup
1887 %% \def\setRGBcolorprofile#1#2#3#4{%
1888 %% \PackageError{pdfx}{PDF/X requires a CMYK color profile}%
1889 %% {Just continue using the default CMYK profile.^^J}}%
1890 \fi
1891 \else
1892 %% load it, in case the macros are used in .xmpdata
1893 \InputIfFileExists{AdobeColorProfiles.tex}{}{}%
1894 \ifpdfx@e
1895 \else
1896 \def\setCMYKcolorprofile#1#2#3#4{}%
1897 \def\setGRAYcolorprofile#1#2#3#4{}%
1898 \fi\fi
1899 %%
1900 \ifluatex\else\ifxetex\else
1901 \inputencoding{8bit}%
1902 \fi\fi
1903 \makeatletter
1904 \pdfx@localcommands
1905 %% Do this in a box, so any stray characters don't get into TeX's lists.
1906 \setbox0\hbox{%
1907 \InputIfFileExists{\jobname.xmpdata}%
1908 {\typeout{** pdfx: Metadata file \jobname.xmpdata read successfully.}}%
1909 {\typeout{** pdfx: No file \jobname.xmpdata .
1910 Metadata will be incomplete!}\aftergroup\pdfx@noXMPdatatrue}}
1911 \endgroup
1912 %% ----------------------------------------------------------------------
1913
1914 \def\pdfx@LanguageSpec{}
1915 \def\pdfx@mainLanguage{en-US}% absolute default
1916 \def\pdfx@checkfor@sep#1#2\sep#3\pdfx@endparse{\def#1{#2}}
1917 \ifx\@empty\xmp@Language\else
1918 \expandafter\pdfx@checkfor@sep\expandafter\pdfx@mainLanguage\xmp@Language
1919 \sep\pdfx@endparse
1920 \fi
1921 \edef\pdfx@LanguageSpec{/Lang (\pdfx@mainLanguage)}
1922
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
82
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1923 %% ----------------------------------------------------------------------
1924 \begingroup
1925 \catcodè\_ 12 \catcodè\" 12 \catcodè\' 12
1926 \catcodè\< 12 \catcodè\> 12 \catcodè\/ 12 \catcodè\[ 12 \catcodè\] 12
1927 \edef\@pctchar{\expandafter\@gobble\string\%}
1928 \edef\@bchar{\expandafter\@gobble\string\\}
1929 \edef\0{\string\0}
1930 \edef\({\string\(}
1931 \edef\){\string\)}
1932 %%
1933 \def\pdfx@outcatalog@dict{%
1934 \pdfx@LanguageSpec
1935 /ViewerPreferences <</DisplayDocTitle true >>
1936 /OutputIntents \pdfx@outintents % needs appropriate expansion
1937 }%
1938 \ifpdfx@x % PDF/X needs a CMYK or RGB color profile for printing
1939 \ifno@iccprofile % PDF/X-4p and PDF/X-5pg
1940 %%
1941 %% URL and metadata for the desired external Color Profile
1942 %%
1943 \edef\pdfx@colorURL@dict{<</FS/URL/F(\pdfx@colorURL)>>}
1944 \def\pdfx@colorprofile@dict{<< %
1945 /CheckSum <\pdfx@profile@checksum>^^J%
1946 /ICCVersion <\pdfx@iccversion>%
1947 /ProfileCS (\pdfx@profileCS)^^J%
1948 /ProfileName (\pdfx@extprofile)^^J%
1949 /URLs [\OBJ@URLs] >>
1950 }
1951 %% How to specify the PDF objects with different drivers
1952 \ifxetex
1953 \def\OBJ@URLs{ @colorURL }%
1954 \def\OBJ@ICC{ @colorprofile }%
1955 \immediate\special{pdf:obj \OBJ@URLs \pdfx@colorURL@dict }%
1956 \immediate\special{pdf:obj \OBJ@ICC \pdfx@colorprofile@dict }%
1957 \else % pdfTeX & LuaTeX
1958 \immediate\pdfobj{\pdfx@colorURL@dict}%
1959 \edef\OBJ@URLs{\the\pdflastobj\space 0 R}%
1960 \immediate\pdfobj{\pdfx@colorprofile@dict}%
1961 \edef\OBJ@ICC{\the\pdflastobj\space 0 R}%
1962 \fi
1963 %% Output Intent dictionary, with object reference
1964 \edef\pdfx@outintent@dict{%
1965 /Type/OutputIntent
1966 /S/GTS_PDFX^^J
1967 /OutputCondition (\pdfx@cmyk@intent)^^J
1968 /OutputConditionIdentifier (\pdfx@cmyk@identifier)^^J
1969 /Info(\pdfx@cmyk@intent)^^J
1970 /RegistryName(\pdfx@cmyk@registry)^^J
1971 %% extra dictionary required for PDF/X-4p and PDF/X-5pg
1972 /DestOutputProfileRef \OBJ@ICC
1973 }%
1974 %%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
83
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
1975 \else % PDF/X-1 , PDF/X-1a , PDF/X-3 , PDF/X-4 , PDF/X-5g
1976 %%
1977 \ifpdfx@cmyk
1978 \IfFileExists{"\pdfx@cmyk@profile"}{%
1979 % embedded CMYK color profile
1980 %%
1981 %% Output Intent dictionary, with object reference
1982 \def\pdfx@outintent@dict{%
1983 /Type/OutputIntent
1984 /S/GTS_PDFX^^J
1985 /OutputCondition (\pdfx@cmyk@intent)^^J
1986 /OutputConditionIdentifier (\pdfx@cmyk@identifier)^^J
1987 /Info(\pdfx@cmyk@intent)^^J
1988 /RegistryName(\pdfx@cmyk@registry)
1989 /DestOutputProfile \OBJ@CMYK
1990 }%
1991 \def\pdfx@numcoords{/N 4}%
1992 %%
1993 \ifxetex
1994 \def\OBJ@CMYK{@colorprofile}%
1995 \immediate\special{%
1996 pdf:fstream \OBJ@CMYK (\pdfx@cmyk@profile) <<\pdfx@numcoords >>}%
1997 \else % pdfTeX
1998 \immediate\pdfobj stream attr{\pdfx@numcoords} file {\pdfx@cmyk@profile}%
1999 \edef\OBJ@CMYK{\the\pdflastobj\space 0 R}%
2000 \fi
2001 \pdfcatalog{%
2002 \pdfx@LanguageSpec
2003 /OutputIntents [ <<
2004 /Type/OutputIntent
2005 /S/GTS_PDFX
2006 /OutputCondition (\pdfx@cmyk@intent)%
2007 /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
2008 /Info(\pdfx@cmyk@intent)%
2009 /RegistryName(\pdfx@cmyk@registry)
2010 /DestOutputProfile \OBJ@CMYK
2011 >> ]}%
2012 }{%
2013 \PackageError{pdfx}{No color profile \pdfx@cmyk@profilename\space found
2014 to use for CMYK printing colors.}%
2015 {Is this the correct directory: \pdfx@CMYKcolorprofiledir\space ?}%
2016 }% end of \IfFileExists for CMYK
2017 \else\ifpdfx@custom
2018 %% allow Custom profile with PDF/X-5n
2019 \IfFileExists{"\pdfx@customcolorprofiledir\pdfx@custom@profile"}{%
2020 %% embedded Custom color profile
2021 %%
2022 %% Output Intent dictionary, with object reference
2023 \def\pdfx@outintent@dict{%
2024 /Type/OutputIntent
2025 /S/GTS_PDFX^^J
2026 /OutputConditionIdentifier (Custom)^^J
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
84
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2027 /OutputCondition (\pdfx@custom@identifier)^^J
2028 /Info(\pdfx@custom@profile)^^J
2029 /RegistryName(\pdfx@custom@registry)
2030 /Registry(\pdfx@custom@registry)
2031 /DestOutputProfileRef \OBJ@CustomDir
2032 }%
2033 \def\OBJ@CustomDir{<<
2034 \pdfx@numcoords^^J
2035 /URLs [ << /Type /Filespec ^^J/EF \OBJ@CustomFile^^J
2036 /F (\pdfx@custom@profile) /UF (\pdfx@custom@profile) >>]^^J
2037 >>}
2038 %% need more attributes:
2039 \def\pdfx@numcoords{%
2040 /CheckSum <\pdfx@profile@checksum>^^J%
2041 /ICCVersion <\pdfx@iccversion>%
2042 /ProfileName (\pdfx@custom@profile)^^J%
2043 /ProfileCS (\pdfx@custom@numcolors)^^J%
2044 /ColorantTable [\pdfx@custom@colornames]
2045 }%
2046 \def\pdfx@custom@filespec{%
2047 /Type /EmbeddedFile >>^^J
2048 /Subtype (application/vnd.iccprofile )
2049 }%
2050 %%
2051 \ifxetex
2052 \def\OBJ@CustomFile{@colorprofile}%
2053 \immediate\special{pdf:fstream \OBJ@CustomFile
2054 (\pdfx@customcolorprofiledir\pdfx@custom@profile) <<\pdfx@custom@filespec >>}%
2055 \else % pdfTeX
2056 \immediate\pdfobj stream attr{\pdfx@custom@filespec} file %
2057 {\pdfx@customcolorprofiledir\pdfx@custom@profile}%
2058 \edef\OBJ@CustomFile{\the\pdflastobj\space 0 R}%
2059 \fi
2060 \pdfcatalog{%
2061 \pdfx@LanguageSpec
2062 /OutputIntents [ << \pdfx@outintent@dict >>]}%
2063 }{%
2064 \PackageError{pdfx}%
2065 {No color profile \pdfx@custom@profile\space found to use for Custom printing colors.}%
2066 {Is this the correct directory: \pdfx@customcolorprofiledir\space ?}%
2067 }% end of \IfFileExists for Custom
2068 \global\pdfx@cmyktrue % for TeX coloring
2069 %%
2070 \else % allow RGB profile with PDF/X ???
2071 \ifpdfx@noerr
2072 \PackageWarning{pdfx}{PDF/X normally requires a CMYK color profile.^^J
2073 Assuming RGB profile is of type 'prtr' not 'mntr'.^^J^^J}%
2074 \else
2075 \PackageError{pdfx}{PDF/X normally requires a CMYK color profile.}%
2076 {To use RGB ensure profile is of type 'prtr' not 'mntr'.^^J^^J}%
2077 \fi
2078 % embedded RGB color profile
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
85
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2079 %%
2080 %% Output Intent dictionary, with object reference
2081 \def\pdfx@outintent@dict{%
2082 /Type /OutputIntent
2083 /S/GTS_PDFX^^J
2084 /OutputConditionIdentifier (\pdfx@rgb@identifier)^^J
2085 /DestOutputProfile \OBJ@RGB^^J
2086 /Info(\pdfx@rgb@info)^^J
2087 /RegistryName(\pdfx@rgb@registry)
2088 }%
2089 \IfFileExists{"\pdfx@rgb@profile"}{%
2090 \def\pdfx@numcoords{/N 3 /Alternate/DeviceRGB}
2091 \ifxetex
2092 \immediate\special{%
2093 pdf:fstream @colorprofile (\pdfx@rgb@profile) << \pdfx@numcoords >>}
2094 \def\OBJ@RGB{@colorprofile}%
2095 \else
2096 \immediate\pdfobj stream attr{\pdfx@numcoords} file{\pdfx@rgb@profile}%
2097 \edef\OBJ@RGB{\the\pdflastobj\space 0 R}%
2098 \fi
2099 \edef\pdfx@outintent@dict{%
2100 /Type /OutputIntent
2101 /S/GTS_PDFX
2102 /OutputConditionIdentifier (\pdfx@rgb@identifier)%
2103 /DestOutputProfile \OBJ@RGB
2104 /Info(\pdfx@rgb@info)
2105 /RegistryName(\pdfx@rgb@registry)
2106 }%
2107 \ifxetex
2108 \def\OBJ@RGB{ @colorprofile }%
2109 \immediate\special{%
2110 pdf:fstream @colorprofile (\pdfx@rgb@profile) <<\pdfx@numcoords >>}
2111 \else %% pdfTeX or LuaTeX
2112 \immediate\pdfobj stream attr{\pdfx@numcoords} file{\pdfx@rgb@profile}%
2113 \edef\OBJ@RGB{\the\pdflastobj\space 0 R}%
2114 \fi
2115 }{%
2116 \PackageError{pdfx}%
2117 {No color profile \pdfx@rgb@profilename\space found to use for RGB screen colors.}%
2118 {Is this the correct directory: \pdfx@RGBcolorprofiledir\space ?}%
2119 }% end of \IfFileExists for RGB
2120 \fi % end of \ifpdfx@custom
2121 \fi % end of \ifpdfx@cmyk
2122 \fi % end of \ifno@iccprofile
2123 %% end of PDF/X
2124 \else
2125 %% PDF/A and PDF/E can specify a CMYK profile
2126 \expandafter\ifx\expandafter\relax\pdfx@rgb@profile\relax
2127 \global\pdfx@cmyktrue
2128 \IfFileExists{"\pdfx@cmyk@profile"}{%
2129 \def\pdfx@numcoords{/N 4}
2130 % embedded CMYK color profile
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
86
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2131 \ifxetex
2132 \def\OBJ@CMYK{@colorprofile}%
2133 \special{pdf:fstream @colorprofile (\pdfx@cmyk@profile) <<\pdfx@numcoords >>}
2134 \else %% pdfTeX or LuaTeX
2135 \immediate\pdfobj stream attr{\pdfx@numcoords} file{\pdfx@cmyk@profile}%
2136 \edef\OBJ@CMYK{\the\pdflastobj\space 0 R}%
2137 \fi
2138 \edef\pdfx@outintent@dict{%
2139 /Type /OutputIntent
2140 \ifpdfx@e
2141 /S/ISO_PDFE1
2142 \else
2143 /S/GTS_PDFA1
2144 \fi
2145 /OutputCondition (\pdfx@cmyk@intent)% use this or /Info ?
2146 /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
2147 /DestOutputProfile \OBJ@CMYK
2148 /Info(\pdfx@cmyk@intent)%
2149 /RegistryName(\pdfx@cmyk@registry)
2150 }%
2151 }{%
2152 \PackageError{pdfx}{No color profile \pdfx@cmyk@profilename\space found
2153 to use for CMYK printing colors.}%
2154 {Is this the correct directory: \pdfx@CMYKcolorprofiledir\space ?}%
2155 }% end of \IfFileExists for CMYK
2156 \else
2157 %% PDF/A and PDF/E usually need an RGB color profile for on-screen rendering
2158 \global\pdfx@cmykfalse
2159 \expandafter\IfFileExists\expandafter{\pdfx@rgb@profile}{%
2160 \def\pdfx@numcoords{/N 3 /Alternate/DeviceRGB}
2161 \ifxetex
2162 \def\OBJ@RGB{ @colorprofile }%
2163 \immediate\special{pdf:fstream @colorprofile (\pdfx@rgb@profile) <<\pdfx@numcoords >>}
2164 \else
2165 \immediate\pdfobj stream attr{\pdfx@numcoords} file{\pdfx@rgb@profile}%
2166 \edef\OBJ@RGB{\the\pdflastobj\space 0 R}%
2167 \fi
2168 \edef\pdfx@outintent@dict{%
2169 /Type /OutputIntent
2170 \ifpdfx@e
2171 /S/ISO_PDFE1
2172 \else
2173 /S/GTS_PDFA1
2174 \fi
2175 /OutputConditionIdentifier (\pdfx@rgb@identifier)%
2176 /DestOutputProfile \OBJ@RGB
2177 /Info(\pdfx@rgb@info)
2178 /RegistryName(\pdfx@rgb@registry)
2179 }%
2180 }{%
2181 \PackageError{pdfx}%
2182 {No color profile \pdfx@rgb@profilename\space found to use for RGB screen colors.}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
87
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2183 {Is this the correct directory: \pdfx@RGBcolorprofiledir\space ?}%
2184 }% end of \IfFileExists for RGB
2185 \fi % end of ifx for PDF/A or PDF/E
2186 \fi % end of ifpdfx@x
2187 %%
2188 \expandafter\ifx\csname pdfx@outintent@dict\endcsname\relax
2189 \else
2190 %%
2191 %% build the OutputIntent array
2192 %%
2193 \ifxetex
2194 \def\pdfx@outintents{ @outintentsarray }%
2195 \def\pdfx@outintentref{ @outintent@dict }%
2196 \immediate\special{pdf:obj \pdfx@outintentref << \pdfx@outintent@dict >>}
2197 \immediate\special{pdf:obj \pdfx@outintents [ ]}%
2198 \immediate\special{pdf:put \pdfx@outintents \pdfx@outintentref }%
2199 \else
2200 \immediate\pdfobj{<<\pdfx@outintent@dict>>}%
2201 \edef\pdfx@outintents{[\the\pdflastobj\space 0 R]}%
2202 \fi
2203 %%
2204 %% make the Catalog entry, if not already done
2205 %%
2206 \ifx\pdfx@outcatalog@dict\relax
2207 \else
2208 \pdfcatalog{\pdfx@outcatalog@dict}%
2209 \fi
2210 \fi % end of OutputIntent array and Catalog entry
2211 \endgroup
2212
2213 %% ----------------------------------------------------------------------
2214 %% Make a version of \xmp@Keywords and \xmp@Author where \sep has been
2215 %% replaced by a comma. The first is for the pdf:Keywords property,
2216 %% which accepts a comma-separated string of keywords, and seems to be
2217 %% mandatory for PDF/A-1 compliance. The second is for the dc:creator
2218 %% property. Although it is defined to be a sequence of authors, Adobe
2219 %% Acrobat will in fact ignore and delete all except the first author.
2220 %% Therefore, it's safer to always separate authors by commas.
2221
2222 \begingroup
2223 \let\pdfx@xmpunimarkup\relax
2224 \pdfx@xmpmarkup
2225 \ifluatex\else\ifxetex\else
2226 \inputencoding{8bit}%
2227 \fi\fi
2228 \makeatletter
2229 \IfFileExists{\pdfx@encodingfile}{%
2230 \def\cf@encoding{L8U}\fontencoding{L8U}%
2231 }{}%
2232 \let\protect\@typeset@protect
2233 \pdfx@xmpmarkup %% !!!!! no longer needed
2234 %% \xdef\xmp@@Author{\xmp@Author}% no need to expand
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
88
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2235 \global\let\xmp@@Author\xmp@Author
2236 \def\sep{; }% expand to replace \sep !!! no longer needed
2237 %% \xdef\xmp@@Copyright{\xmp@Copyright}%
2238 \global\let\xmp@@Copyright\xmp@Copyright
2239 %% \xdef\xmp@@Keywords{\xmp@Keywords}%
2240 %% \global\let\xmp@@Keywords\xmp@Keywords
2241 %% \global\let\xmp@Keywords\@empty %
2242 \global\let\xmp@@Keywords\@empty % don't use pdf:Keywords
2243 \endgroup
2244
2245 %% ----------------------------------------------------------------------
2246 \def\xmp@convertDate{\pdfx@getYear}
2247 {\catcodè\D=12 \catcodè\:=12
2248 \gdef\pdfx@getYear D:#1#2#3#4{\edef\pdfx@xYear{#1#2#3#4}\pdfx@getMonth}
2249 }
2250 \def\pdfx@getMonth#1#2{\edef\pdfx@xMonth{#1#2}\pdfx@getDay}
2251 \def\pdfx@getDay#1#2{\edef\pdfx@xDay{#1#2}\pdfx@getHour}
2252 \def\pdfx@getHour#1#2{\edef\pdfx@xHour{#1#2}\pdfx@getMin}
2253 \def\pdfx@getMin#1#2{\edef\pdfx@xMin{#1#2}\pdfx@getSec}
2254 \def\pdfx@getSec#1#2{\edef\pdfx@xSec{#1#2}\pdfx@getTZh}
2255 \def\pdfx@getTZh{\futurelet\pdfx@next\pdfx@getTzh@branches}
2256
2257 {\catcodè\@=11 \catcodè\Z=12 \catcodè\+=12 \catcodè\-=12
2258 \gdef\pdfx@getTzh@branches{%
2259 \ifx\pdfx@next Z\let\pdfx@getTzbranch\pdfx@getTznozone
2260 \else\ifx\pdfx@next +\let\pdfx@getTzbranch\pdfx@getTzplus
2261 \else\ifx\pdfx@next -\let\pdfx@getTzbranch\pdfx@getTzminus
2262 \else\let\pdfx@getTzbranch\pdfx@getTzerror
2263 \fi\fi\fi \pdfx@getTzbranch }
2264
2265 \catcodè\0=12
2266 \gdef\pdfx@getTznozone Z#1\pdfx@getTzend{%
2267 \edef\pdfx@xTzh{+00}\edef\pdfx@xTzm{00}}
2268 \gdef\pdfx@getTzplus +#1'#2'#3\pdfx@getTzend{%
2269 \edef\pdfx@xTzh{+#1}\edef\pdfx@xTzm{#2}%
2270 \ifx\relax#2\relax\def\pdfx@xTzm{00}\fi}
2271 \gdef\pdfx@getTzminus -#1'#2'#3\pdfx@getTzend{%
2272 \edef\pdfx@xTzh{-#1}\edef\pdfx@xTzm{#2}%
2273 \ifx\relax#2\relax\def\pdfx@xTzm{00}\fi}
2274 %%
2275 %% How to support XeTeX here ?
2276 \expandafter\ifx\csname pdfcreationdate\endcsname\relax
2277 %% \xdef\pdfx@convDate{2016-04-01}% April fool!
2278 %% \xdef\xmp@convDate{2016-04-01}% April fool!
2279 \else
2280 \expandafter\expandafter\expandafter\xmp@convertDate\pdfcreationdate''\pdfx@getTzend
2281 \xdef\pdfx@convDate{\pdfx@xYear\pdfx@xMonth\pdfx@xDay\pdfx@xHour
2282 \pdfx@xMin\pdfx@xSec\pdfx@xTzh'\pdfx@xTzm'}%
2283 \xdef\xmp@convDate{\pdfx@xYear-\pdfx@xMonth-\pdfx@xDay
2284 T\pdfx@xHour:\pdfx@xMin:\pdfx@xSec\pdfx@xTzh:\pdfx@xTzm}%
2285 \fi
2286 }% end of \catcode
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
89
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2287
2288
2289 %% ----------------------------------------------------------------------
2290 %% \pdfx@topdfstring\toka\tokb: Convert the string in \tokb to a format
2291 %% appropriate for PDF /Info strings, i.e., PDFDoc encoding or UTF-16
2292 %% encoding, and store the result in \toka As a special case, if \tokb
2293 %% is \@empty, set \toka to \@empty.
2294
2295 \RequirePackage{stringenc}% prevent it loading later inside a group
2296 \def\pdfx@topdfstring #1#2{%
2297 \ifx #2\@empty
2298 \global\let#1\empty
2299 \else
2300 \begingroup
2301 \ifluatex\else\ifxetex\else
2302 \inputencoding{utf8}%
2303 \fi\fi
2304 \@ifl@t@r\fmtversion{2022/06/01}{}{\hypersetup{pdfencoding=auto}}%
2305 \pdfstringdef #1{#2}%
2306 \endgroup
2307 \fi
2308 }
2309
2310 %% ----------------------------------------------------------------------
2311 %% if high-bit characters are already encoded as active
2312 %% then \pdfstringdef probably changes their meaning
2313 %% so save these for later reversion.
2314 %%
2315 \newif\ifpdf@activechars
2316 {\ifnum\catcodè^^c0 = 13\relax \aftergroup\pdf@activecharstrue\fi}%
2317 %%
2318 %% normally not used with XeTeX or LuaTeX
2319 %%
2320
2321 \ifpdf@activechars
2322 \global\let\pdfx@save@co ^^c0\relax
2323 \global\let\pdfx@save@ci ^^c1\relax
2324 \global\let\pdfx@save@cii ^^c2\relax
2325 \global\let\pdfx@save@ciii ^^c3\relax
2326 \global\let\pdfx@save@civ ^^c4\relax
2327 \global\let\pdfx@save@cv ^^c5\relax
2328 \global\let\pdfx@save@cvi ^^c6\relax
2329 \global\let\pdfx@save@cvii ^^c7\relax
2330 \global\let\pdfx@save@cviii ^^c8\relax
2331 \global\let\pdfx@save@cix ^^c9\relax
2332 \global\let\pdfx@save@ca ^^ca\relax
2333 \global\let\pdfx@save@cb ^^cb\relax
2334 \global\let\pdfx@save@cc ^^cc\relax
2335 \global\let\pdfx@save@cd ^^cd\relax
2336 \global\let\pdfx@save@ce ^^ce\relax
2337 \global\let\pdfx@save@cf ^^cf\relax
2338 \global\let\pdfx@save@do ^^d0\relax
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
90
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2339 \global\let\pdfx@save@di ^^d1\relax
2340 \global\let\pdfx@save@dii ^^d2\relax
2341 \global\let\pdfx@save@diii ^^d3\relax
2342 \global\let\pdfx@save@div ^^d4\relax
2343 \global\let\pdfx@save@dv ^^d5\relax
2344 \global\let\pdfx@save@dvi ^^d6\relax
2345 \global\let\pdfx@save@dvii ^^d7\relax
2346 \global\let\pdfx@save@dviii ^^d8\relax
2347 \global\let\pdfx@save@dix ^^d9\relax
2348 \global\let\pdfx@save@da ^^da\relax
2349 \global\let\pdfx@save@db ^^db\relax
2350 \global\let\pdfx@save@dc ^^dc\relax
2351 \global\let\pdfx@save@dd ^^dd\relax
2352 \global\let\pdfx@save@de ^^de\relax
2353 \global\let\pdfx@save@df ^^df\relax
2354 \global\let\pdfx@save@eo ^^e0\relax
2355 \global\let\pdfx@save@ei ^^e1\relax
2356 \global\let\pdfx@save@eii ^^e2\relax
2357 \global\let\pdfx@save@eiii ^^e3\relax
2358 \global\let\pdfx@save@eiv ^^e4\relax
2359 \global\let\pdfx@save@ev ^^e5\relax
2360 \global\let\pdfx@save@evi ^^e6\relax
2361 \global\let\pdfx@save@evii ^^e7\relax
2362 \global\let\pdfx@save@eviii ^^e8\relax
2363 \global\let\pdfx@save@eix ^^e9\relax
2364 \global\let\pdfx@save@ea ^^ea\relax
2365 \global\let\pdfx@save@eb ^^eb\relax
2366 \global\let\pdfx@save@ec ^^ec\relax
2367 \global\let\pdfx@save@ed ^^ed\relax
2368 \global\let\pdfx@save@ee ^^ee\relax
2369 \global\let\pdfx@save@ef ^^ef\relax
2370 \global\let\pdfx@save@fo ^^f0\relax
2371 \global\let\pdfx@save@fi ^^f1\relax
2372 \global\let\pdfx@save@fii ^^f2\relax
2373 \global\let\pdfx@save@fiii ^^f3\relax
2374 \fi
2375
2376 %% ----------------------------------------------------------------------
2377 %% detect when \sep is used for multiple authors
2378 %% then suppress the /Author field in PDF /Info
2379 \newif\ifpdfx@sep@infield@
2380 \let\pdfx@endparse\relax
2381 \def\pdfx@parseforsep#1\sep#2\pdfx@endparse{%
2382 \pdfx@sep@infield@false
2383 \ifx\relax#2\relax\else\pdfx@sep@infield@true\fi
2384 }
2385
2386 \begingroup
2387 \let\CATCODE\catcode
2388 \let\ENDGROUP\endgroup
2389 \let\GDEF\gdef
2390 \CATCODÈ\m 12 \CATCODÈ\a 12 \CATCODÈ\c 12 \CATCODÈ\r 12 \CATCODÈ\o 12
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
91
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2391 \CATCODÈ\: 12 \CATCODÈ\- 12 \CATCODÈ\> 12
2392 \GDEF\pdfx@DOSTRIP@MACRO macro:->#1\@{#1}%
2393 \ENDGROUP
2394 \def\pdfx@strip@macro#1{%
2395 \expandafter\edef\expandafter#1\expandafter{%
2396 \expandafter\pdfx@DOSTRIP@MACRO\meaning#1\@}%
2397 }
2398
2399 %% Convert the relevant XMP properties to PDF strings, expanding markup
2400 %% (such as \sep, \&, \copyright, etc) in an appropriate way.
2401 %% These PDF strings are actually not always necessary, but if supplied they
2402 %% must match exactly what is in the XMP version. This may be impossible
2403 %% if math symbols are used; e.g. Plane-1 alphanumerics.
2404 %% Generally, it is better to *not* provide PDF-info strings;
2405 %% instead just providing metadata through XMP.
2406 %% This is not always enough â?? a driver may add it by default!
2407 %%
2408 %% But some PDF readers don't support XMP, so it is nice to have
2409 %% /Info fields, when this can be done reliably.
2410 %%
2411 %% 2018-12-16: load package outside the grouping
2412 \RequirePackage{stringenc}%
2413 \begingroup
2414 \catcodè\| 0
2415 \catcode ̀\\ 12
2416 |gdef |pdfx@parsebackslash#1{%
2417 |begingroup
2418 |def |pdfx@parsemacro{#1}%
2419 |def |pdfx@parseout{}%
2420 |expandafter |pdfx@doparsebackslash#1\|pdfx@endparse
2421 }
2422 |gdef |pdfx@doparsebackslash#1\#2|pdfx@endparse{%
2423 |edef |pdfx@parseout{|pdfx@parseout#1}%
2424 |ifx |relax#2|relax
2425 |let |next |pdfx@parseend
2426 |else
2427 |edef |pdfx@parseout{|pdfx@parseout \\}%
2428 |def |next{|pdfx@doparsebackslash#2|pdfx@endparse}%
2429 |fi |next
2430 }
2431 |endgroup
2432 \def\pdfx@parseend{%
2433 \edef\next{\endgroup\def\expandafter\noexpand\pdfx@parsemacro{\pdfx@parseout}}%
2434 \next
2435 }%
2436 \begingroup
2437 %% \expandafter\ifx\csname pdf@escapehex\endcsname\relax
2438 %% \PackageWarning{pdfx}{%
2439 %% Missing an implementation of \string\pdf@escapehex ^^J
2440 %% Translated Metadata cannot be generated as PDF strings.^^J}%
2441 %% \def\pdfx@GeneratePdfString#1#2{}%
2442 %% \def\pdfx@ConvertUTFtoBE#1#2{}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
92
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2443 %% \fi %%\else
2444 \gdef\pdfx@GeneratePdfString#1#2{%
2445 % converts a UTF-8 string to UTF-16be
2446 \StringEncodingConvert{#1}{#2}{utf8}{utf16be}%
2447 \edef\pdfx@tempii{#1}\relax
2448 \xdef#1{\string\376\string\377\pdfescapestring{\pdfx@tempii}}%
2449 }%
2450 \gdef\pdfx@ConvertUTFtoBE#1#2{%
2451 \setbox0=\hbox{% catch any rubbish escaping to the MVL
2452 \def\cf@encoding{L8U}\fontencoding{L8U}%
2453 \ifluatex
2454 %% \let\pdfescapestring\luaescapestring
2455 \else\ifxetex\else
2456 \inputencoding{8bit}%
2457 \fi\fi
2458 %% \pdfx@xmpmarkup %% don't want some things
2459 \pdfx@xmpunimarkup
2460 \let\backslash\textbackslash
2461 \edef\pdfx@temp{#2}% ensure XMP expands to UTF8
2462 \ifluatex
2463 \pdfx@parsebackslash\pdfx@temp
2464 \pdfstringdef{#1}{\pdfx@temp}%
2465 \else\ifxetex
2466 \pdfx@parsebackslash\pdfx@temp
2467 \pdfstringdef{#1}{\pdfx@temp}%
2468 \else
2469 \pdfx@GeneratePdfString{#1}{\pdfx@temp}%
2470 \fi\fi
2471 }% end of \setbox
2472 }%
2473 %% \fi
2474 \pdfx@pdfmarkup
2475 \global\let\pdfx@pdfAuthor\@empty
2476 \global\let\pdfx@pdfTitle\@empty
2477 \global\let\pdfx@pdfSubject\@empty
2478 \global\let\pdfx@pdfKeywords\@empty
2479 \ifpdfx@nopdfinfo % transliterated strings present
2480 %% RRM: this may still work with parser macros ???
2481 \expandafter\ifx\expandafter\relax\xmp@Title\relax\else
2482 \pdfx@ConvertUTFtoBE{\pdfx@pdfTitle}{\xmp@Title}%
2483 \fi
2484 \expandafter\ifx\expandafter\relax\xmp@Subject\relax\else
2485 \pdfx@ConvertUTFtoBE{\pdfx@pdfSubject}{\xmp@Subject}%
2486 \fi
2487 \else %% pdfx@nopdfinfofalse
2488 \expandafter\ifx\expandafter\relax\xmp@Title\relax\else
2489 \ifluatex
2490 \pdfx@ConvertUTFtoBE\pdfx@pdfTitle\xmp@Title
2491 \else\ifxetex
2492 \pdfx@ConvertUTFtoBE\pdfx@pdfTitle\xmp@Title
2493 \else
2494 %% \pdfx@GeneratePdfString\pdfx@pdfTitle\xmp@Title % why does this fail ???
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
93
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2495 \pdfx@ConvertUTFtoBE{\pdfx@pdfTitle}{\xmp@Title}% ??? RRM 2019-02-17
2496 \fi\fi
2497 \fi
2498 \expandafter\ifx\expandafter\relax\xmp@Subject\relax\else
2499 \ifluatex
2500 \pdfx@ConvertUTFtoBE\pdfx@pdfSubject\xmp@Subject
2501 \else\ifxetex
2502 \pdfx@ConvertUTFtoBE\pdfx@pdfSubject\xmp@Subject
2503 \else
2504 %% \pdfx@GeneratePdfString\pdfx@pdfSubject\xmp@Subject % why does this fail ???
2505 \pdfx@ConvertUTFtoBE{\pdfx@pdfSubject}{\xmp@Subject}% 2019-02-17
2506 \fi\fi
2507 \fi
2508 \fi % end of \ifpdfx@nopdfinfo
2509 \pdfx@topdfstring\pdfx@CreatorTool\xmp@CreatorTool
2510 \pdfx@topdfstring\pdfx@Producer\xmp@Producer
2511 %% \pdfescapestring needed
2512 %% \expandafter\ifx\csname pdfescapestring\endcsname\relax
2513 %% \else
2514 \expandafter\ifx\expandafter\relax\xmp@Author\relax
2515 \else
2516 %% check for multiple authors with parser macro
2517 \expandafter\pdfx@parseforsep\xmp@Author\sep\pdfx@endparse
2518 \ifpdfx@sep@infield@
2519 \else
2520 \pdfx@ConvertUTFtoBE{\pdfx@pdfAuthor}{\xmp@Author}%
2521 \fi %% end of \ifpdfx@sep@infield@
2522 \fi %% end of \xmp@Author test
2523 \expandafter\ifx\expandafter\relax\xmp@Keywords\relax
2524 \else
2525 %% check for multiple keywords with parser macro
2526 \expandafter\pdfx@parseforsep\xmp@Keywords\sep\pdfx@endparse
2527 \ifpdfx@sep@infield@
2528 \else
2529 \pdfx@ConvertUTFtoBE{\pdfx@pdfKeywords}{\xmp@Keywords}%
2530 \fi %% end of \ifpdfx@sep@infield@
2531 \fi %% end of \xmp@Keywords test
2532 %%
2533 %% \fi %% end of \pdfescapestring test
2534 \endgroup
2535
2536 %% Affects CMap creation for certain fonts, according to glyph names
2537 %% How to support XeTeX here ?
2538 %% Maybe it's best to be using an updated mmap.sty ?
2539 \ifxetex
2540 \else
2541 \input glyphtounicode.tex
2542 \input glyphtounicode-cmr.tex
2543 \input glyphtounicode-ntx.tex
2544 \pdfgentounicode=1
2545 \fi
2546 \ifgrkLGRxmp
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
94
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2547 \ifxetex\else
2548 \pdfglyphtounicode{internalchar2}{200D}%
2549 \fi \fi
2550
2551 %% patch to place accents *after* the base character, rather than before
2552 %% based on coding from mmap.sty by RRM
2553 \newif\ifPDFX@inaccent
2554 \let\LTX@add@accent\add@accent
2555 \def\PDFX@add@accent#1#2{%
2556 \hmode@bgroup
2557 \let \hmode@start@before@group \@firstofone
2558 \setbox\@tempboxa\hbox{\PDFX@inaccenttrue
2559 #2\global\mathchardef\accent@spacefactor\spacefactor}%
2560 #2\kern-\wd\@tempboxa
2561 %% \ifdim\ht\@tempboxa>1ex\relax
2562 \dimen@=\ht\@tempboxa\advance\dimen@-1ex\relax
2563 %%% reduce how much a nested accent is raised
2564 \ifPDFX@inaccent\advance\[email protected]\relax\fi
2565 \raise\dimen@\hbox to\wd\@tempboxa{\hss
2566 \accent#1{\vphantom{#2}}\hss}%
2567 %% \else
2568 %% \accent#1{%\vphantom{#2}
2569 %% \vrule width\z@ height\ht\@tempboxa depth\dp\@tempboxa}%
2570 %% \fi
2571 \egroup
2572 \spacefactor\accent@spacefactor
2573 }
2574 %% same for named accents in math-mode
2575 \def\pdfx@mathaccentV #1#2#3#4#5{%
2576 #5{\mathsurround=\z@\relax
2577 \everymath{}%
2578 \mathchoice
2579 {\setbox\z@\hbox{$\displaystyle #5$}\kern-\wd\z@}%
2580 {\setbox\z@\hbox{$\textstyle #5$}\kern-\wd\z@}%
2581 {\setbox\z@\hbox{$\scriptstyle #5$}\kern-\wd\z@}%
2582 {\setbox\z@\hbox{$\scriptscriptstyle #5$}\kern-\wd\z@}%
2583 }%
2584 % \pdfx@AMS@mathaccentV{#1}{#2}{#3}{#4}{#5}%
2585 \AMS@mathaccentV{#1}{#2}{#3}{#4}{\phantom{#5}}%
2586 }
2587
2588 %%% the original AMS coding:
2589 %%\mathaccentV=macro: #1#2#3#4#5->\ifmmode
2590 %% \gdef \macc@tmp {\macc@depth \@ne }%
2591 %% \setbox \z@ \hbox {\let\mathaccentV \macc@test
2592 %% \let \use@mathgroup \@gobbletwo
2593 %% \let \select@group \@gobblethree \frozen@everymath {}$#5$}\macc@tmp
2594 %% \ifnum \macc@depth =\@ne
2595 %% \global \let \macc@nucleus \@empty
2596 %% \mathaccent "\accentclass@
2597 %% \else \@xp \macc@nested
2598 %% \fi #2#3#4{#5}\macc@nucleus
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
95
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2599 %% \else
2600 %% \@xp \nonmatherr@ \csname #1\endcsname \fi .
2601
2602 \def\pdfx@AMS@mathaccentV #1#2#3#4#5{%
2603 \ifmmode
2604 \gdef \macc@tmp {\macc@depth \@ne }%
2605 \setbox \z@ \hbox {\let\mathaccentV \macc@test
2606 \let \use@mathgroup \@gobbletwo
2607 \let \select@group \@gobblethree \frozen@everymath {}$\phantom{#5}$}\macc@tmp
2608 \ifnum \macc@depth =\@ne
2609 \global \let \macc@nucleus \@empty
2610 \mathaccent "\accentclass@
2611 \else \@xp \macc@nested
2612 \fi #2#3#4{#5}\macc@nucleus
2613 \else
2614 \@xp \nonmatherr@ \csname #1\endcsname
2615 \fi
2616 }
2617
2618
2619 %% code supplied by Yuwsuke Kieda, 7 May 2019 :
2620 %% https://gist.github.com/yuw/a31936370647d0044eeb4e47f3ae913f
2621 %%
2622 \@ifpackageloaded{amsmath}{%
2623 \def\pdfx@macc@a #1#2{%
2624 \begingroup
2625 \let\macc@style#1\relax
2626 \def\macc@palette ##1{##1\macc@style}%
2627 \advance\macc@depth\m@ne
2628 \ifnum\macc@depth=\z@
2629 \gdef\macc@nucleus{\phantom{#2}}%% <<< here
2630 \setbox\z@\hbox{$#1#2\@empty{}\macc@skewchar$}%
2631 \setbox\tw@\hbox{$#1#2\@empty\macc@skewchar$}%
2632 \dimen@\tw@\wd\tw@ \advance\dimen@-\tw@\wd\z@
2633 \xdef\macc@kerna{\the\dimen@\relax}%
2634 \setbox4\hbox{$#1#2\acc@check\@empty$}%
2635 \global\setbox\@ne\hbox to\wd4{}%
2636 \ht\@ne\ht4 \dp\@ne\dp4
2637 \xdef\macc@kernb{\the\wd4\relax}%
2638 \mathaccent\macc@code{\box\@ne\kern\macc@kerna}%
2639 \else
2640 \mathaccent\macc@code{\let\macc@adjust\@empty #1#2\@empty}%
2641 \macc@adjust
2642 \fi
2643 \endgroup
2644 }}\relax
2645 %
2646 \AtBeginDocument{%
2647 \@ifpackageloaded{amsmath}{%
2648 \let\AMS@mathaccentV\mathaccentV
2649 % \let\mathaccentV\pdfx@mathaccentV
2650 % \let\macc@a\pdfx@macc@a
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
96
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2651 }%
2652 }%
2653
2654 %% How to support XeTeX here ?
2655 %%%%% adjust accent characters to the Unicode Combining variant %%%%
2656 \def\PDFX@combiningchars@unicode{%
2657 \pdfglyphtounicode{grave}{0300}%
2658 \pdfglyphtounicode{acute}{0301}%
2659 \pdfglyphtounicode{circumflex}{0302}%
2660 \pdfglyphtounicode{tilde}{0303}%
2661 \pdfglyphtounicode{macron}{0304}%
2662 \pdfglyphtounicode{Macronsmall}{0304}%
2663 \pdfglyphtounicode{breve}{0306}%
2664 \pdfglyphtounicode{dotaccent}{0307}%
2665 \pdfglyphtounicode{Dotaccent}{0307}%
2666 \pdfglyphtounicode{Dotaccentsmall}{0307}%
2667 \pdfglyphtounicode{dieresis}{0308}%
2668 \pdfglyphtounicode{ogonek}{0309}%
2669 \pdfglyphtounicode{ring}{030A}%
2670 \pdfglyphtounicode{hungarumlaut}{030B}%
2671 \pdfglyphtounicode{caron}{030C}%
2672 \pdfglyphtounicode{cedilla}{0327}%
2673 \pdfglyphtounicode{commaaccent}{0326}% droid
2674 % tie accents in berenisadf lm stix and others
2675 \pdfglyphtounicode{tieaccentlowercase}{0311}%
2676 \pdfglyphtounicode{tieaccentcapital}{0361}%
2677 \pdfglyphtounicode{newtieaccentlowercase}{0311}%
2678 \pdfglyphtounicode{newtieaccentcapital}{0361}%
2679 % cm-unicode
2680 \pdfglyphtounicode{space_uni030D}{030D}%
2681 \pdfglyphtounicode{space_uni030E}{030E}%
2682 \pdfglyphtounicode{space_uni030F}{030F}%
2683 \pdfglyphtounicode{space_uni0311}{0311}%
2684 \pdfglyphtounicode{space_uni0321}{0321}%
2685 \pdfglyphtounicode{space_uni0322}{0322}%
2686 \pdfglyphtounicode{space_uni032A}{032A}%
2687 \pdfglyphtounicode{space_uni032B}{032B}%
2688 \pdfglyphtounicode{space_uni0335}{0335}%
2689 \pdfglyphtounicode{space_uni0337}{0337}%
2690 \pdfglyphtounicode{space_uni033A}{033A}%
2691 \pdfglyphtounicode{space_uni033B}{033B}%
2692 \pdfglyphtounicode{space_uni033C}{033C}%
2693 \pdfglyphtounicode{space_uni034D}{034D}%
2694 }
2695
2696 \def\pdfx@check@accents{%
2697 \ifx\add@accent\LTX@add@accent
2698 \let\add@accent\PDFX@add@accent
2699 \else
2700 \expandafter\ifx\csname MT@orig@add@accent\endcsname\relax
2701 \@ifpackageloaded{mmap}{}{%
2702 \pdfx@ErrorWarning{another package has patched \string\add@accent }%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
97
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2703 {Hit <return> to continue}{}{}}%
2704 \else
2705 \expandafter\let\csname MT@orig@add@accent\endcsname\PDFX@add@accent
2706 \fi\fi
2707 \ifxetex
2708 \else
2709 \PDFX@combiningchars@unicode
2710 %% this is now handled by glyphtounicode-ntx.tex
2711 %% \@ifpackageloaded{newtxmath}{%
2712 %% \pdfglyphtounicode{vec}{20D7}%
2713 %% \pdfglyphtounicode{rvec}{20D6}%
2714 %% \pdfglyphtounicode{lrvec}{20E1}%
2715 %% }{}%
2716 \fi % end of \ifxetex
2717 \let\pdfx@check@accents\unDefiNeD
2718 }
2719 \AtBeginDocument{\pdfx@check@accents}
2720
2721 %% suppress hyperlinks when generating PDF/X
2722 \def\pdfx@linkfile@pdfX#1#2#3{%
2723 \Hy@colorlink\@filecolor#1\Hy@xspace@end}
2724 \def\pdfx@linkstart@pdfX#1#2#3{%
2725 \Hy@colorlink\@linkcolor#3\endgroup\Hy@xspace@end}
2726 \def\pdfx@linkurl@pdfX#1#2{%
2727 \Hy@colorlink\@urlcolor#1\endgroup\Hy@xspace@end}
2728 \def\pdfx@StartlinkName@pdfX#1#2{}
2729 \def\pdfx@close@pdflink{\Hy@VerboseLinkStop\Hy@endcolorlink}%
2730 \def\pdfx@Acrobatmenu@noaction#1#2{#2}
2731
2732 \ifpdfx@x
2733 \let\hyper@linkfile\pdfx@linkfile@pdfX
2734 \let\hyper@linkurl\pdfx@linkurl@pdfX
2735 \let\hyper@linkstart\pdfx@linkstart@pdfX
2736 \let\hyper@linkend\relax
2737 \let\Hy@StartlinkName\pdfx@StartlinkName@pdfX
2738 \let\close@pdflink\pdfx@close@pdflink
2739 \let\AcrobatMenu\pdfx@Acrobatmenu@noaction
2740 \Hy@bookmarksfalse
2741 %% {\def\sep{;}% should not be needed, but just in case
2742 \AtBeginDocument{%
2743 % cancel annotations and links
2744 %
2745 \def\PDF@FinishDoc{% ??? What uses this ???
2746 \begingroup
2747 \def\sep{; }% should not be needed, but just in case
2748 \pdfinfo{%
2749 \ifx\pdfx@pdfTitle\@empty\else /Title(\pdfx@pdfTitle)^^J\fi
2750 \ifx\pdfx@pdfAuthor\@empty\else /Author(\pdfx@pdfAuthor)^^J\fi
2751 \ifx\pdfx@pdfSubject\@empty\else /Subject(\pdfx@pdfSubject)^^J\fi
2752 \ifx\pdfx@pdfKeywords\@empty\else /Keywords(\pdfx@pdfKeywords)^^J\fi
2753 /Creator(\pdfx@CreatorTool)^^J%
2754 \ifx\@pdfcreationdate\@empty
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
98
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2755 /CreationDate(D:\pdfx@convDate)%
2756 \else
2757 \ifxetex\else
2758 /CreationDate(\@pdfcreationdate)%
2759 \fi\fi
2760 \ifx\@pdfmoddate\@empty
2761 /ModDate(D:\pdfx@convDate)%
2762 \else
2763 /ModDate(\@pdfmoddate)%
2764 \fi
2765 ^^J/Producer(\pdfx@Producer)%
2766 /Trapped/False^^J%
2767 \ifnum\xmp@Part=1
2768 /GTS_PDFXVersion(PDF/X-1\ifnum\xmp@ReleaseDate>2001
2769 \xmp@Conformance\fi:\xmp@ReleaseDate)%
2770 \else
2771 /GTS_PDFXVersion(PDF/X-\xmp@Part\xmp@Conformance
2772 \ifnum\xmp@Part< 4 :\xmp@ReleaseDate\fi)%
2773 \fi
2774 \ifnum\xmp@Part < 3
2775 /GTS_PDFXConformance(PDF/X-\xmp@Part\xmp@Conformance
2776 :\xmp@ReleaseDate)%
2777 \fi
2778 \ifpdfx@vt
2779 %% support for PDF/VT extensions of PDF/X-4 and PDF/X-5
2780 /GTS_PDFVTVersion(PDF/VT-\xmp@vtPart\xmp@vtConformance)%
2781 \fi
2782 }%% end of PDF/X info
2783 \endgroup %% end of scope for \sep
2784 }%% end of \PDF@FinishDoc
2785 }% end of \AtBeginDocument
2786 %% \pdfinfo{% order of these dictionary keys should not matter
2787 %% \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi
2788 %% /CreationDate(D:\pdfx@convDate)%
2789 %% /Creator(\pdfx@CreatorTool)%
2790 %% \ifnum\xmp@Part=1
2791 %% /GTS_PDFXVersion(PDF/X-1\ifnum\xmp@ReleaseDate>2001
2792 %% \xmp@Conformance\fi:\xmp@ReleaseDate)%
2793 %% \else
2794 %% /GTS_PDFXVersion(PDF/X-\xmp@Part\xmp@Conformance
2795 %% \ifnum\xmp@Part< 4 :\xmp@ReleaseDate\fi)%
2796 %% \fi
2797 %% \ifnum\xmp@Part < 3
2798 %% /GTS_PDFXConformance(PDF/X-\xmp@Part\xmp@Conformance
2799 %% :\xmp@ReleaseDate)%
2800 %% \fi
2801 %%
2802 %% \ifpdfx@vt
2803 %%% support for PDF/VT extensions of PDF/X-4 and PDF/X-5
2804 %% /GTS_PDFVTVersion(PDF/VT-\xmp@vtPart\xmp@vtConformance)%
2805 %% \fi
2806 %% \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
99
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2807 %% /ModDate(D:\pdfx@convDate)%
2808 %% /Producer(\pdfx@Producer)%
2809 %% \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi
2810 %% \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
2811 %% /Trapped/False%
2812 %% }% end of PDF/X info
2813 %% }% end of scope for \sep
2814 \else
2815 \ifpdfx@e %% PDF/E
2816 \AtBeginDocument{%
2817 \def\PDF@FinishDoc{% ??? What uses this ???
2818 \begingroup
2819 \def\sep{; }% should not be needed, but just in case
2820 \pdfinfo{%
2821 \ifx\pdfx@pdfTitle\@empty\else /Title(\pdfx@pdfTitle)^^J\fi
2822 \ifx\pdfx@pdfAuthor\@empty\else /Author(\pdfx@pdfAuthor)^^J\fi
2823 \ifx\pdfx@pdfSubject\@empty\else /Subject(\pdfx@pdfSubject)^^J\fi
2824 \ifx\pdfx@pdfKeywords\@empty\else /Keywords(\pdfx@pdfKeywords)^^J\fi
2825 /Creator(\pdfx@CreatorTool)^^J%
2826 \ifx\@pdfcreationdate\@empty
2827 /CreationDate(D:\pdfx@convDate)%
2828 \else
2829 \ifxetex\else
2830 /CreationDate(\@pdfcreationdate)%
2831 \fi\fi
2832 \ifx\@pdfmoddate\@empty
2833 /ModDate(D:\pdfx@convDate)%
2834 \else
2835 /ModDate(\@pdfmoddate)%
2836 \fi
2837 ^^J/Producer(\pdfx@Producer)%
2838 /Trapped/False^^J%
2839 /GTS_PDFEVersion(PDF/E-1\xmp@Conformance:\xmp@ReleaseDate)%
2840 }% end of PDF/E info
2841 \endgroup %% end of scope for \sep
2842 }% end of \PDF@FinishDoc
2843 }% end of \AtBeginDocument
2844 %% {\def\sep{;}% should not be needed, but just in case
2845 %% \pdfinfo{% order of these dictionary keys should not matter
2846 %% \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
2847 %% \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi
2848 %% \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi
2849 %% \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
2850 %% \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi
2851 %% /CreationDate(\pdfx@convDate)%
2852 %% /Creator(\pdfx@CreatorTool)%
2853 %% /GTS_PDFEVersion(PDF/E-1\xmp@Conformance:\xmp@ReleaseDate)%
2854 %% \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
2855 %% /ModDate(D:\pdfx@convDate)%
2856 %% /Producer(\pdfx@Producer)%
2857 %% \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi
2858 %% \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
100
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2859 %% /Trapped/False%
2860 %% }% end of PDF/E info
2861 %% }% end of scope for \sep
2862 \else %% PDF/A
2863 \def\pdfx@confA{a}%
2864 \def\pdfx@confB{b}%
2865 \def\pdfx@confU{u}%
2866 \expandafter\def\expandafter\xmp@conf\expandafter
2867 {\csname pdfx@conf\xmp@Conformance\endcsname}%
2868 \AtBeginDocument{%
2869 \def\PDF@FinishDoc{% ??? What uses this ???
2870 \begingroup
2871 \def\sep{; }% should not be needed, but just in case
2872 \pdfinfo{%
2873 \ifx\pdfx@pdfTitle\@empty\else /Title(\pdfx@pdfTitle)^^J\fi
2874 \ifx\pdfx@pdfAuthor\@empty\else /Author(\pdfx@pdfAuthor)^^J\fi
2875 \ifx\pdfx@pdfSubject\@empty\else /Subject(\pdfx@pdfSubject)^^J\fi
2876 \ifx\pdfx@pdfKeywords\@empty\else /Keywords(\pdfx@pdfKeywords)^^J\fi
2877 /Creator(\pdfx@CreatorTool)^^J%
2878 \ifx\@pdfcreationdate\@empty
2879 /CreationDate(D:\pdfx@convDate)%
2880 \else
2881 \ifxetex\else
2882 /CreationDate(\@pdfcreationdate)%
2883 \fi\fi
2884 \ifx\@pdfmoddate\@empty
2885 /ModDate(D:\pdfx@convDate)%
2886 \else
2887 /ModDate(\@pdfmoddate)%
2888 \fi
2889 ^^J/Producer(\pdfx@Producer)%
2890 /Trapped/False^^J%
2891 /GTS_PDFA1Version (PDF/A-\xmp@Part\xmp@conf:\xmp@ReleaseDate)%
2892 }% end of PDF/A info
2893 \endgroup %% end of scope for \sep
2894 }% end of \PDF@FinishDoc
2895 }% end of \AtBeginDocument
2896 \fi\fi
2897
2898 %%----------------------------------------------------------------------
2899 %% 2018-12-16: xmpincl needs the ifthen package
2900 %% it should be loaded outside the grouping, else biblatex may barf
2901 %%
2902 \RequirePackage{ifthen}
2903
2904 %% 2024-04-05: from July 2024 LaTeX will not allow packages to load
2905 %% within a grouping, so reorganise a bit.
2906 %%
2907 %% override the \ifpdf check of xmpincl package, inside the grouping
2908 %% after saving its current value:
2909 \let\pdfx@ifpdf\ifpdf
2910 \pdftrue
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
101
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2911 %% now load the packages, then enter the grouping:
2912 \RequirePackage{xmpincl}
2913 %%
2914 \begingroup
2915 %%% 20240405 revert the value of \ifpdf ...
2916 \pdfx@ifpdf
2917 \else
2918 %% 20240624 ... outside the grouping
2919 \aftergroup\pdffalse
2920 \fi
2921
2922 %% combine coding from xmpincl and hyperxml to support XeTeX
2923 \def\pdfx@xmpincl@xetex#1{%
2924 \IfFileExists{#1.xmp}{%
2925 \mcs@xmpincl@patchFile{#1}%
2926 \begingroup
2927 \special{pdf:fstream @pdfx@Metadata (#1.xmpi)
2928 <<
2929 /Type /Metadata
2930 /Subtype /XML
2931 >>
2932 }%
2933 \special{pdf:put @catalog
2934 <<
2935 /Metadata @pdfx@Metadata
2936 >>
2937 }%
2938 \endgroup
2939 }{%
2940 \newcommand{\mcs@xmpincl@filename}{#1.xmp}%
2941 \PackageError{xmpincl}%
2942 {The file \mcs@xmpincl@filename\space was not found}%
2943 {The file \mcs@xmpincl@filename\space The metadata file
2944 wasn't found.\MessageBreak Oops.}%
2945 }
2946 }
2947 \ifxetex
2948 \let\includexmp\pdfx@xmpincl@xetex
2949 \fi
2950
2951 %% macro provided by Leonardo E. Segovia on 2017-05-15
2953 \def\pdfx@xmpincl@luatex#1{%
2954 \IfFileExists{#1.xmp}{%
2955 \mcs@xmpincl@patchFile{#1}%
2956 \begingroup
2957 \pdfcompresslevel=0
2958 \immediate\pdfobj uncompressed stream attr {/Type /Metadata /Subtype /XML}
2959 file{#1.xmpi}%
2960 \pdfcatalog{%\pdfx@LanguageSpec
2961 /Metadata \the\pdflastobj\space 0 R}%
2962 \endgroup
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
102
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
2963 }{%
2964 \newcommand{\mcs@xmpincl@filename}{#1.xmp}%
2965 \PackageError{xmpincl}%
2966 {The file \mcs@xmpincl@filename\space was not found}%
2967 {The file \mcs@xmpincl@filename\space The metadata file
2968 wasn't found.\MessageBreak Oops.}%
2969 }
2970 }
2971 \ifluatex
2972 \let\includexmp\pdfx@xmpincl@luatex
2973 \fi
2974
2975 %%----------------------------------------------------------------------
2976 \begingroup
2977 %% 20210706 we need a pointer to unexpandable \par
2978 \expandafter\ifx\csname tex_par:D\endcsname \relax
2979 \let\pdfx@par\par
2980 \else
2981 %% using LaTeX 2021-06 or later
2982 \expandafter\let\expandafter\pdfx@par\csname tex_par:D\endcsname
2983 \fi
2984 \ifpdfx@x
2985 \ifpdfx@vt
2986 \def\xmp@template{pdfvt}%
2987 \else
2988 \def\xmp@template{pdfx}% formerly pdfx-1a
2989 \fi
2990 \else
2991 \ifpdfx@e
2992 \def\xmp@template{pdfe}%
2993 \else
2994 \def\xmp@template{pdfa}%
2995 \fi\fi
2996 \catcodè\'=12 \catcodè\<=12 \catcodè\>=12 \catcodè\?=12
2997 \catcodè\"=12 \catcodè\= 12 %% used within the template file
2998 %% patch commands from xmpincl.sty ...
2999 \def\pdfx@xmpinclStart{% supply byte-order marker
3000 <?xpacket begin='^^ef^^bb^^be' id='W5M0MpCehiHzreSzNTczkc9d' ?> %
3001 }%
3002 \def\pdfx@xmpinclStartAlt{% no byte-order marker
3003 <?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' ?> %
3004 }%
3005 \def\pdfx@xmpinclEnd{% allow XMP packet to be writable
3006 <?xpacket end='w'?> %
3007 }%
3008 \let\mcs@xmpinclStart\pdfx@xmpinclStart
3009 \let\mcs@xmpinclStartAlt\pdfx@xmpinclStartAlt
3010 \ifpdfx@noBOM % don't use the byte-order marker
3011 \let\mcs@xmpinclStart\pdfx@xmpinclStartAlt
3012 \fi
3013 \let\mcs@xmpinclEnd\pdfx@xmpinclEnd
3014 %% ... preventing their redefinition
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
103
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
3015 \def\newcommand#1#2{}%
3016 %%
3017 %% \def\pdfx@endeval{%
3018 %% \noexpand \TE@setvaltrue \noexpand \else
3019 %% \noexpand \TE@setvalfalse \noexpand \fi
3020 %% \noexpand \TE@negatefalse \noexpand \fi}%
3021 %% \let\TE@endeval\pdfx@endeval
3022 \ifluatex\else\ifxetex\else
3023 \inputencoding{8bit}%
3024 \fi\fi
3025 \makeatletter
3026 \def\cf@encoding{L8U}\fontencoding{L8U}%
3027 \providecommand{\ifnot@empty}[2]{\ifx#1\@empty\relax\else#2\fi}%
3028 \pdfx@xmpmarkup
3029 \expandafter\global\expandafter
3030 \let\csname L8U-cmd\expandafter\endcsname\csname U-cmd\endcsname
3031 \def\cf@encoding{L8U}\fontencoding{L8U}%
3032 \providecommand{\ifnot@empty}[2]{\ifx#1\@empty\relax\else#2\fi}%
3033 \obeyspaces%
3034 %% beware 128 space characters -- for padding end of XMP packet
3035 \gdef\paddingline{ }%
3036 \typeout{Using XMP template file: \[email protected]}%
3037 %% 20210706 ensure \par is unexpandable
3038 \let\par\pdfx@par
3039 \includexmp{\xmp@template}%
3040 \endgroup
3041 %%%
3042 %%
3043 %% revert active characters to previous encoding
3044 %%
3045 \ifpdf@activechars
3046 \global\let ^^c0\pdfx@save@co
3047 \global\let ^^c1\pdfx@save@ci
3048 \global\let ^^c2\pdfx@save@cii
3049 \global\let ^^c3\pdfx@save@ciii
3050 \global\let ^^c4\pdfx@save@civ
3051 \global\let ^^c5\pdfx@save@cv
3052 \global\let ^^c6\pdfx@save@cvi
3053 \global\let ^^c7\pdfx@save@cvii
3054 \global\let ^^c8\pdfx@save@cviii
3055 \global\let ^^c9\pdfx@save@cix
3056 \global\let ^^ca\pdfx@save@ca
3057 \global\let ^^cb\pdfx@save@cb
3058 \global\let ^^cc\pdfx@save@cc
3059 \global\let ^^cd\pdfx@save@cd
3060 \global\let ^^ce\pdfx@save@ce
3061 \global\let ^^cf\pdfx@save@cf
3062 \global\let ^^d0\pdfx@save@do
3063 \global\let ^^d1\pdfx@save@di
3064 \global\let ^^d2\pdfx@save@dii
3065 \global\let ^^d3\pdfx@save@diii
3066 \global\let ^^d4\pdfx@save@div
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
104
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
3067 \global\let ^^d5\pdfx@save@dv
3068 \global\let ^^d6\pdfx@save@dvi
3069 \global\let ^^d7\pdfx@save@dvii
3070 \global\let ^^d8\pdfx@save@dviii
3071 \global\let ^^d9\pdfx@save@dix
3072 \global\let ^^da\pdfx@save@da
3073 \global\let ^^db\pdfx@save@db
3074 \global\let ^^dc\pdfx@save@dc
3075 \global\let ^^dd\pdfx@save@dd
3076 \global\let ^^de\pdfx@save@de
3077 \global\let ^^df\pdfx@save@df
3078 \global\let ^^e0\pdfx@save@eo
3079 \global\let ^^e1\pdfx@save@ei
3080 \global\let ^^e2\pdfx@save@eii
3081 \global\let ^^e3\pdfx@save@eiii
3082 \global\let ^^e4\pdfx@save@eiv
3083 \global\let ^^e5\pdfx@save@ev
3084 \global\let ^^e6\pdfx@save@evi
3085 \global\let ^^e7\pdfx@save@evii
3086 \global\let ^^e8\pdfx@save@eviii
3087 \global\let ^^e9\pdfx@save@eix
3088 \global\let ^^ea\pdfx@save@ea
3089 \global\let ^^eb\pdfx@save@eb
3090 \global\let ^^ec\pdfx@save@ec
3091 \global\let ^^ed\pdfx@save@ed
3092 \global\let ^^ee\pdfx@save@ee
3093 \global\let ^^ef\pdfx@save@ef
3094 \global\let ^^f0\pdfx@save@fo
3095 \global\let ^^f1\pdfx@save@fi
3096 \global\let ^^f2\pdfx@save@fii
3097 \global\let ^^f3\pdfx@save@fiii
3098 \fi
3099
3100 \endgroup
3101
3102 %%
3103 %% controls the color model and conversions with xcolor package
3104 %%
3105 \def\pdfx@selectcolormodel@doing #1{%% Warning
3106 \PackageWarning{pdfx}{Setting all color commands to #1,^^J%
3107 consistent with the Color Model for PDF/%
3108 \ifpdfx@x X \else \ifpdfx@e E \else A \fi\fi}%
3109 }%% 20240528 inhibit any changes
3110 \def\pdfx@selectcolormodel@done #1{%% Warning
3111 \PackageWarning{pdfx}{Color Model already set for PDF/%
3112 \ifpdfx@x X\else \ifpdfx@e E\else A\fi\fi,^^Jcannot change to #1 }%
3113 }%% 20240528 inhibit any changes
3114 %%
3115 \ifpdfx@cmyk
3116 %
3117 % this will have been done already for PDF/X
3118 %
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
105
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
3119 \PassOptionsToPackage{cmyk,hyperref}{xcolor}
3120 \def\pdfx@handlexcolor{\def\@@mod{cmyk}%
3121 \pdfx@selectcolormodel@doing{cmyk}%
3122 \selectcolormodel{cmyk}%
3123 \convertcolorsUtrue\convertcolorsDtrue
3124 \let\selectcolormodel\pdfx@selectcolormodel@done
3125 }
3126 \ifpdfx@x
3127 \else
3128 %% \AtBeginDocument{%
3129 %% \def\@linkcolor{0 1 1 0}%
3130 %% \def\@anchorcolor{0 0 0 1}%
3131 %% \def\@citecolor{1 0 1 0}%
3132 %% \def\@filecolor{.5 0 0 .5}%
3133 %% \def\@urlcolor{0 1 0 0}%
3134 %% \def\@menucolor{0 1 1 0}%
3135 %% \def\@runcolor{.5 0 0 .5}%
3136 %% \def\@linkbordercolor{0 1 1 0}%
3137 %% \def\@citebordercolor{1 0 1 0}%
3138 %% \def\@filebordercolor{.5 0 0 .5}%
3139 %% \def\@urlbordercolor{1 0 0 0}%
3140 %% \def\@menubordercolor{0 1 1 0}%
3141 %% \def\@runbordercolor{.7 0 0 .3}%
3142 %% \def\Fld@bcolor{0 0 0 0}%
3143 %% \def\Fld@bordercolor{0 1 1 0}%
3144 %% }
3145 \fi
3146 \else
3147 \PassOptionsToPackage{rgb,hyperref}{xcolor}
3148 \def\pdfx@handlexcolor{\def\@@mod{rgb}%
3149 \pdfx@selectcolormodel@doing{rgb}%
3150 \selectcolormodel{rgb}%
3151 \convertcolorsUtrue\convertcolorsDtrue
3152 \let\selectcolormodel\pdfx@selectcolormodel@done
3153 }
3154 \fi
3155 \@ifpackageloaded{xcolor}{\pdfx@handlexcolor
3156 \ifpdfx@cmyk\else\color{black}\fi}{%
3157 \AtBeginDocument{\@ifpackageloaded{xcolor}{\pdfx@handlexcolor}{}}
3158 }
3159
3160 %%----------------------------------------------------------------------
3161 %% Disable some actions in Beamer navigation
3162 \@ifclassloaded{beamer}{%
3163 \let\real@insertslidenavigationsymbol
3164 \insertslidenavigationsymbol
3165 \let\real@insertbackfindforwardnavigationsymbol
3166 \insertbackfindforwardnavigationsymbol
3167 \def\pdfx@insertslidenavigationsymbol{{%
3168 \let\Acrobatmenu\pdfx@Acrobatmenu@noaction
3169 \real@insertslidenavigationsymbol
3170 }}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
106
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
3171 \def\pdfx@insertbackfindforwardnavigationsymbol{{%
3172 \let\Acrobatmenu\pdfx@Acrobatmenu@noaction
3173 \real@insertbackfindforwardnavigationsymbol
3174 }}%
3175 \AtBeginDocument{%
3176 \ifHy@pdfa
3177 \let\insertslidenavigationsymbol
3178 \pdfx@insertslidenavigationsymbol
3179 \let\insertbackfindforwardnavigationsymbol
3180 \pdfx@insertbackfindforwardnavigationsymbol
3181 \fi}%
3182 }{}
3183
3184 %%----------------------------------------------------------------------
3185 \ifpdfx@transliterated
3186 %% support for bookmarks with transliterated input
3187 \ifxetex\let\pdf@escapehex\empty\fi % don't need it
3188 \expandafter\ifx\csname pdf@escapehex\endcsname\relax
3189 \PackageWarning{pdfx}{%
3190 Missing an implementation of \string\pdf@escapehex ^^J
3191 Translated Bookmarks cannot be generated.^^J}%
3192 \newcommand{\pdfxBookmark}[4][]{#2[#1]{#4}}%
3193 \else
3194 \def\pdfx@GeneratePdfString#1#2{%
3195 % converts a UTF-8 string to UTF-16be
3196 \StringEncodingConvert{#1}{#2}{utf8}{utf16be}%
3197 \edef#1{\string\376\string\377\pdfescapestring{#1}}%
3198 }
3199 \newtoks\pdfx@DisabledCommands
3200 \def\pdfxDisableCommands#1{%
3201 \expandafter\pdfx@DisabledCommands
3202 \expandafter{\the\pdfx@DisabledCommands#1}}
3203 \pdfxDisableCommands{%
3204 \def\80{}% else \000\( --> \000\80\050 \000\000\050
3205 \aftergroup\let\aftergroup\HyPsd@ConvertToUnicode\aftergroup\@gobble}
3206 \let\Hy@@writetorep\@@writetorep
3207 \def\pdfx@@writetorep#1#2#3#4#5{%
3208 \begingroup
3209 \pdfx@xmpunimarkup
3210 \pdfx@prebookmark
3211 \edef\pdfstringdefPreHook{%\pdfstringdefPreHook
3212 \the\pdfx@DisabledCommands}%
3213 \Hy@@writetorep{#1}{#2}{#3}{#4}{#5}%
3214 \endgroup
3215 }
3216 \newcommand{\pdfxBookmark}[4][]{%
3217 \ifx\relax#3\relax
3218 \PackageError{pdfx}{Unknown macro \string#3.
3219 A proper bookmark cannot be created}%
3220 {Proceed to process the \string#1 as usual.}%
3221 #2{#4}%
3222 \else
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
107
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
3223 \ifluatex % use the utf8 directly
3224 \let\pdfx@temp#3\relax
3225 \def\pdfx@prebookmark{%
3226 \pdfx@DisabledCommands{}%
3227 \let#3\pdfx@temp
3228 }%
3229 \else\ifxetex % use the utf8 directly
3230 \let\pdfx@temp#3\relax
3231 \def\pdfx@prebookmark{%
3232 \pdfx@DisabledCommands{}%
3233 \let#3\pdfx@temp
3234 }%
3235 \else
3236 % convert the utf8 to utf16be
3237 \pdfxBookmarkString\pdfx@temp{#3}%
3238 \fi\fi
3239 \let\@@writetorep\pdfx@@writetorep
3240 \ifx\empty#1\empty
3241 \def#3{#4}%
3242 #2{#3}%
3243 \else
3244 \def#3{#1}%
3245 #2[#3]{#4}%
3246 \fi
3247 \let\@@writetorep\Hy@@writetorep
3248 \fi
3249 \ignorespaces
3250 }
3251 %% use as: \pdfxBookmark{\section}{\sectAtitle}{...}
3252 %% use as: \pdfxBookmark[<opt-title>]{\section}{\sectAtitle}{...}
3253 %% only needed by pdfTeX --- Lua-/XeTeX use the utf8 directly
3254 \def\pdfxBookmarkString#1#2{%
3255 \pdfx@GeneratePdfString#1{#2}%
3256 \def\pdfx@prebookmark{%
3257 \pdfxDisableCommands{\let#2#1}%
3258 }%
3259 }
3260 %% use as: \pdfxBookmarkString\PdfSectA\sectAtitle
3261 %% where \sectAtitle has been defined by e.g.
3262 %% \pdfxEnableCommands{\xdef\sectAtitle{\textLGR{...}}}
3263
3264 \fi % end of \ifx\pdf@escapehex\relax
3265 \fi % end of \ifpdfx@transliterated
3266
3267 %%----------------------------------------------------------------------
3268
3269 %% disable hyperref options,
3270 %% to prevent changes that will cause an incompatibility
3271 \Hy@DisableOption{pdfauthor}%
3272 \Hy@DisableOption{pdftitle}%
3273 \Hy@DisableOption{pdfsubject}%
3274 \Hy@DisableOption{pdfcreator}%
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
108
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
3275 \Hy@DisableOption{pdfcreationdate}%
3276 \Hy@DisableOption{pdfmoddate}%
3277 \Hy@DisableOption{pdfproducer}%
3278 \Hy@DisableOption{pdfkeywords}%
3279 %% once set correctly, don't let this change
3280 \Hy@DisableOption{pdfa}\let\Hy@pdfafalse\relax\let\Hy@pdfatrue\relax
3281 \endinput
3282 %%
3283 %% End of file ̀pdfx.sty'.
7. Index
Numbers written in italic refer to the page where the corresponding entry is described; num-
bers underlined refer to the code line of the denition; numbers in roman refer to the code
lines where the entry is used.
Symbols
\" . . . . . . . . . . . . . . 715, 1166, 1370, 1925, 2997
\# . . . . . . . . . . . . . . 666, 1184, 1875, 1883, 2422
\$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
\% . . . . . . . . . . . . . . . . . 1136, 1186, 1276,
1589, 1599, 1609, 1620, 1684, 1803, 1927
\& . . . 665, 1144, 1154, 1183, 1195, 1281, 1287,
1588, 1598, 1608, 1619, 1683, 1727, 2400
\' . . . . . . . . . 1125, 1139, 1362, 1371, 1925, 2996
\( . . . . . . 1235, 1590, 1600, 1610, 1621, 1685,
1806, 1818, 1828, 1830, 1833, 1930, 3204
\) . . . . . . . . . . . . . . 1590, 1600, 1610, 1621,
1685, 1806, 1818, 1828, 1830, 1833, 1931
\+ . . . . . . . . . . . . . . . . . . . . . . . . 1362, 2257
\- . . . . . . . . . . . . . . . . . 1370, 1804, 2257, 2391
\. . . . . . . . . . . . . . . . . . . . . . 1354, 1362, 1804
\/ . . . . . . . . . . . . . . . . . . . . . 1166, 1804, 1926
\: . . 715, 1166, 1354, 1362, 1371, 1803, 2247, 2391
\< . . . . . . 665, 1152, 1166, 1282, 1370, 1926, 2996
\= . . . . . . . . . . . . . . . . . . . . . 715, 1371, 2997
\> . . 665, 1153, 1166, 1283, 1370, 1926, 2391, 2996
\? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2996
\@ . . . . . . . . . . . . . . . . . . . . . 2257, 2392, 2396
\@@writetorep . . . . . . . . . . . . 3206, 3239, 3247
\@amp . . . . . . . . . . . . . . . . . . . . . 1183, 1190
\@anchorcolor . . . . . . . . . . . . . . . . . . . 3130
\@bchar . . . . . . . . . . . . . . . . . . . . 1805, 1928
\@citebordercolor . . . . . . . . . . . . . . . . 3137
\@citecolor . . . . . . . . . . . . . . . . . . . . 3131
\@filebordercolor . . . . . . . . . . . . . . . . 3138
\@filecolor . . . . . . . . . . . . . . . . 2723, 3132
\@gobblethree . . . . . . . . . . . . . . . 2593, 2607
\@gobbletwo . . . . . . . . . . . . . . . . 2592, 2606
\@hash . . . . . . . . . . . . . . . . . . . . 1184, 1190
\@ifl@t@r . . . . . . . . . . . . . . . . . . . . . . 2304
\@linkbordercolor . . . . . . . . . . . . . . . . 3136
\@linkcolor . . . . . . . . . . . . . . . . 2725, 3129
\@menubordercolor . . . . . . . . . . . . . . . . 3140
\@menucolor . . . . . . . . . . . . . . . . . . . . 3134
\@namedef . . . . . . . . . . . . . . . . . 578, 579, 580
\@ne . . . . . . . . . . . . . . . 590, 602, 609, 615,
635, 2590, 2594, 2604, 2608, 2635, 2636, 2638
\@pctchar . . . . . . . . . . . . . . . . . . . . . . 1927
\@runbordercolor . . . . . . . . . . . . . . . . 3141
\@runcolor . . . . . . . . . . . . . . . . . . . . . 3135
\@typeset@protect . . . . . . . . . . . . . . . . 2232
\@unicode . . . . . . . 1190, 1191, 1192, 1193, 1194
\@urlbordercolor . . . . . . . . . . . . . . . . 3139
\@urlcolor . . . . . . . . . . . . . . . . . 2727, 3133
\@xp . . . . . . . . . . . . . . . 2597, 2600, 2611, 2614
\[ . . . . . . . . . . . . . . . . . . . . . . . . 1236, 1926
\␣ . . . . . . . . . . . . . . . . . . . . . 1135, 1185, 1287
\] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1926
\^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
\_ . . . . . . . . . . . . . . . . . . . . . . 666, 1588,
1598, 1608, 1619, 1683, 1727, 1803, 1925
\| . . . . . . . . . . . . . . . . . . . . . 1803, 2414, 2420
\~ . . . . . . 666, 1588, 1598, 1608, 1619, 1683, 1727
Numbers
\0 . . . . . . . . . 1290, 1291, 1292, 1929, 2265, 3204
\1 . . . . . . . . . . . . . . . . . . . . . . . . 1290, 1292
\2 . . . . . . . . . . . . . . . . . . . . . . . . 1290, 1292
\3 . . . . . . . . . . . . . . . . . 1290, 1292, 2448, 3197
\8 . . . . . . . . . . . . . . . . . . . . . . . . 1291, 3204
\9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1290
A
\a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2390
\acc@check . . . . . . . . . . . . . . . . . . . . . 2634
\accent . . . . . . . . . . . . . . . . . . . . 2566, 2568
\accent@spacefactor . . . . . . . . . . 2559, 2572
\accentclass@ . . . . . . . . . . . . . . . 2596, 2610
\AcrobatMenu . . . . . . . . . . . . . . . . . . . . 2739
\Acrobatmenu . . . . . . . . . . . . . . . . 3168, 3172
\add@accent . . . . . . . . . 2554, 2697, 2698, 2702
\AdobeMacOSdir . . . . . . . . . . . . . . 1642, 1648
\Advisory . . . . . . . . . . . . . . . . . . . 763, 1103
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
109
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\aftergroup . . . . . . . . . 1910, 2316, 2919, 3205
\afterxmp@parse . . . . . . 670, 675, 676, 732,
736, 739, 743, 746, 750, 754, 758, 763,
767, 771, 774, 779, 798, 818, 830, 850,
864, 878, 899, 921, 943, 964, 986, 1007, 1028
\AMS@mathaccentV . . . . . . . . . . . . 2585, 2648
\arbxmptrue . . . . . . . . . . . . . . . . . . 265, 281
\armSCIxmptrue . . . . . . . . . . . . . . . . 267, 283
\armxmptrue . . . . . . . . . . . . . . . 266, 267, 282
\AtBeginDvi . . . . . . . . . . . . . . . . . . . . . 529
\AtEndOfPackage . . . . . . . . . . . . . . . . . . 627
\Author . . . . . . . . . . . . . 732, 1075, 1122, 1142
\AuthoritativeDomain . . . . . . . . . . 743, 1114
B
\backslash . . . . . . . . . . 1139, 1189, 1280, 2460
\BaseURL . . . . . . . . . . . . . . . . . . . . . . . 1104
\begin . . . . . . . . . . . . . . . . . . . . . . . . 1355
\box . . . . . . . . . . . . . . . . . . . . . . . . . . 2638
C
\c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2390
\CATCODE . . . . . . . . . . . . . . . . 2387, 2390, 2391
\catcodes . . . . . . . . . . . . . . . . . . . . . . . 719
\CertificateURL . . . . . . . . . . . . . . . . . 1109
\cf@encoding . . . . . 1289, 2230, 2452, 3026, 3031
\close@pdflink . . . . . . . . . . . . . . . . . . 2738
\Color . . . . . . . . . . . . . . . . . . . . . . . . 1645
\color . . . . . . . . . . . . . . . . . . . . . . . . 3156
\colorpro@cmyk@identifier . . . . . . . . . 1790
\colorpro@cmyk@intent . . . . . . . . . . . . 1789
\colorpro@cmyk@profile . . . . . . . . . . . . 1788
\colorpro@cmyk@registry . . . . . . . . . . . 1791
\colorpro@rgb@identifier . . . . . . . . . . 1783
\colorpro@rgb@info . . . . . . . . . . . . . . . 1784
\colorpro@rgb@profile . . . . . . . . 1778, 1782
\colorpro@rgb@registry . . . . . . . . . . . . 1785
\Contributor . . . . . . . . . . . . . . . . . 750, 1100
\convertcolorsDtrue . . . . . . . . . . 3123, 3151
\convertcolorsUtrue . . . . . . . . . . 3123, 3151
\Copyright . . . . . . . . . . . . . . . 712, 713, 1085
\copyright 1131, 1140, 1194, 1196, 1284, 1287, 2400
\Copyrighted . . . . . . . . . . . . . . . . . . . . 1088
\CopyrightURL . . . . . . . . . . . . . . . 1086, 1117
\Coverage . . . . . . . . . . . . . . . . . . . . . . 1098
\CoverDate . . . . . . . . . . . . . . . . . . . . . 1084
\CoverDisplayDate . . . . . . . . . . . . . . . . 1083
\creationdate . . . . . . . . . . . . . . . 1350, 1351
\Creator . . . . . . . . . . . . . . . . . . . . . . . 1115
\CreatorTool . . . . . . . . . . . . . . . . 1079, 1115
\cyrKOIxmptrue . . . . . . . . . . . . . . . . 260, 276
\cyrxmptrue . . . . . . . . . . . . . . . 259, 260, 275
D
\D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2247
\Date . . . . . . . . . . . . . . . . . . . . . . 746, 1101
\DeclareFontEncoding@ . . . . . . . 624, 630, 649
\DeclareFontEncoding@saved . . . . . . . . . . 649
\DeclareUnicodeCharacter . . . . . 625, 629, 648
\devxmptrue . . . . . . . . . . . . . . . . . . 268, 284
\dimen . . . 505, 506, 507, 508, 509, 510, 511, 512
\dimen@ . . . . . . . . . 2562, 2564, 2565, 2632, 2633
\directlua . . . . . . . . . . . . . . . . . . . . . . 447
\displaystyle . . . . . . . . . . . . . . . . . . . 2579
\documentclass . . . . . . . . . . . . . . . . . . . 326
\Doi . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
\dospecials . . . . . . . . . . . . . . . . . . . . 1353
\Drivers . . . . . . . . . . . . . . . . . . . . . . . 1645
E
\empty . . . . . . . . . . . . . 1220, 2298, 3187, 3240
\ENDGROUP . . . . . . . . . . . . . . . . . . 2388, 2393
\everymath . . . . . . . . . . . . . . . . . . . . . 2577
\EveryShipout . . . . . . . . . . . . . . . . . 531, 534
\ExecuteOptions . . . . . . . . . . . . . . . . . . 296
\externalICCprofilesfalse . . . . . . . . . 1883
\externalICCprofilestrue . . . . . . . . . . 1875
F
\Firstpage . . . . . . . . . . . . . . . . . . . . . 1093
\Fld@bcolor . . . . . . . . . . . . . . . . . . . . 3142
\Fld@bordercolor . . . . . . . . . . . . . . . . 3143
\fmtversion . . . . . . . . . . . . . . . . . . . . 2304
\fontencoding . . . . . . . . 2230, 2452, 3026, 3031
\frozen@everymath . . . . . . . . . . . . 2593, 2607
G
\GDEF . . . . . . . . . . . . . . . . . . . . . 2389, 2392
\grkLGRxmptrue . . . . . . . . . . . . . . . . 262, 278
\grkxmptrue . . . . . . . . . . . . 261, 262, 271, 277
H
\hbox 1906, 2451, 2558, 2565, 2579, 2580, 2581,
2582, 2591, 2605, 2630, 2631, 2634, 2635
\hebHEBxmptrue . . . . . . . . . . . . . . . . 264, 280
\hebxmptrue . . . . . . . . . . . . . . . 263, 264, 279
\hmode@bgroup . . . . . . . . . . . . . . . . . . . 2556
\hmode@start@before@group . . . . . . . . . 2557
\hss . . . . . . . . . . . . . . . . . . . . . . 2565, 2566
\Hy@@writetorep . . . . . . . . . . 3206, 3213, 3247
\Hy@bookmarksfalse . . . . . . . . . . . . . . . 2740
\Hy@colorlink . . . . . . . . . . . . 2723, 2725, 2727
\Hy@endcolorlink . . . . . . . . . . . . . . . . 2729
\Hy@pdfafalse . . . . . . . . . . . . . . . . . . . 3280
\Hy@pdfatrue . . . . . . . . . . . . . . . . . . . . 3280
\Hy@StartlinkName . . . . . . . . . . . . . . . . 2737
\Hy@VerboseLinkStop . . . . . . . . . . . . . . 2729
\Hy@xspace@end . . . . . . . . . . . 2723, 2725, 2727
\hyper@linkend . . . . . . . . . . . . . . . . . . 2736
\hyper@linkfile . . . . . . . . . . . . . . . . . 2733
\hyper@linkstart . . . . . . . . . . . . . . . . 2735
\hyper@linkurl . . . . . . . . . . . . . . . . . . 2734
\HyPsd@ConvertToUnicode . . . . . . . . . . . 3205
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
110
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
I
\Identifier . . . . . . . . . . . . . . 767, 771, 1105
\IeC . . . . . . . . . . . . . . . . . . . . . . 1203, 1209
\if . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
\ifarbxmp . . . . . . . . . . . . . . . . . . . 247, 1250
\ifarmSCIxmp . . . . . . . . . . . . 249, 396, 403, 408
\ifarmxmp . . . . . . . . . . . . . . . . . . . 248, 1251
\ifcyrKOIxmp . . . . . . . . . . . . . . . 242, 394, 402
\ifcyrxmp . . . . . . . . . . . . . . . . . . . . . . . 241
\ifdefined . . . . . . . . . . . . . . . . . 1349, 1350
\ifdevxmp . . . . . . . . . . . . . . . . . . . 250, 1252
\ifdim . . . . . . . . . . . . . . . . . . . . . 499, 2561
\ifexternalICCprofiles . . . . . . . . . . . . 1865
\ifgrkLGRxmp . . . . . . . . 244, 390, 400, 406, 2546
\ifgrkxmp . . . . . . . . . . . . . . . . . . . 243, 1253
\ifhebHEBxmp . . . . . . . . . . . . 246, 392, 401, 407
\ifhebxmp . . . . . . . . . . . . . . . . . . . 245, 1254
\ifHy@pdfa . . . . . . . . . . . . . . . . . 1481, 3176
\ifipaxmp . . . . . . . . . . . . . . . . . . . . . . . 254
\iflatEXTxmp . . . . . . . . . . . . . . . . . . . . . 252
\iflatLATxmp . . . . . . . . . . . 253, 388, 399, 1230
\ifluatex 301, 437, 567, 1301, 1507, 1515, 1526,
1534, 1544, 1552, 1900, 2225, 2301,
2453, 2462, 2489, 2499, 2971, 3022, 3223
\ifmathxmp . . . . . . . . . . . . . . . 255, 386, 1234
\ifmmode . . . . . . . . . . . . . . . . . . . 2589, 2603
\ifno@iccprofile 18, 1622, 1826, 1871, 1939, 2122
\ifpdf . . . . . . . . . . . . . . . . . 2907, 2909, 2915
\ifpdf@activechars . . . . . . . . 2315, 2321, 3045
\ifpdfx@cmyk . . . . . 1573, 1977, 2121, 3115, 3156
\ifpdfx@custom . . . . . . . . . . . 1574, 2017, 2120
\ifpdfx@e . . . . . . . . . . . . . . . . . 15, 1522,
1894, 2140, 2170, 2815, 2991, 3108, 3112
\ifpdfx@hluatex . . . . . . . . . . . . . 1458, 1462
\ifpdfx@hyperrefloaded . . . . . . . . 1475, 1493
\ifPDFX@inaccent . . . . . . . . . . . . 2553, 2564
\ifpdfx@luacheck@needed . . . . . . . . . . 31, 300
\ifpdfx@noBOM . . . . . . . . . . . . . . . . . 13, 3010
\ifpdfx@noerr . . . . . . . . . . . 19, 52, 1372, 2071
\ifpdfx@nopdfinfo . . . . . . . . . 385, 2479, 2508
\ifpdfx@noXMPdata . . . . . . . . . . . . . . . . 1866
\ifpdfx@omitcharset . . . . . . . . . . . . . 20, 375
\ifpdfx@pdfmark . . . . . . . . . . . . . . . . . . 433
\ifpdfx@sep@infield@ . . . . . . . . . . . . . .
. . . . . . . . . 2379, 2518, 2521, 2527, 2530
\ifpdfx@transliterated . . . . . 405, 3185, 3265
\ifpdfx@tryoldprofiles . . . . . 1767, 1807, 1820
\ifpdfx@ua . . . . . . . . . . . . . . . . . . . . 16, 306
\ifpdfx@useactivespaces . . . . . . . . . . . .
. . . . 294, 667, 783, 1167, 1208, 1213, 1262
\ifpdfx@vt . . . . . . . . . . . 17, 2778, 2802, 2985
\ifpdfx@x 14, 306, 356, 487, 1445, 1503, 1575,
1870, 1938, 2732, 2984, 3108, 3112, 3126
\ifvnmxmp . . . . . . . . . . . . . . . . . . . . . . . 251
\ifxetex . . . . . . . . . . . . . . . 416, 450, 513,
528, 547, 567, 1299, 1412, 1505, 1513,
1524, 1532, 1542, 1550, 1565, 1900,
1952, 1993, 2051, 2091, 2107, 2131,
2161, 2193, 2225, 2301, 2455, 2465,
2491, 2501, 2539, 2547, 2707, 2716,
2757, 2829, 2881, 2947, 3022, 3187, 3229
\includexmp . . . . . . . . . . . . . 2948, 2972, 3039
\inputencodingname . 619, 620, 628, 640, 647, 651
\insertbackfindforwardnavigationsymbol
. . . . . . . . . . . . . . . . . . . . . 3166, 3179
\insertslidenavigationsymbol . . . 3164, 3177
\ipaxmptrue . . . . . . . . . . . . . . . . . . 270, 289
\ISBN . . . . . . . . . . . . . . . . . . . . . . . . . 1090
\Issue . . . . . . . . . . . . . . . . . . . . . . . . 1082
J
\Journalnumber . . . . . . . . . . . . . . . . . . 1096
\Journaltitle . . . . . . . . . . . . . . . . . . . 1095
K
\Keywords . . . . . . . . . . . . . . . 736, 1076, 1142
L
\Language . . . . . . . . . . . . . . . . . . . 739, 1078
\LastDeclaredEncoding . . . . . . . . . . 623, 650
\Lastpage . . . . . . . . . . . . . . . . . . . . . . 1092
\latEXTxmptrue . . . . . . . . . . 257, 258, 270, 286
\latLATxmptrue . . . . . . . . . . . . . . . . 258, 287
\liixu@enableIeC . . . . . . . . . . . . 1208, 1218
\liixu@enablenumberline . . . . . . . 1213, 1219
\liixu@IeC . . . . . . . . . . . . . . . . . 1205, 1209
\liixu@IeCi . . . . . . . . . . . . . . . . 1205, 1206
\liixu@IeCii . . . . . . . . . . . . . . . . 1206, 1207
\liixu@numberline . . . . . . . . . . . . 1210, 1214
\liixu@numberlinei . . . . . . . . . . . 1210, 1211
\liixu@numberlineii . . . . . . . . . . 1211, 1212
\LIIXUcancelfontswitches . . . . . . . . . . 1232
\LIIXUmaparabicletters . . . . . . . . . . . . 1250
\LIIXUmaparmenianletters . . . . . . . . . . 1251
\LIIXUmapdevaccents . . . . . . . . . . . . . . 1252
\LIIXUmapgreekletters . . . . . . . . . . . . 1253
\LIIXUmaphebrewletters . . . . . . . . . . . . 1254
\LIIXUmapisomathgreek . . . . . . . . . . . . 1238
\LIIXUmaplatinchars . . . . . . . . . . . . . . 1231
\LIIXUmapmathaccents . . . . . . . . . . . . . 1237
\LIIXUmapmathalphabets . . . . . . . . . . . . 1248
\LIIXUmapmatharrowsA . . . . . . . . . . . . . 1239
\LIIXUmapmathoperatorsA . . . . . . . . . . . 1240
\LIIXUmapmathoperatorsB . . . . . . . . . . . 1241
\LIIXUmapmiscmathsymbolsA . . . . . . . . . 1242
\LIIXUmapmiscmathsymbolsB . . . . . . . . . 1245
\LIIXUmapsupparrowsA . . . . . . . . . . . . . 1243
\LIIXUmapsupparrowsB . . . . . . . . . . . . . 1244
\LIIXUmapsuppmathoperators . . . . . . . . . 1246
\LIIXUmapTeXnames . . . . . . . . . . . . . . . . 1223
\LIIXUmapunimathgreek . . . . . . . . . . . . 1247
\LIIXUscriptcommands . . . . . . . . . . . . . 1221
\LIIXUtipacommands . . . . . . . . . . . . . . . 1222
\LTX@add@accent . . . . . . . . . . . . . 2554, 2697
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
111
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\luaescapestring . . . . . . . . . . . . . 447, 2454
\luatexbanner . . . . . . . . . . . . . . . . . . . . 467
M
\m . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2390
\m@ne . . . . . . . . . . . . . . . . . . . . . . . . . 2627
\macc@a . . . . . . . . . . . . . . . . . . . . . . . . 2650
\macc@adjust . . . . . . . . . . . . . . . . 2640, 2641
\macc@code . . . . . . . . . . . . . . . . . 2638, 2640
\macc@depth . 2590, 2594, 2604, 2608, 2627, 2628
\macc@kerna . . . . . . . . . . . . . . . . 2633, 2638
\macc@kernb . . . . . . . . . . . . . . . . . . . . 2637
\macc@nested . . . . . . . . . . . . . . . . 2597, 2611
\macc@nucleus . . . . 2595, 2598, 2609, 2612, 2629
\macc@palette . . . . . . . . . . . . . . . . . . . 2626
\macc@skewchar . . . . . . . . . . . . . . 2630, 2631
\macc@style . . . . . . . . . . . . . . . . 2625, 2626
\macc@test . . . . . . . . . . . . . . . . . 2591, 2605
\macc@tmp . . . . . . . . . . . 2590, 2593, 2604, 2607
\MacOSColordir . . . . . . . . . . . . . . . . . . 1640
\MacOSLibraryColordir . . . . . . . . . . . . 1641
\mathaccent . . . . . . . . . 2596, 2610, 2638, 2640
\mathaccentV . . . . . 2589, 2591, 2605, 2648, 2649
\mathchardef . . . . . . . . . . . . . . . . . . . . 2559
\mathchoice . . . . . . . . . . . . . . . . . . . . 2578
\mathsurround . . . . . . . . . . . . . . . . . . . 2576
\mathxmptrue . . . . . . . . . . . . . . . . . . 271, 290
\mcs@xmpincl@filename . . . . . . . . . . . . .
. . . . . 2940, 2942, 2943, 2964, 2966, 2967
\mcs@xmpincl@patchFile . . . . . . . . 2925, 2955
\mcs@xmpinclEnd . . . . . . . . . . . . . . . . . 3013
\mcs@xmpinclStart . . . . . . . . . . . . 3008, 3011
\mcs@xmpinclStartAlt . . . . . . . . . . . . . 3009
\mdfivesum . . . . . . . . . . . . . . . . . . . . . . 456
\MessageBreak . . . . . . . . . . . . . . . 2944, 2968
\MMversionID . . . . . . . . . . . . . . . . . . . . 1110
N
\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1357
\newcount . . . . . . . . . . . . . . . . . 35, 36, 39, 44
\newtoks . . . . . . . . . . . . . . . . 1259, 1479, 3199
\Nickname . . . . . . . . . . . . . . . . . . . . . . 1106
\no@iccprofiletrue . . . . . . . . . . 137, 146,
149, 158, 161, 170, 173, 182, 185, 215, 220
\nonmatherr@ . . . . . . . . . . . . . . . . 2600, 2614
\numberline . . . . . . . . . . . . . . . . 1214, 1215
O
\o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2390
\OBJ@CMYK . . . . . . . . . . . . . . . . . . . 1989,
1994, 1996, 1999, 2010, 2132, 2136, 2147
\OBJ@CustomDir . . . . . . . . . . . . . . 2031, 2033
\OBJ@CustomFile . . . . . . 2035, 2052, 2053, 2058
\OBJ@ICC . . . . . . . . . . . . 1954, 1956, 1961, 1972
\OBJ@RGB . . . . . . . . . . . . . . . . 2085, 2094,
2097, 2103, 2108, 2113, 2162, 2166, 2176
\OBJ@URLs . . . . . . . . . . . 1949, 1953, 1955, 1959
\Org . . . . . . . . . . . . . . . . . . . . . . . . . . 1116
\Owner . . . . . . . . . . . . . . . . . . . . . 779, 1108
P
\p@ . . . . . . . . . . . . . . . . . . . . . . . . . 507, 511
\PackageWarning . . . . . . . . . . . . 52, 1373,
1425, 1796, 2072, 2438, 3106, 3111, 3189
\PackageWarningNoLine . . . . . . . . . . . . 1454
\paddingline . . . . . . . . . . . . . . . . . . . . 3035
\paperheight . . . . . . . . . . . . . . . . . . 503, 509
\paperwidth . . . . . . . . . . . . . . . . . . 502, 505
\PassOptionsToPackage . 1439, 1440, 3119, 3147
\pdf@activecharstrue . . . . . . . . . . . . . 2316
\pdf@compress@xetex . . . . . . . . . 423, 429, 430
\pdf@escapehex . . . . . . . 2439, 3187, 3190, 3264
\pdf@escapestring . . . . . . . . . . . . . . 445, 448
\pdf@escapestring@byte . . . . . . . . . . 446, 448
\pdf@mdfivesum . . . . . . . . . . . . . . . . . . . 444
\pdf@minorversion@xetex . . . . . . . . . 348, 349
\pdfcompresslevel . . . . . . . . . . . . . 429, 2957
\pdfescapestring . . . . . . . . . . . . . . . . .
. . . . . . 445, 2448, 2454, 2511, 2533, 3197
\pdffalse . . . . . . . . . . . . . . . . . . . . . . 2919
\pdfglyphtounicode . . . . . . . . 2548, 2657,
2658, 2659, 2660, 2661, 2662, 2663,
2664, 2665, 2666, 2667, 2668, 2669,
2670, 2671, 2672, 2673, 2675, 2676,
2677, 2678, 2680, 2681, 2682, 2683,
2684, 2685, 2686, 2687, 2688, 2689,
2690, 2691, 2692, 2693, 2712, 2713, 2714
\pdfmajorversion . . . . . . . . . . . . . . . 39,
40, 48, 323, 324, 329, 330, 334, 342, 351
\pdfomitcharset . . . . . . . . . . . . . . . 376, 380
\pdfpagesattr . . . . . . . . . . . . . . 425, 521, 536
\PdfSectA . . . . . . . . . . . . . . . . . . . . . . 3260
\pdfstringdefPreHook . . . . . . . . . . . . . 3211
\pdfsuppresswarningdupmap . . . . . . . 557, 559
\pdftrue . . . . . . . . . . . . . . . . . . . . . . . 2910
\pdfx@@writetorep . . . . . . . . . . . . 3207, 3239
\pdfx@Acrobatmenu@noaction . . . . . . . . . .
. . . . . . . . . . . . . 2730, 2739, 3168, 3172
\pdfx@actives . . . . . . . . 1148, 1155, 1182, 1275
\PDFX@add@accent . . . . . . . . . 2555, 2698, 2705
\pdfx@Advisory . . . . . . . . . . . . . . . 761, 1103
\pdfx@amp . . . . . . . 1149, 1156, 1191, 1195, 1281
\pdfx@AMS@mathaccentV . . . . . . . . 2584, 2602
\pdfx@aprofile@rgbdefault . . . . . 1729, 1733
\pdfx@Author . . . . . . 730, 1075, 2787, 2847, 2850
\pdfx@AuthoritativeDomain . . . . . . 742, 1114
\pdfx@backslash . . . . . . . . . . . . . 1279, 1280
\pdfx@bannerstring . . . . . . . . . . . . . 472, 477
\pdfx@catalog@xetex . . . . . . . . . . . . 420, 427
\pdfx@check@accents . . . . . . . 2696, 2717, 2719
\pdfx@check@lang . . . . . . . . . 1168, 1170, 1176
\pdfx@checkfor@sep . . . . . . . . . . . 1916, 1918
\pdfx@close@pdflink . . . . . . . . . . 2729, 2738
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
112
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\pdfx@cmyk@identifier . . . . . . . . . . . . .
. 1673, 1674, 1712, 1968, 1986, 2007, 2146
\pdfx@cmyk@info . . . . . . . . . . . . . . . . . 1717
\pdfx@cmyk@intent . . 1671, 1672, 1711, 1967,
1969, 1985, 1987, 2006, 2008, 2145, 2148
\pdfx@cmyk@profile . . . . . . . . 1667, 1669,
1734, 1978, 1996, 1998, 2128, 2133, 2135
\pdfx@cmyk@profilename . . . . . 1668, 2013, 2152
\pdfx@cmyk@registry . . . . . . . . . . . . . . .
. 1675, 1676, 1713, 1970, 1988, 2009, 2149
\pdfx@CMYKcolorprofiledir . . . . . . . . . .
. . . . . . . . . . . . . 1634, 1667, 2015, 2154
\pdfx@cmykfalse . . . . . . . . . . 1663, 1698, 2158
\pdfx@cmyktrue . . . . . . . 1576, 1678, 2068, 2127
\pdfx@colorprofile@dict . . . . 1944, 1956, 1960
\pdfx@colorprofiledir . . . . . . . . . . . . 1670
\pdfx@colorURL . . . . . . . . . . . . . . 1716, 1943
\pdfx@colorURL@dict . . . . . . . 1943, 1955, 1958
\PDFX@combiningchars@unicode . . . 2656, 2709
\pdfx@confA . . . . . . . . . . . . . . . . . . . . 2863
\pdfx@confB . . . . . . . . . . . . . . . . . . . . 2864
\pdfx@confU . . . . . . . . . . . . . . . . . . . . 2865
\pdfx@Contributor . . . . . . . . . . . . . 748, 1100
\pdfx@convDate 2277, 2281, 2755, 2761, 2788,
2807, 2827, 2833, 2851, 2855, 2879, 2885
\pdfx@ConvertUTFtoBE . . . . . . . . . . . . . .
. . . . . . 2442, 2450, 2482, 2485, 2490,
2492, 2495, 2500, 2502, 2505, 2520, 2529
\pdfx@Copyright . . . . . . . . . . . . . 1046, 1085
\pdfx@Coverage . . . . . . . . . . . . . . 1051, 1098
\pdfx@CoverDisplayDate . . . . . . . . 1056, 1083
\pdfx@CreatorTool . . . . . . . . . . . . . . . . .
. . . . . 2509, 2753, 2789, 2825, 2852, 2877
\pdfx@custom@colornames . . . . . . . 1695, 2044
\pdfx@custom@filespec . . . . . 2046, 2054, 2056
\pdfx@custom@identifier . . . . . . . 1691, 2027
\pdfx@custom@numcolors . . . . . . . . 1693, 2043
\pdfx@custom@profile . . . . . . . . . . 1690,
2019, 2028, 2036, 2042, 2054, 2057, 2065
\pdfx@custom@registry . . . . . 1692, 2029, 2030
\pdfx@customcolorprofiledir . . . . . . . . .
. . . . . . . . . 1689, 2019, 2054, 2057, 2066
\pdfx@customtrue . . . . . . . . . . . . . . . . 1699
\pdfx@Date . . . . . . . . . . . . . . . . . . 745, 1101
\pdfx@DeclareFontEncoding@ . . . . . . . 624, 630
\pdfx@DeclareUnicodeCharacter . 625, 629, 648
\pdfx@DisabledCommands . . . . . . . . . . . . .
. . . . . 3199, 3201, 3202, 3212, 3226, 3232
\pdfx@docinfo@xetex . . . . . . . . . . . . 419, 426
\pdfx@DOSTRIP@MACRO . . . . . . . . . . 2392, 2396
\pdfx@efalse . . . . . . . . . . . . . . . . . . . . . . 15
\pdfx@eightchars . . . . . . . . . . . . 1394, 1403
\pdfx@eightofnine . . . . . . . . . . . . 1392, 1393
\pdfx@EnableCommands . . . . . . . . . 1263, 1265
\pdfx@encodingfile . . . . . . . . . 462, 644, 2229
\pdfx@endeval . . . . . . . . . . . . . . . 3017, 3021
\pdfx@endparse 1916, 1919, 2380, 2381, 2517, 2526
\pdfx@eprofile@graydefault . . . . . 1730, 1735
\pdfx@ErrorWarning . 51, 58, 103, 120, 308, 2702
\pdfx@etrue . . . . . . . . . . . . . . . . . . 191, 195
\pdfx@everypage@xetex . . . . . . . 514, 530, 532
\pdfx@external@profile . . . . . . . . . . . . 1736
\pdfx@externalprofile . . . . . 1623, 1709, 1828
\pdfx@externalprofile@gobble . . . 1625, 1720
\pdfx@extprofile . . . . . . . . . . . . 1710, 1948
\pdfx@extprofiles@store . . . . 1873, 1874, 1876
\pdfx@extraAdvisory . . . . . . . . . . . . 763, 931
\pdfx@extraAuthor . . . . . . . . . . . . . . 732, 786
\pdfx@extraAuthoritativeDomain . . . 743, 859
\pdfx@extraContributor . . . . . . . . . . 750, 838
\pdfx@extraDate . . . . . . . . . . . . . . . 746, 873
\pdfx@extraIdentifier . . . . . . . . . . 767, 952
\pdfx@extraKeywords . . . . . . . . . . . . 736, 806
\pdfx@extraLanguages . . . . . . . . . . . 739, 825
\pdfx@extraNickname . . . . . . . . . . . . 771, 974
\pdfx@extraOwner . . . . . . . . . . . . . 779, 1016
\pdfx@extraRelation . . . . . . . . . . . . 754, 887
\pdfx@extraThumbnails . . . . . . . . . . 774, 995
\pdfx@extraType . . . . . . . . . . . . . . . 758, 908
\pdfx@ffourchars . . . . . . . . . . . . 1396, 1404
\pdfx@findUUID . . . . . . . 1391, 1417, 1420, 1432
\pdfx@fouroffive . . . . . . . . . . . . 1395, 1396
\pdfx@GeneratePdfString . . . . . . . . . . . .
. 2441, 2444, 2469, 2494, 2504, 3194, 3255
\pdfx@getDay . . . . . . . . . . . . . . . . 2250, 2251
\pdfx@getHour . . . . . . . . . . . . . . . 2251, 2252
\pdfx@getMin . . . . . . . . . . . . . . . . 2252, 2253
\pdfx@getMonth . . . . . . . . . . . . . . 2248, 2250
\pdfx@getSec . . . . . . . . . . . . . . . . 2253, 2254
\pdfx@getTzbranch . 2259, 2260, 2261, 2262, 2263
\pdfx@getTzend . . . . . . . 2266, 2268, 2271, 2280
\pdfx@getTzerror . . . . . . . . . . . . . . . . 2262
\pdfx@getTZh . . . . . . . . . . . . . . . . 2254, 2255
\pdfx@getTzh@branches . . . . . . . . 2255, 2258
\pdfx@getTzminus . . . . . . . . . . . . 2261, 2271
\pdfx@getTznozone . . . . . . . . . . . . 2259, 2266
\pdfx@getTzplus . . . . . . . . . . . . . 2260, 2268
\pdfx@getYear . . . . . . . . . . . . . . . 2246, 2248
\pdfx@gray@identifier . . . . . . . . . . . . 1705
\pdfx@gray@intent . . . . . . . . . . . . . . . . 1704
\pdfx@gray@profile . . . . . . . . . . . 1703, 1735
\pdfx@gray@registry . . . . . . . . . . . . . . 1706
\pdfx@gt . . . . . . . . . . . . 1149, 1158, 1193, 1283
\pdfx@handlexcolor . . . . 3120, 3148, 3155, 3157
\pdfx@hluatexfalse . . . . . . . . . . . . . . . 1459
\pdfx@hluatextrue . . . . . . . . . . . . . . . . 1459
\pdfx@hyperrefloadedtrue . . . . . . . . . . 1476
\pdfx@iccversion . . . . . 1694, 1715, 1946, 2041
\pdfx@Identifier . . . . . . . . . . . . . 765, 1105
\pdfx@ifpdf . . . . . . . . . . . . . . . . 2909, 2916
\PDFX@inaccenttrue . . . . . . . . . . . . . . . 2558
\pdfx@inputencodingname . . . . . . 627, 628, 647
\pdfx@insert@sep . . . . . . . . . . . . . . 783,
784, 791, 796, 811, 816, 829, 843, 848,
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
113
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
863, 877, 892, 897, 914, 919, 936, 941,
957, 962, 979, 984, 1000, 1005, 1021, 1026
\pdfx@insertbackfindforwardnavigationsymbol
. . . . . . . . . . . . . . . . . . . . . 3171, 3180
\pdfx@insertslidenavigationsymbol 3167, 3178
\pdfx@JournalTitle . . . . . . . . . . . 1059, 1095
\pdfx@Keywords . . . . 734, 1076, 2806, 2849, 2854
\pdfx@Language . . . . . . . . . . . . . . . 738, 1078
\pdfx@LanguageSpec . . . . . . . . . . . . . . . .
. . . . . 1914, 1921, 1934, 2002, 2061, 2960
\pdfx@LastDeclaredEncoding . . . . . . . 623, 650
\pdfx@laststring . . . . . . . . . . . . 1401, 1407
\pdfx@linkfile@pdfX . . . . . . . . . . 2722, 2733
\pdfx@linkstart@pdfX . . . . . . . . . 2724, 2735
\pdfx@linkurl@pdfX . . . . . . . . . . . 2726, 2734
\pdfx@localcommands . . . . . . . . . . 1073, 1904
\pdfx@lt . . . . . . . . . . . . 1149, 1157, 1192, 1282
\pdfx@luacheck@neededtrue . . . . . . . . . . . 32
\pdfx@luatest . . . . 1462, 1472, 1484, 1489, 1498
\pdfx@macc@a . . . . . . . . . . . . . . . . 2623, 2650
\pdfx@mainLanguage . . . . . . . . 1915, 1918, 1921
\pdfx@majorversion . . 36, 48, 233, 324, 330, 334
\pdfx@mapline@xetex . . . . . . . . . 421, 422, 428
\pdfx@mathaccentV . . . . . . . . . . . . 2575, 2649
\pdfx@mdfivesum . 444, 453, 456, 459, 1391, 1411
\pdfx@mheight 510, 515, 516, 517, 522, 523, 524, 525
\pdfx@minorversion . . . . . . . . . . . . . . 35,
49, 102, 109, 112, 115, 119, 126, 129,
132, 136, 139, 142, 145, 148, 151, 154,
157, 160, 163, 166, 169, 172, 175, 178,
181, 184, 187, 213, 218, 223, 226, 227,
228, 229, 230, 231, 234, 320, 325, 331, 335
\pdfx@mwidth 506, 515, 516, 517, 522, 523, 524, 525
\pdfx@next . . . . . . . . . . 2255, 2259, 2260, 2261
\pdfx@Nickname . . . . . . . . . . . . . . . 769, 1106
\pdfx@noBOMfalse . . . . . . . . . . . . . . . 13, 238
\pdfx@noBOMtrue . . . . . . . . . . . . . . . . . . 237
\pdfx@noerrtrue . . . . . . . . . . . . . . . . . . . 22
\pdfx@nopdfinfotrue 386, 388, 390, 392, 394, 396
\pdfx@noXMPdatatrue . . . . . . . . . . . . . . 1910
\pdfx@numcoords . . . . . . 1991, 1996, 1998,
2034, 2039, 2090, 2093, 2096, 2110,
2112, 2129, 2133, 2135, 2160, 2163, 2165
\pdfx@omitcharsetfalse . . . . . . . . . 65, 72, 75
\pdfx@omitcharsettrue 64, 78, 81, 84, 87, 90, 93
\pdfx@outcatalog@dict . . . . . 1933, 2206, 2208
\pdfx@outintent@dict . . 1964, 1982, 2023,
2062, 2081, 2099, 2138, 2168, 2196, 2200
\pdfx@outintentref . . . . . . . . 2195, 2196, 2198
\pdfx@outintents . 1936, 2194, 2197, 2198, 2201
\pdfx@Owner . . . . . . . . . . . . . . . . . 777, 1108
\pdfx@pageattr@xetex . . . . . . . . 418, 530, 532
\pdfx@pages@xetex . . . . . . . . . . . . . . 417, 425
\pdfx@par . . . . . . . . . . . . . . . 2979, 2982, 3038
\pdfx@parsebackslash . . . . . . . . . 2463, 2466
\pdfx@parseend . . . . . . . . . . . . . . . . . . 2432
\pdfx@parseforsep . . . . . . . . . 2381, 2517, 2526
\pdfx@parsemacro . . . . . . . . . . . . . . . . 2433
\pdfx@parseout . . . . . . . . . . . . . . . . . . 2433
\pdfx@pdfAE@opts@luatex . . . . . . . . . . . .
. 1484, 1489, 1498, 1527, 1535, 1545, 1553
\pdfx@pdfAE@opts@pdfmark . . . 1485, 1490, 1499
\pdfx@pdfAE@opts@pdftex . . . . . . . . . . . .
. 1482, 1487, 1496, 1529, 1537, 1547, 1555
\pdfx@pdfAE@opts@xetex . . . . . . . . . . . . .
. 1483, 1488, 1497, 1525, 1533, 1543, 1551
\pdfx@pdfAuthor . . 2475, 2520, 2750, 2822, 2874
\pdfx@pdfKeywords . 2478, 2529, 2752, 2824, 2876
\pdfx@pdfmarkup . . . . . . . . . . . . . 1274, 2474
\pdfx@pdfSubject . . . . . . . . . 2477, 2485,
2500, 2502, 2504, 2505, 2751, 2823, 2875
\pdfx@pdfTitle . . . . . . . . . . . 2476, 2482,
2490, 2492, 2494, 2495, 2749, 2821, 2873
\pdfx@pdfX@opts@luatex . . . . . 1471, 1508, 1516
\pdfx@pdfX@opts@pdftex . . . . . 1465, 1510, 1518
\pdfx@pdfX@opts@xetex . . . . . 1468, 1506, 1514
\pdfx@pprofile@externaldefault . 1731, 1736
\pdfx@prebookmark . . . . . 3210, 3225, 3231, 3256
\pdfx@Producer . . . . . . . . . . . . . . . 1040,
1080, 2510, 2765, 2808, 2837, 2856, 2889
\pdfx@profile@checksum . 1696, 1718, 1945, 2040
\pdfx@profileCS . . . . . . . . . . . . . 1714, 1947
\pdfx@profiles@store . . . . . . 1881, 1882, 1884
\pdfx@PublicationType . . . . . . . . 1069, 1094
\pdfx@Publisher . . . . . . . . . . . . . 1043, 1097
\pdfx@RawInputEncoding . . . . . . . . . . 584, 642
\pdfx@Relation . . . . . . . . . . . . . . . 752, 1102
\pdfx@restoreencoding . . . . . . . . . . 598, 627
\pdfx@rgb@identifier . . 1659, 2084, 2102, 2175
\pdfx@rgb@info . . . . . . . 1660, 2086, 2104, 2177
\pdfx@rgb@profile . . 1657, 1733, 2089, 2093,
2096, 2110, 2112, 2126, 2159, 2163, 2165
\pdfx@rgb@profilename . . . . . 1658, 2117, 2182
\pdfx@rgb@registry . . . . 1661, 2087, 2105, 2178
\pdfx@RGBcolorprofiledir 1631, 1657, 2118, 2183
\pdfx@save@ca . . . . . . . . . . . . . . . 2332, 3056
\pdfx@save@cb . . . . . . . . . . . . . . . 2333, 3057
\pdfx@save@cc . . . . . . . . . . . . . . . 2334, 3058
\pdfx@save@cd . . . . . . . . . . . . . . . 2335, 3059
\pdfx@save@ce . . . . . . . . . . . . . . . 2336, 3060
\pdfx@save@cf . . . . . . . . . . . . . . . 2337, 3061
\pdfx@save@ci . . . . . . . . . . . . . . . 2323, 3047
\pdfx@save@cii . . . . . . . . . . . . . . 2324, 3048
\pdfx@save@ciii . . . . . . . . . . . . . 2325, 3049
\pdfx@save@civ . . . . . . . . . . . . . . 2326, 3050
\pdfx@save@cix . . . . . . . . . . . . . . 2331, 3055
\pdfx@save@co . . . . . . . . . . . . . . . 2322, 3046
\pdfx@save@cv . . . . . . . . . . . . . . . 2327, 3051
\pdfx@save@cvi . . . . . . . . . . . . . . 2328, 3052
\pdfx@save@cvii . . . . . . . . . . . . . 2329, 3053
\pdfx@save@cviii . . . . . . . . . . . . 2330, 3054
\pdfx@save@da . . . . . . . . . . . . . . . 2348, 3072
\pdfx@save@db . . . . . . . . . . . . . . . 2349, 3073
\pdfx@save@dc . . . . . . . . . . . . . . . 2350, 3074
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
114
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\pdfx@save@dd . . . . . . . . . . . . . . . 2351, 3075
\pdfx@save@de . . . . . . . . . . . . . . . 2352, 3076
\pdfx@save@df . . . . . . . . . . . . . . . 2353, 3077
\pdfx@save@di . . . . . . . . . . . . . . . 2339, 3063
\pdfx@save@dii . . . . . . . . . . . . . . 2340, 3064
\pdfx@save@diii . . . . . . . . . . . . . 2341, 3065
\pdfx@save@div . . . . . . . . . . . . . . 2342, 3066
\pdfx@save@dix . . . . . . . . . . . . . . 2347, 3071
\pdfx@save@do . . . . . . . . . . . . . . . 2338, 3062
\pdfx@save@dv . . . . . . . . . . . . . . . 2343, 3067
\pdfx@save@dvi . . . . . . . . . . . . . . 2344, 3068
\pdfx@save@dvii . . . . . . . . . . . . . 2345, 3069
\pdfx@save@dviii . . . . . . . . . . . . 2346, 3070
\pdfx@save@ea . . . . . . . . . . . . . . . 2364, 3088
\pdfx@save@eb . . . . . . . . . . . . . . . 2365, 3089
\pdfx@save@ec . . . . . . . . . . . . . . . 2366, 3090
\pdfx@save@ed . . . . . . . . . . . . . . . 2367, 3091
\pdfx@save@ee . . . . . . . . . . . . . . . 2368, 3092
\pdfx@save@ef . . . . . . . . . . . . . . . 2369, 3093
\pdfx@save@ei . . . . . . . . . . . . . . . 2355, 3079
\pdfx@save@eii . . . . . . . . . . . . . . 2356, 3080
\pdfx@save@eiii . . . . . . . . . . . . . 2357, 3081
\pdfx@save@eiv . . . . . . . . . . . . . . 2358, 3082
\pdfx@save@eix . . . . . . . . . . . . . . 2363, 3087
\pdfx@save@eo . . . . . . . . . . . . . . . 2354, 3078
\pdfx@save@ev . . . . . . . . . . . . . . . 2359, 3083
\pdfx@save@evi . . . . . . . . . . . . . . 2360, 3084
\pdfx@save@evii . . . . . . . . . . . . . 2361, 3085
\pdfx@save@eviii . . . . . . . . . . . . 2362, 3086
\pdfx@save@fi . . . . . . . . . . . . . . . 2371, 3095
\pdfx@save@fii . . . . . . . . . . . . . . 2372, 3096
\pdfx@save@fiii . . . . . . . . . . . . . 2373, 3097
\pdfx@save@fo . . . . . . . . . . . . . . . 2370, 3094
\pdfx@selectcolormodel@doing 3105, 3121, 3149
\pdfx@selectcolormodel@done . 3110, 3124, 3152
\pdfx@sep . . . . . . . . . . . 1168, 1170, 1197, 1286
\pdfx@sep@infield@false . . . . . . . . . . . 2382
\pdfx@sep@infield@true . . . . . . . . . . . . 2383
\pdfx@sep@lang . . . . . . . . . . . . . . 1173, 1179
\pdfx@sep@nolang . . . . . . . . . . . . 1172, 1179
\pdfx@setCMYKcolorprofiledir 1633, 1637, 1651
\pdfx@setcmykprofile . . 1601, 1666, 1788, 1816
\pdfx@setcolorprofiledir . . . . . . . . . . 1648
\pdfx@setcustomprofile . . . . . 1686, 1688, 1700
\pdfx@setgrayprofile . . . . . . 1611, 1702, 1822
\pdfx@setRGBcolorprofiledir . 1630, 1636, 1652
\pdfx@setrgbprofile . . . 1591, 1656, 1782, 1810
\pdfx@sfourchars . . . . . . . . . . . . 1398, 1405
\pdfx@sfouroffive . . . . . . . . . . . . 1397, 1398
\pdfx@StartlinkName@pdfX . . . . . . 2728, 2737
\pdfx@strip@macro . . . . . . . . . . . . . . . . 2394
\pdfx@Subject . . . . 1037, 1077, 2809, 2848, 2857
\pdfx@temp . . . . . . . 2461, 2463, 2464, 2466,
2467, 2469, 3224, 3227, 3230, 3233, 3237
\pdfx@tempii . . . . . . . . . . . . . . . . 2447, 2448
\pdfx@testbannerstr . . . . . . . . . . . . 474, 477
\pdfx@tfourchars . . . . . . . . . . . . 1400, 1406
\pdfx@tfouroffive . . . . . . . . . . . . 1399, 1400
\pdfx@theight . . . . . . . . . . . . . . 512, 518, 526
\pdfx@Thumbnails . . . . . . . . . . . . . 773, 1107
\pdfx@Title . . . . . . 723, 1074, 2810, 2846, 2858
\pdfx@tmp . . . . . . . . . . . . . . . . . . 1644, 1647
\pdfx@tmpstring . . . . . . . . . . . . . 1391, 1392
\pdfx@tmptoks . . . . . . . . 1479, 1480, 1494, 1501
\pdfx@topdfstring . . . . . 2290, 2296, 2509, 2510
\pdfx@transliteratedtrue . . . . . 406, 407, 408
\pdfx@tryoldprofilesfalse . . . . . . . . . 1793
\pdfx@tryoldprofilestrue . . . . . . 1779, 1800
\pdfx@twidth . . . . . . . . . . . . . . . 508, 518, 526
\pdfx@Type . . . . . . . . . . . . . . . . . . 756, 1111
\pdfx@uafalse . . . . . . . . . . . . . . . . . . . . . 16
\pdfx@uatrue . . . . . . . . . . . . . . . . . . 202, 204
\pdfx@useactivespacesfalse . . . . . . . . . . 291
\pdfx@useactivespacestrue . . . . . . . . . .
. . . . . . . . . . 291, 399, 400, 401, 402, 403
\pdfx@utfencodingname . . . . . . . 583, 619, 640
\pdfx@uuid . . . . . . . . . . 1403, 1418, 1421, 1433
\pdfx@vtfalse . . . . . . . . . . . . . . . . . . . . . 17
\pdfx@vttrue . . . . . . . . . . . . . . . 209, 214, 219
\pdfx@xDay . . . . . . . . . . . . . . 2251, 2281, 2283
\pdfx@xfalse . . . . . . . . . . . . . . . . . . . . .
. 14, 70, 73, 76, 79, 82, 85, 88, 91, 191, 195
\pdfx@xHour . . . . . . . . . . . . . 2252, 2281, 2284
\pdfx@xMin . . . . . . . . . . . . . . 2253, 2282, 2284
\pdfx@xMonth . . . . . . . . . . . . . 2250, 2281, 2283
\pdfx@xmp@checklang . . . . . . . . . . . . 716, 720
\pdfx@xmp@strictlang . . . . . . . . . . . 718, 721
\pdfx@xmpincl@luatex . . . . . . . . . 2953, 2972
\pdfx@xmpincl@xetex . . . . . . . . . . 2923, 2948
\pdfx@xmpinclEnd . . . . . . . . . . . . 3005, 3013
\pdfx@xmpinclStart . . . . . . . . . . . 2999, 3008
\pdfx@xmpinclStartAlt . . . . . 3002, 3009, 3011
\pdfx@xmpmarkup . . 1181, 2224, 2233, 2458, 3028
\pdfx@xmpunimarkup . . . . . . . . . . . . . . . .
. . . . . 1198, 1217, 1293, 2223, 2459, 3209
\pdfx@xprofile@cmykdefault . . . . . 1728, 1734
\pdfx@xSec . . . . . . . . . . . . . . 2254, 2282, 2284
\pdfx@xtrue . . . . . . . . . 100, 107, 110, 113,
116, 124, 127, 130, 134, 137, 140, 143,
146, 149, 152, 155, 158, 161, 164, 167,
170, 173, 176, 179, 182, 185, 209, 214, 219
\pdfx@xTzh . . . . . . 2267, 2269, 2272, 2282, 2284
\pdfx@xTzm 2267, 2269, 2270, 2272, 2273, 2282, 2284
\pdfx@Xvn@message . . . . . . . . . 57, 160, 172, 184
\pdfx@xYear . . . . . . . . . . . . . 2248, 2281, 2283
\pdfxBookmark . . . . . . . . 3192, 3216, 3251, 3252
\pdfxBookmarkString . . . . . . . 3237, 3254, 3260
\pdfxcreation . . . . . . . . . . . . . . . . . . . 1426
\pdfxDisableCommands . . . . . . 3200, 3203, 3257
\pdfxEnableCommands . . . . . . . . . . 1260, 3262
\pdfxProducer . . . . . . . . . . . . . . . . . . . 1306
\pdfxsafeforxmp@toks . . . . . . . . . . . . . .
. . . . . . . . . 1199, 1259, 1266, 1267, 1294
\pdfxSetCMYKcolorProfileDir . . . . 1651, 1654
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
115
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\pdfxSetColorProfileDir . . . . . . . . . . . 1654
\pdfxSetRGBcolorProfileDir . . . . . . . . . 1652
\phantom . . . . . . . . . . . . . . . . 2585, 2607, 2629
\Producer . . . . . . . . . . . . . . . . . . . . . . 1080
\protect . . . . . . . . . . . . . . . . . . . . . . . 2232
\providecommand . . . . . . . . . . . . . . . . . .
. . . . . 1640, 1641, 1642, 1646, 3027, 3032
\PublicationType . . . . . . . . . . . . . . . . 1094
\Publisher . . . . . . . . . . . . . . 1097, 1116, 1142
R
\r . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2390
\raise . . . . . . . . . . . . . . . . . . . . . . . . 2565
\real@insertbackfindforwardnavigationsymbol
. . . . . . . . . . . . . . . . . . . . . 3165, 3173
\real@insertslidenavigationsymbol 3163, 3169
\Relation . . . . . . . . . . . . . . . . . . . 754, 1102
S
\scriptscriptstyle . . . . . . . . . . . . . . . 2582
\scriptstyle . . . . . . . . . . . . . . . . . . . . 2581
\sectAtitle . . . . . 3251, 3252, 3260, 3261, 3262
\section . . . . . . . . . . . . . . . . . . . 3251, 3252
\select@group . . . . . . . . . . . . . . . 2593, 2607
\selectcolormodel . . . . . 3122, 3124, 3150, 3152
\sep . . . . . 783, 784, 1142, 1197, 1285, 1286,
1916, 1919, 2214, 2236, 2377, 2381,
2400, 2517, 2526, 2741, 2747, 2783,
2813, 2819, 2841, 2844, 2861, 2871, 2893
\setbox . . . . . . . . . . . . . . . . . . . . . 1906,
2451, 2471, 2558, 2579, 2580, 2581,
2582, 2591, 2605, 2630, 2631, 2634, 2635
\setCMYKcolorprofile . . . . . . 1594, 1596, 1896
\setcmykcolorprofile . . . . . . . . . . . . . 1679
\setCUSTOMcolorprofile . . . . . . . . . . . . 1681
\setEXTERNALprofile . . . . . . . 1614, 1617, 1719
\setGRAYcolorprofile . . 1604, 1606, 1707, 1897
\setRGBcolorprofile . . . 1584, 1586, 1664, 1887
\shellescape . . . . . . . . . . . . . . . . . . . . 1360
\show . . . . . . . . . . . . . . 412, 415, 638, 909, 926
\showthe . . . . . . . . . . . . . . . . . . . . . . . . 634
\Source . . . . . . . . . . . . . . . . . . . . . . . . 1099
\spacefactor . . . . . . . . . . . . . . . . 2559, 2572
\Spool . . . . . . . . . . . . . . . . . . . . . . . . 1644
\stockheight . . . . . . . . . . . . . . . . . . . . . 503
\stockwidth . . . . . . . . . . . . . . . . . . 499, 502
\StringEncodingConvert . . . . . . . . 2446, 3196
\strip@pt . . . . . . . . . . . . . . 506, 508, 510, 512
\Subject . . . . . . . . . . . . . . . . . . . . 711, 1077
\System . . . . . . . . . . . . . . . . . . . . . . . . 1644
T
\TE@endeval . . . . . . . . . . . . . . . . . . . . 3021
\TE@negatefalse . . . . . . . . . . . . . . . . . 3020
\TE@setvalfalse . . . . . . . . . . . . . . . . . 3019
\TE@setvaltrue . . . . . . . . . . . . . . . . . . 3018
\tempa . . . . . . . . . . . . . . . . . . . . . . . . 1367
\tempb . . . . . . . . . . . . . . . . . . . . 1366, 1367
\tempc . . . . . . . . . . . . . . . . . . . . 1365, 1366
\textbackslash . . . . . . . . . . . . . . . . . . 2460
\TextCopyright . . . . . . . . . . . 1144, 1196, 1284
\textdisplaymath . . . . . . . . . . . . . . . . 1236
\textinlinemath . . . . . . . . . . . . . . . . . 1235
\textLF . . . . . . . . . . . . . . . . . . . . 1212, 1215
\textLGR . . . . . . . . . . . . . . . . . . . . . . . 3262
\textstyle . . . . . . . . . . . . . . . . . . . . . 2580
\thepdfmajorversion . . . . . . . . . . . . . . . 342
\thepdfminorversion . . . . . . . . . . . . . . .
. 193, 197, 343, 347, 348, 360, 363, 364,
550, 1467, 1470, 1473, 1483, 1484, 1485,
1488, 1489, 1490, 1497, 1498, 1499, 1566
\Thumbnails . . . . . . . . . . . . . . . . . 774, 1107
\Title . . . . . . . . . . . . . . . . . 710, 1074, 1122
\toka . . . . . . . . . . . . . . . . . . 2290, 2292, 2293
\tokb . . . . . . . . . . . . . . . . . . . . . 2290, 2292
\tracingall . . . . . . . . . . . . . . . . . . . . . 618
\tw@ . . . . . . . . . . . . . . . . . . . . . . 2631, 2632
\Type . . . . . . . . . . . . . . . . . . . . . . 758, 1111
U
\unDefiNeD . . . . . . . . . . . . . . . . . . . . . 2717
\URLlink . . . . . . . . . . . . . . . . . . . . . . . 1091
\use@mathgroup . . . . . . . . . . . . . . 2592, 2606
\UseRawInputEncoding . . . . . . . . . . . 594, 638
V
\vnmxmptrue . . . . . . . . . . . . . . . 269, 285, 288
\Volume . . . . . . . . . . . . . . . . . . . . . . . . 1081
\vphantom . . . . . . . . . . . . . . . . . . 2566, 2568
W
\WebStatement . . . . . . . . . . . . . . . . . . . 1117
\Windows . . . . . . . . . . . . . . . . . . . . . . . 1644
\WindowsColordir . . . . . . . . . . . . . . . . 1647
X
\x . . . . . . . . . . . . . . . . . . . . . 1367, 1384, 1386
\xmp@@Author . . . . . . . . . . . . . . . . 2234, 2235
\xmp@@Copyright . . . . . . . . . . . . . 2237, 2238
\xmp@@Keywords . . . . . . . . . . . 2239, 2240, 2242
\xmp@Advisory . . . . . . . . . . . . . . . . . . . .
. . . 764, 934, 936, 939, 941, 945, 947, 1339
\xmp@Author . . . . . . . . . . . . . . . . . . . . .
733, 789, 791, 794, 796, 800, 802, 1310,
2214, 2234, 2235, 2514, 2517, 2520, 2522
\xmp@AuthoritativeDomain . . . . . . . . . . .
. . . . . . . . . 744, 861, 863, 866, 868, 1338
\xmp@BaseURL . . . . . . . . . . . . . . . . 1104, 1340
\xmp@CertificateURL . . . . . . . . . . 1109, 1345
\xmp@checklang . . . . . . . . . . . . . . . . . . . 720
\xmp@conf . . . . . . . . . . . . . . . . . . 2866, 2891
\xmp@Conformance . . . . . . . . . . 26, 71, 74,
77, 80, 83, 86, 89, 92, 101, 108, 111, 114,
117, 118, 125, 128, 131, 135, 138, 141,
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
116
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
144, 147, 150, 153, 156, 159, 162, 165,
168, 171, 174, 177, 180, 183, 186, 192,
196, 210, 216, 221, 307, 313, 2769, 2771,
2775, 2792, 2794, 2798, 2839, 2853, 2867
\xmp@Contributor . . . . . . . . . . . . . . . . .
. . . 751, 841, 843, 846, 848, 852, 854, 1331
\xmp@convDate . . . . . . . . . . . . . . . 2278, 2283
\xmp@convertDate . . . . . . . . . . . . 2246, 2280
\xmp@Copyright . . . . . . . 1048, 1318, 2237, 2238
\xmp@Copyrighted . . . . . 1049, 1087, 1088, 1319
\xmp@CopyrightURL . . . . . . . . . 1086, 1320, 1321
\xmp@Coverage . . . . . . . . . . . . . . . 1053, 1332
\xmp@CoverDate . . . . . . . . . . . . . . 1084, 1317
\xmp@CoverDisplayDate . . . . . . . . 1058, 1316
\xmp@CreatorTool . 1079, 1308, 1569, 1570, 2509
\xmp@Date . . . . . . . 747, 875, 877, 880, 882, 1333
\xmp@docid . . . . . . . . . . . . . . . . . 1416, 1421
\xmp@Doi . . . . . . . . . . . . . . . . . . . 1089, 1322
\xmp@doparse . . . . . . . . . . . . . . . . . . 668, 671
\xmp@extraAdvisory . . . . . . . . . . . . . 947, 949
\xmp@extraAuthor . . . . . . . . . . . . . . 802, 804
\xmp@extraAuthoritativeDomain . . . . 868, 870
\xmp@extraContributor . . . . . . . . . . 854, 856
\xmp@extraDate . . . . . . . . . . . . . . . . 882, 884
\xmp@extraIdentifier . . . . . . . . . . . 968, 970
\xmp@extraKeywords . . . . . . . . . . . . . 822, 823
\xmp@extraLanguages . . . . . . . . . . . . 834, 835
\xmp@extraNickname . . . . . . . . . . . . . 990, 992
\xmp@extraOwner . . . . . . . . . . . . . 1032, 1034
\xmp@extraRelation . . . . . . . . . . . . . 903, 905
\xmp@extraThumbnails . . . . . . . . . 1011, 1013
\xmp@extraType . . . . . . . . . . . . . . . . 925, 928
\xmp@Firstpage . . . . . . . . . . . . . . 1093, 1326
\xmp@Identifier . . . . . . . . . . . . . . . . . .
. . . 768, 955, 957, 960, 962, 966, 968, 1341
\xmp@instid . . . . . . . . . . . . . . . . 1428, 1433
\xmp@ISBN . . . . . . . . . . . . . . . . . . 1090, 1323
\xmp@Issue . . . . . . . . . . . . . . . . . 1082, 1315
\xmp@Journalnumber . . . . . . . . . . . 1096, 1329
\xmp@JournalTitle . . . . . . . . . . . . . . . . 1062
\xmp@Journaltitle . . . . . . . . . . . . . . . . 1328
\xmp@Keywords . . . . . . . . . . . . . . . . . 737,
809, 811, 814, 816, 820, 822, 1311, 2214,
2239, 2240, 2241, 2523, 2526, 2529, 2531
\xmp@lang@Advisory . . . . . . . . . . . . . 704, 762
\xmp@lang@Author . . . . . . . . . . . . . . 686, 731
\xmp@lang@Contributor . . . . . . . . . . 697, 749
\xmp@lang@Copyright . . . . . . . . . . . 693, 1047
\xmp@lang@Coverage . . . . . . . . . . . . 696, 1052
\xmp@lang@CoverDisplayDate . . . . . . 700, 1057
\xmp@lang@CreatorTool . . . . . . . . . . . . . 689
\xmp@lang@Default . . . . . . . . . . . . . . . . .
. . . . . . . 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697,
698, 700, 701, 702, 704, 705, 706, 707, 717
\xmp@lang@Identifier . . . . . . . . . . . 705, 766
\xmp@lang@Issue . . . . . . . . . . . . . . . . . . 692
\xmp@lang@JournalNumber . . . . . . . . . . . . 702
\xmp@lang@JournalTitle . . . . . . . . . 701, 1060
\xmp@lang@Keywords . . . . . . . . . . . . . 687, 735
\xmp@lang@Nickname . . . . . . . . . . . . . 706, 770
\xmp@lang@Owner . . . . . . . . . . . . . . . 707, 778
\xmp@lang@Producer . . . . . . . . . . . . 690, 1041
\xmp@lang@PublicationType . . . . . . 694, 1070
\xmp@lang@Publisher . . . . . . . . . . . 695, 1044
\xmp@lang@Relation . . . . . . . . . . . . . 698, 753
\xmp@lang@Subject . . . . . . . . . . . . . 688, 1038
\xmp@lang@Title . . . . . . . . . . . . . . . 685, 724
\xmp@lang@Type . . . . . . . . . . . . . . . . . . . 757
\xmp@lang@Volume . . . . . . . . . . . . . . . . . 691
\xmp@Language . . . . . . . . . . . . . . . . . . . .
. 740, 827, 829, 832, 834, 1313, 1917, 1918
\xmp@Lastpage . . . . . . . . . . . . . . . 1092, 1325
\xmp@Nickname . . . . . . . . . . . . . . . . . . . .
. . . 772, 977, 979, 982, 984, 988, 990, 1342
\xmp@Org . . . . . . . . . . . . . . . . . . . . . . . 1337
\xmp@Owner . . . . . . . . . . . . . . . . . . . 780,
1019, 1021, 1024, 1026, 1030, 1032, 1344
\xmp@parse . . . . . . . . . . 657, 663, 725, 733,
737, 740, 744, 747, 751, 755, 759, 764,
768, 772, 775, 780, 804, 823, 835, 856,
870, 884, 905, 928, 949, 970, 992, 1013,
1034, 1039, 1042, 1045, 1048, 1053,
1058, 1062, 1071, 1079, 1081, 1082,
1084, 1086, 1088, 1089, 1090, 1091,
1092, 1093, 1096, 1099, 1104, 1109, 1110
\xmp@Part . . . . . . . . . . . 25, 70, 73, 76, 79,
82, 85, 88, 91, 100, 107, 110, 113, 116,
124, 127, 130, 134, 138, 140, 143, 147,
150, 152, 155, 159, 162, 164, 167, 171,
174, 176, 179, 183, 186, 192, 196, 210,
216, 221, 310, 2767, 2771, 2772, 2774,
2775, 2790, 2794, 2795, 2797, 2798, 2891
\xmp@PDFUA . . . . . . . . . . . . . . . . 201, 203, 205
\xmp@Producer 1042, 1300, 1302, 1304, 1306, 2510
\xmp@PublicationType . . . . . . 1061, 1071, 1327
\xmp@Publisher . . . . . . . . . . . 1045, 1336, 1337
\xmp@Relation . . . . . . . . . . . . . . . . . . . .
. . . 755, 890, 892, 895, 897, 901, 903, 1334
\xmp@ReleaseDate . . . 27, 71, 74, 77, 80, 83,
86, 89, 92, 101, 108, 111, 114, 117, 118,
125, 128, 131, 135, 138, 141, 144, 147,
150, 153, 156, 159, 162, 165, 168, 171,
174, 177, 180, 183, 186, 192, 196, 211,
217, 222, 541, 2768, 2769, 2772, 2776,
2791, 2792, 2795, 2799, 2839, 2853, 2891
\xmp@Source . . . . . . . . . . . . . . . . 1099, 1335
\xmp@strictlang . . . . . . . . . . . . . . . . . . 721
\xmp@Subject . . . . . . . . . . . . . 1039, 1312,
2484, 2485, 2498, 2500, 2502, 2504, 2505
\xmp@template 2986, 2988, 2992, 2994, 3036, 3039
\xmp@Thumbnails . . . . . . . . . . . . . . . . . .
775, 998, 1000, 1003, 1005, 1009, 1011, 1343
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
117
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
\xmp@Title . . . . . . . . . . . . . . . 725, 1309,
2481, 2482, 2488, 2490, 2492, 2494, 2495
\xmp@Type . . . . . . . . . . . . . . . . . . . . 759,
909, 912, 914, 917, 919, 923, 925, 926, 1330
\xmp@UAlevel . . . . . . . . . . . . . . . . . . 203, 205
\xmp@URL . . . . . . . . . . . . . . . . . . . 1091, 1324
\xmp@Volume . . . . . . . . . . . . . . . . 1081, 1314
\xmp@vtConformance . . 211, 217, 222, 2780, 2804
\xmp@vtPart . . . . . . . 210, 216, 221, 2780, 2804
\xmp@WebStatement . . . . . . . . . . . . . . . . 1321
\xmpMM@VersionID . . . . . . . . . . . 212, 215, 220
\xmpMM@versionID . . . . . . . . . . . . . . . . 1110
Z
\Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2257
8. Change History
v1.00
Initial commit to the CVS.
v1.01
glyphtounicode-cmr.tex included with the package.
v1.3
Fix copyright in .xmp les.
v1.5.4
Fixed timezone bug; Unicode support; more PDF variants; added color proles.
v1.5.5
Support for PDF/X-4p and PDF/X-5pg with external color proles.
v1.5.6
Suppressed ‘dummy-space’ font warning; removed spurious ‘?’ in XMP packets; improved
handling of Color Proles; ensure \Hy@pdfatrue when building PDF/A, for link ags;
properly enables xcolor conversion of color models.
v1.5.7
Removed UTF-8 characters that appear in the documentation only, within comments in the
package source, but result in a validation failure. Language support in XMP metadata.
Added macros for Windows and Mac system color prole directories.
v1.5.8
MediaBox, TrimBox, etc. derived from the \paperheight, \paperwidth. Improved language
support, incl. KOI8-R encoded cyrillics, Armenian OT6, and LGR Greek encoding, incl.
polytonic Greek. All the encodings Latin-1–9 are supported for upper 8-bit characters.
Fixed the quoted le-name problem, evident with LuaT
E
X. Method to generate correct
bookmarks with non-active (transliterated) input. Added support for XeL
A
T
E
X,
improvements with LuaT
E
X. Updated documentation.
v1.5.82
Adjusted to changes in the L
A
T
E
X core, aecting macros for composite commands; incl.
\textsuperscript and others.
v1.5.83
Improved support for XeL
A
T
E
X and LuaL
A
T
E
X.
v1.5.84
Fully expand options for hyperref. Better support for extended IPA letters and modiers.
Adjusted release versions and dates.
v1.5.85
Fixed bugs, and fully implemented L8U as a pseudo-encoding; renamed L8U les into the form
*-penc.def.
v1.6
Added XMP support for PDF/UA-1. Added more Metadata elds and Language support. Default
RGB and CMYK proles now require the colorprofiles.sty package. Added le
CallasColorProfiles.tex. Revised glyphtounicode.sty to use variation selectors, altered
maps to PUA codepoints; added more glyphs via glyphtounicode-ntx.tex. Support for
8-bit Hebrew encodings, some Arabic and Devanagari. Updated documentation, incl. for
L
A
T
E
X changes.
River Valley Technologies, http://www.river-valley.com
JWRA 34, Jagathy, Trivandrum 695014, India
118
Version: 1.6.5f/2024/07/01
Contacts:
[cvr,thanh]@river-valley.org,
Generation of PDF/X- and PDF/A-
compliant PDFs with pdfT
E
X— pdfx.sty
C. V. Radhakrishnan, Hàn Thê
́
Thành, Ross Moore and Peter
Selinger
QUICK LINKS
Introduction
Usage
Installing
Multilingual and Technical
Considerations
Bibliography
References
Implementation
Index
Change History
v1.6.1
Fixed issue with ifthen package; improved Metadata with LuaT
E
X and XeT
E
X. Flexibility with
page boxes for PDF/X.
v1.6.2
Fixed passing of options to xcolor, and some glyphtounicode values.
v1.6.3
Fixed encoding issues; support for new \pdfomitcharset primitive; reference to veraPDF
validation software; additions to glyphtounicode-ntx.tex.
v1.6.4
Added check and warning with luatex for whether \pdfminorversion can be changed; ensure
correct \catcode for input characters up to 31, when reading .xmpdata le; disabled
patched \mathaccentV due to incompatibility with wide base expressions.
v1.6.5
Support for \Nickname as Metadata command; ensure \par is unexpandable when processing
XMP metadata.
v1.6.5a
Added option pdf20 for future need with PDF 2.0; support for \pdfmajorversion; support for
Memoir’s \stockwidth and \stockheight dimen registers.
v1.6.5b
Avoid loading xmpincl package from within a T
E
X grouping.
v1.6.5c
Avoid loading stringenc package from within a T
E
X grouping.
v1.6.5d
Adjust for non-zero \stockwidth only; prevent changes to xcolor options after use.
v1.6.5e
Ensure \pdfmajorversion and \pdfminorversion are both dened and set correctly. Updated
documentation; added new Bibliography entries and revised URL links.
v1.6.5f
Reset \ifpdf properly; support \creationdate with XeT
E
X. Revised Glossary layout.