@@ -17,7 +17,63 @@ use LaTeXML::Package;
1717
1818RequirePackage(' ifthen' );
1919
20- # Basically, the effects of hyperxmp are already built
21- # into the LaTeXML binding for hyperref.
20+ # macro to pass alternate language entries
21+ # TODO support entries in multiple languages
22+ # TODO pdfmetalang should affect *following* entries, not all of them
23+ Let(' \XMPLangAlt' , ' \@gobbletwo' );
24+
25+ # macros for including commas in comma-separated lists
26+ # TODO implement comma-separated lists splitting
27+ Let(' \xmpquote' , ' \relax' );
28+ DefMacroI(' \xmpcomma' , undef , ' ,' );
29+
30+ # %pdfkey_property may have already been populated by hyperref
31+ our %pdfkey_property = (%pdfkey_property ,
32+ # modify hyperref keywords to support specifying the language
33+ pdfsubject => [' dcterms:description' , ' content' , undef , 1],
34+ pdftitle => [' dcterms:title' , ' content' , undef , 1],
35+ pdfaconformance => ' ' , # pdfaid:conformance
36+ pdfapart => ' ' , # pdfaid:part
37+ pdfauthortitle => ' ' , # photoshop:AuthorsPosition
38+ pdfbookedition => [' prism:bookEdition' , ' content' , undef , 1],
39+ pdfbytes => [' prism:byteCount' , ' content' ],
40+ pdfcaptionwriter => ' ' , # photoshop:CaptionWriter
41+ pdfcontactaddress => ' ' , # Iptc4xmpCore:CiAdrExtadr
42+ pdfcontactcity => ' ' , # Iptc4xmpCore:CiAdrCity
43+ pdfcontactcountry => ' ' , # Iptc4xmpCore:CiAdrCtry
44+ pdfcontactemail => ' ' , # Iptc4xmpCore:CiEmailWork
45+ pdfcontactphone => ' ' , # Iptc4xmpCore:CiTelWork
46+ pdfcontactpostcode => ' ' , # Iptc4xmpCore:CiAdrPcode
47+ pdfcontactregion => ' ' , # Iptc4xmpCore:CiAdrRegion
48+ pdfcontacturl => ' ' , # Iptc4xmpCore:CiUrlWork
49+ pdfcopyright => [' dcterms:rights' , ' content' , undef , 1], # & xmpRights:Marked, xmpRights:WebStatement
50+ pdfdate => [' dcterms:date' , ' content' ], # (if missing, hyperxmp uses \date -- we delegate the default choice to postprocessing)
51+ pdfdocumentid => ' ' , # xmpMM:DocumentID
52+ pdfdoi => [' prism:doi' , ' content' ],
53+ pdfeissn => [' prism:eIssn' , ' content' ],
54+ pdfidentifier => [' dcterms:identifier' , ' content' ], # (if missing, hyperxmp uses the first non-empty doi, eissn, issn, isbn with prefix info:doi/ or urn:ISS(B|N): -- we delegate the default choice to postprocessing)
55+ pdfinstanceid => ' ' , # xmpMM:InstanceID
56+ pdfisbn => [' prism:isbn' , ' content' ],
57+ pdfissn => [' prism:issn' , ' content' ],
58+ pdfissuenum => [' prism:number' , ' content' ],
59+ pdflicenseurl => [' cc:licence' , ' resource' ], # xmpRights:WebStatement
60+ pdfmetadate => ' ' , # xmp:MetadataDate
61+ pdfmetalang => ' ' , # the default language of the metadata entries themselves
62+ pdfnumpages => [' prism:pageCount' , ' content' ], # xmpTPg:NPages
63+ pdfpagerange => [' prism:pageRange' , ' content' ],
64+ pdfpublication => [' prism:publicationName' , ' content' , undef , 1],
65+ pdfpublisher => [' dcterms:publisher' , ' content' ],
66+ pdfpubstatus => ' ' , # jav:journal_article_version
67+ pdfpubtype => [' prism:aggregationType' , ' content' ],
68+ pdfrendition => ' ' , # xmpMM:RenditionClass
69+ pdfsource => [' dcterms:source' , ' content' ],
70+ pdfsubtitle => [' prism:subtitle' , ' content' , undef , 1],
71+ pdftype => [' dcterms:type' , ' content' ],
72+ pdfuapart => ' ' , # pdfuaid:part
73+ pdfurl => [' prism:url' , ' content' ],
74+ pdfversionid => ' ' , # xmpMM:VersionID
75+ pdfvolumenum => [' prism:volume' , ' content' ],
76+ pdfxstandard => ' ' , # {pdfx,pdfxid}:GTS_PDFXVersion
77+ );
2278
23791;
0 commit comments