summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/hyperxmp
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-09-14 00:35:00 +0000
committerKarl Berry <karl@freefriends.org>2012-09-14 00:35:00 +0000
commita1f11c0b253215e29345a70060ea16c46dd8536e (patch)
treecaa8921a5fcc6a72a9a207603e5e9c92e24e6b0a /Master/texmf-dist/tex/latex/hyperxmp
parentc10f0604c0627b56b4126da3a23d4088647d8f13 (diff)
hyperxmp (13sep12)
git-svn-id: svn://tug.org/texlive/trunk@27663 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/hyperxmp')
-rw-r--r--Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty500
1 files changed, 331 insertions, 169 deletions
diff --git a/Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty b/Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty
index a7dec0caeeb..bf84fefeed5 100644
--- a/Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty
+++ b/Master/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty
@@ -22,7 +22,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{hyperxmp}
- [2012/03/10 v1.5 Store hyperref metadata in XMP format]
+ [2012/09/10 v2.0 Store hyperref metadata in XMP format]
\edef\hyxmp@dq@code{\the\catcode`\"}
\catcode`\"=12
\def\hyxmp@driver{hpdftex}
@@ -32,9 +32,11 @@
\RequirePackage{atenddvi}
\let\hyxmp@at@end=\AtEndDvi
\fi
-\RequirePackage{keyval}
+\RequirePackage{kvoptions}
\RequirePackage{pdfescape}
\RequirePackage{stringenc}
+\RequirePackage{intcalc}
+\RequirePackage{ifxetex}
\def\@pdfcopyright{}
\define@key{Hyp}{pdfcopyright}{\pdfstringdef\@pdfcopyright{#1}}
\def\@pdflicenseurl{}
@@ -45,13 +47,53 @@
\define@key{Hyp}{pdfcaptionwriter}{\pdfstringdef\@pdfcaptionwriter{#1}}
\def\@pdfmetalang{}
\define@key{Hyp}{pdfmetalang}{\pdfstringdef\@pdfmetalang{#1}}
+\let\hyxmp@ProcessKeyvalOptions=\ProcessKeyvalOptions
+\renewcommand*{\ProcessKeyvalOptions}{%
+ \@ifundefined{KV@Hyp@pdfauthor}{}{%
+ \@ifundefined{hyxmp@Hyp@pdfauthor}{%
+ \expandafter\let\expandafter\hyxmp@Hyp@pdfauthor
+ \csname KV@Hyp@pdfauthor\endcsname
+ }{}%
+ }%
+ \define@key{Hyp}{pdfauthor}{%
+ \let\xmpcomma=\hyxmp@comma
+ \def\xmpquote####1{####1}%
+ \hyxmp@Hyp@pdfauthor{##1}%
+ \global\let\hyxmp@pdfauthor=\@pdfauthor
+ \def\xmpcomma{,}%
+ \def\xmpquote####1{"####1"}%
+ \hyxmp@Hyp@pdfauthor{##1}%
+ \let\xmpcomma=\relax
+ \let\xmpquote=\relax
+ }%
+ \@ifundefined{KV@Hyp@pdfkeywords}{}{%
+ \@ifundefined{hyxmp@Hyp@pdfkeywords}{%
+ \expandafter\let\expandafter\hyxmp@Hyp@pdfkeywords
+ \csname KV@Hyp@pdfkeywords\endcsname
+ }{}%
+ }%
+ \define@key{Hyp}{pdfkeywords}{%
+ \let\xmpcomma=\hyxmp@comma
+ \def\xmpquote####1{####1}%
+ \hyxmp@Hyp@pdfkeywords{##1}%
+ \global\let\hyxmp@pdfkeywords=\@pdfkeywords
+ \def\xmpcomma{,}%
+ \def\xmpquote####1{"####1"}%
+ \hyxmp@Hyp@pdfkeywords{##1}%
+ \let\xmpcomma=\relax
+ \let\xmpquote=\relax
+ }%
+ \hyxmp@ProcessKeyvalOptions
+}
\newcommand*{\hyxmp@find@metadata}{%
\edef\hyxmp@concated@metadata{%
+ \@baseurl
\@pdfauthor
\@pdfauthortitle
\@pdfcaptionwriter
\@pdfcopyright
\@pdfkeywords
+ \@pdflang
\@pdflicenseurl
\@pdfsubject
\@pdftitle
@@ -65,18 +107,13 @@ metadata values to hyperxmp}%
\fi
}
\AtBeginDocument{%
- \@ifpackageloaded{hyperref}%
- {%
- \ifx\@pdfmetalang\@empty
- \ifx\@pdflang\@empty
- \let\@pdfmetalang=\hyxmp@x@default
- \else
- \edef\@pdfmetalang{\@pdflang}%
- \fi
- \fi
- \ifHy@unicode
- \hyxmp@reencode\@pdfmetalang
- \fi
+ \@ifpackageloaded{hyperref}{%
+ \ifx\@pdflang\@empty
+ \let\@pdfmetalang=\hyxmp@x@default
+ \else
+ \edef\@pdfmetalang{\@pdflang}%
+ \fi
+ \hyxmp@xmlify\@pdfmetalang
\hyxmp@at@end{%
\hyxmp@find@metadata
\hyxmp@embed@packet
@@ -105,23 +142,21 @@ disabled}%
\fi
\next
}
+\let\xmpcomma=\relax
\bgroup
-\catcode`\&=11
-\gdef\hyxmp@xml@amp{&amp;}
-\global\let\hyxmp@other@amp=&
-\gdef\hyxmp@amp{&}
-\catcode`\<=11
-\gdef\hyxmp@xml@lt{&lt;}
-\global\let\hyxmp@other@lt=<
-\catcode`\>=11
-\gdef\hyxmp@xml@gt{&gt;}
-\global\let\hyxmp@other@gt=>
-\def\next#1{#1}
-\next{\global\let\hyxmp@other@space= } %
-\catcode`\|=0
-\catcode`\\=11
-|global|let|hyxmp@other@bs=\
-|egroup
+\catcode`\^^C=11
+\gdef\hyxmp@comma{^^C}
+\egroup
+\let\xmpquote=\relax
+\newcommand{\XMPTruncateList}[1]{%
+ \edef\hyxmp@temp@str{\csname hyxmp@#1\endcsname}%
+ \hyxmp@commas@to@list{\hyxmp@temp@list}{\hyxmp@temp@str}%
+ \def\@elt##1{%
+ \expandafter\gdef\csname @#1\endcsname{##1}%
+ \let\@elt=\@gobble
+ }
+ \hyxmp@temp@list
+}
\catcode`\Q=3
\newcommand{\hyxmp@trimspaces}[1]{%
\begingroup
@@ -132,103 +167,204 @@ disabled}%
\def\hyxmp@trimb#1 Q{\hyxmp@trimc#1Q}
\def\hyxmp@trimc#1Q#2{\afterassignment\endgroup \vfuzz\the\vfuzz#1}
\catcode`\Q=11
-\newcommand*{\hyxmp@reencode}[1]{%
- \EdefUnescapeString\hyxmp@reencoded{#1}%
- \StringEncodingConvert\hyxmp@reencoded\hyxmp@reencoded{utf16be}{pdfdoc}%
- \StringEncodingSuccessFailure{%
- \global\let\hyxmp@reencoded=\hyxmp@reencoded
- }{%
- \gdef\hyxmp@reencoded{#1}%
- }%
- \edef#1{\hyxmp@reencoded}%
-}
+\newif\ifhyxmp@unicodetex
+\ifnum64=`\^^^^0040\relax
+ \hyxmp@unicodetextrue
+\else
+ \hyxmp@unicodetexfalse
+\fi
+\newcommand*{\hyxmp@reencode}[1]{}
+\expandafter\def\csname SE->pdfdoc@03\endcsname{0003}
\newcommand*{\hyxmp@xmlify}[1]{%
\gdef\hyxmp@xmlified{}%
- \edef\hyxmp@text{#1}%
- \ifHy@unicode
- \hyxmp@reencode\hyxmp@text
+ \EdefUnescapeString\hyxmp@text{#1}%
+ \ifhyxmp@unicodetex
+ \hyxmp@is@unicode\hyxmp@text{%
+ \StringEncodingConvert
+ \hyxmp@text\hyxmp@text{utf16be}{utf32be}%
+ }{%
+ \ifxetex
+ \hyxmp@xetex@crap
+ \else
+ \StringEncodingConvert
+ \hyxmp@text\hyxmp@text{pdfdoc}{utf32be}%
+ \fi
+ }%
+ \EdefEscapeHex\hyxmp@text{\hyxmp@text}%
+ \edef\hyxmp@text{%
+ \expandafter
+ }\expandafter\hyxmp@toxml@unicodetex\hyxmp@text
+ \relax\relax\relax\relax\relax\relax\relax\relax
+ \else
+ \hyxmp@is@unicode\hyxmp@text{%
+ \StringEncodingConvert
+ \hyxmp@text\hyxmp@text{utf16be}{utf8}%
+ }{%
+ \StringEncodingConvert
+ \hyxmp@text\hyxmp@text{pdfdoc}{utf8}%
+ }%
+ \EdefEscapeHex\hyxmp@text{\hyxmp@text}%
+ \edef\hyxmp@text{%
+ \expandafter\hyxmp@toxml\hyxmp@text\@empty\@empty
+ }%
+ \EdefUnescapeHex\hyxmp@text{\hyxmp@text}%
\fi
- \expandafter\hyxmp@xmlify@i\hyxmp@text\@empty
- \@ifundefined{pdfmark}{}{%
- \expandafter\hyxmp@obscure@spaces\expandafter{\hyxmp@xmlified}%
+ \global\let\hyxmp@xmlified\hyxmp@text
+}
+\begingroup
+ \lccode`\<=254 %
+ \lccode`\>=255 %
+ \catcode254=12 %
+ \catcode255=12 %
+\lowercase{\endgroup
+ \def\hyxmp@is@unicode#1{%
+ \expandafter\hyxmp@@is@unicode#1<>\@nil
+ }%
+ \def\hyxmp@@is@unicode#1<>#2\@nil{%
+ \ifx\\#1\\%
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
}%
}
-\def\hyxmp@xmlify@i{\futurelet\hyxmp@one@token\hyxmp@xmlify@ii}
-\def\hyxmp@xmlify@ii{%
- \if\hyxmp@one@token\hyxmp@other@lt
- \def\next##1{%
- \xdef\hyxmp@xmlified{\hyxmp@xmlified\hyxmp@xml@lt}%
- \hyxmp@xmlify@i
- }%
+\def\hyxmp@toxml#1#2{%
+ \ifx#1\@empty
\else
- \if\hyxmp@one@token\hyxmp@other@gt
- \def\next##1{%
- \xdef\hyxmp@xmlified{\hyxmp@xmlified\hyxmp@xml@gt}%
- \hyxmp@xmlify@i
- }%
+ \ifnum"#1#2=`\& %
+ 26616D703B% &amp;
+ \else\ifnum"#1#2=`\< %
+ 266C743B% &lt;
+ \else\ifnum"#1#2=`\> %
+ 2667743B% &gt;
\else
- \if\hyxmp@one@token\hyxmp@other@amp
- \def\next##1{%
- \xdef\hyxmp@xmlified{\hyxmp@xmlified\hyxmp@xml@amp}%
- \hyxmp@xmlify@i
- }%
+ \@ifundefined{pdfmark}{%
+ #1#2%
+ }{%
+ \ifnum"#1#2=`\( %
+ 5C28% \(
+ \else\ifnum"#1#2=`\) %
+ 5C29% \)
\else
- \ifx\hyxmp@one@token\hyxmp@other@space
- \def\next##1{%
- \g@addto@macro\hyxmp@xmlified{ }%
- \hyxmp@xmlify@i##1%
- }%
- \else
- \if\hyxmp@one@token\hyxmp@other@bs
- \def\next##1{\futurelet\hyxmp@one@token\hyxmp@xmlify@iii}
- \else
- \ifx\hyxmp@one@token\@empty
- \def\next##1{}%
- \else
- \def\next##1{%
- \g@addto@macro\hyxmp@xmlified{##1}%
- \hyxmp@xmlify@i
- }%
- \fi
- \fi
- \fi
- \fi
- \fi
+ #1#2%
+ \fi\fi
+ }%
+ \fi\fi\fi
+ \expandafter\hyxmp@toxml
\fi
- \next
}
-\def\hyxmp@xmlify@iii{%
- \def\next##1##2##3{%
- \@tempcnta='##1##2##3
- \xdef\hyxmp@xmlified{\hyxmp@xmlified
- \hyxmp@amp\hyxmp@hash\the\@tempcnta;%
+\def\hyxmp@toxml@unicodetex#1#2#3#4#5#6#7#8{%
+ \ifx#1\relax
+ \else
+ \ifnum"#1#2#3#4#5#6#7#8>127 %
+ \uccode`\*="#1#2#3#4#5#6#7#8\relax
+ \uppercase{%
+ \edef\hyxmp@text{\hyxmp@text *}%
+ }%
+ \else\ifnum"#7#8=`\< %
+ \edef\hyxmp@text{\hyxmp@text &lt;}%
+ \else\ifnum"#7#8=`\& %
+ \edef\hyxmp@text{\hyxmp@text &amp;}%
+ \else\ifnum"#7#8=`\> %
+ \edef\hyxmp@text{\hyxmp@text &gt;}%
+ \else\ifnum"#7#8=`\ %
+ \edef\hyxmp@text{\hyxmp@text\space}%
+ \else
+ \uccode`\*="#7#8\relax
+ \uppercase{%
+ \edef\hyxmp@text{\hyxmp@text *}%
+ }%
+ \fi\fi\fi\fi\fi
+ \expandafter\hyxmp@toxml@unicodetex
+ \fi
+}
+\def\hyxmp@skipzeros#1{%
+ \ifx#10%
+ \expandafter\hyxmp@skipzeros
+ \fi
+}
+\begingroup
+\def\x#1{\endgroup
+ \def\hyxmp@xetex@crap{%
+ \edef\hyxmp@try{%
+ \expandafter\hyxmp@SpaceOther\hyxmp@text#1\@nil
}%
- \hyxmp@xmlify@i
+ \let\hyxmp@crap@result=N%
+ \expandafter\hyxmp@crap@test\hyxmp@try\relax
+ \ifx\hyxmp@crap@result Y%
+ \let\hyxmp@text\@empty
+ \expandafter\hyxmp@crap@convert\hyxmp@try\relax
+ \else
+ \StringEncodingConvert\hyxmp@text\hyxmp@text{pdfdoc}{utf32be}%
+ \fi
}%
- \if\hyxmp@one@token(
- \let\next=\hyxmp@xmlify@i
+}
+\x{ }
+\begingroup
+ \catcode`\~=12 %
+ \lccode`\~=`\ %
+\lowercase{\endgroup
+ \def\hyxmp@SpaceOther#1 #2\@nil{%
+ #1%
+ \ifx\relax#2\relax
+ \expandafter\@gobble
+ \else
+ ~%
+ \expandafter\@firstofone
+ \fi
+ {\hyxmp@SpaceOther#2\@nil}%
+ }%
+}
+\def\hyxmp@crap@test#1{%
+ \ifx#1\relax
\else
- \if\hyxmp@one@token)
- \let\next=\hyxmp@xmlify@i
+ \ifnum`#1>127 %
+ \let\hyxmp@crap@result=Y%
+ \expandafter\expandafter\expandafter\hyxmp@skiptorelax
+ \else
+ \expandafter\expandafter\expandafter\hyxmp@crap@test
\fi
\fi
- \next
-}
-\newcommand*{\hyxmp@obscure@spaces}[1]{%
- \gdef\hyxmp@xmlified{}%
- \expandafter\hyxmp@obscure@spaces@i#1 {} %
}
-\def\hyxmp@obscure@spaces@i #1 #2 {%
- \def\hyxmp@one@token{#2}%
- \ifx\hyxmp@one@token\@empty
- \xdef\hyxmp@xmlified{\hyxmp@xmlified#1}%
- \let\next=\relax
+\def\hyxmp@skiptorelax#1\relax{}
+\def\hyxmp@crap@convert#1{%
+ \ifx#1\relax
\else
- \xdef\hyxmp@xmlified{\hyxmp@xmlified#1\hyxmp@amp\hyxmp@hash32;}%
- \def\next{\expandafter\hyxmp@obscure@spaces@i\expandafter#2 }%
+ \edef\hyxmp@num{\number`#1}%
+ \ifnum\hyxmp@num>"FFFFFF %
+ \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"1000000}\relax
+ \lowercase{\edef\hyxmp@text{\hyxmp@text!}}%
+ \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"1000000}}%
+ \else
+ \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}%
+ \fi
+ \ifnum\hyxmp@num>"FFFF %
+ \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"10000}\relax
+ \lowercase{\edef\hyxmp@text{\hyxmp@text!}}%
+ \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"10000}}%
+ \else
+ \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}%
+ \fi
+ \ifnum\hyxmp@num>"FF %
+ \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"100}\relax
+ \lowercase{\edef\hyxmp@text{\hyxmp@text!}}%
+ \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"100}}%
+ \else
+ \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}%
+ \fi
+ \ifnum\hyxmp@num>0 %
+ \lccode`\!=\hyxmp@num\relax
+ \lowercase{\edef\hyxmp@text{\hyxmp@text!}}%
+ \else
+ \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}%
+ \fi
+ \expandafter\hyxmp@crap@convert
\fi
- \next
}
+\begingroup
+ \catcode0=12 %
+ \gdef\hyxmp@zero{^^00}%
+\endgroup
\def\hyxmp@modulo@a#1{%
\@tempcntb=\@tempcnta
\divide\@tempcntb by #1
@@ -323,6 +459,7 @@ disabled}%
\ifnum\@tempcnta<256
\repeat
\lccode`\_=`\ \relax
+ \lccode`\^^C=`\,\relax
\lowercase{\xdef\hyxmp@xml{\hyxmp@xml#1}}%
\egroup
}
@@ -367,25 +504,26 @@ __________________________________________________^^J%
______<rdf:Description rdf:about=""^^J%
___________xmlns:pdf="http://ns.adobe.com/pdf/1.3/">^^J%
}%
- \ifx\@pdfkeywords\@empty
- \else
- \hyxmp@xmlify{\@pdfkeywords}%
- \hyxmp@add@to@xml{%
-___________<pdf:Keywords>\hyxmp@xmlified</pdf:Keywords>^^J%
- }%
- \fi
- \ifx\@pdfproducer\@empty
- \else
- \hyxmp@xmlify{\@pdfproducer}%
- \hyxmp@add@to@xml{%
-___________<pdf:Producer>\hyxmp@xmlified</pdf:Producer>^^J%
- }%
- \fi
+ \hyxmp@add@simple{pdf:Keywords}{\@pdfkeywords}%
+ \hyxmp@add@simple{pdf:Producer}{\@pdfproducer}%
+ \@ifundefined{pdfminorversion}{}{%
+ \hyxmp@add@simple{pdf:PDFVersion}{1.\the\pdfminorversion}%
+ }%
\hyxmp@add@to@xml{%
______</rdf:Description>^^J%
}%
\fi
}
+\newcommand*{\hyxmp@add@simple}[2]{%
+ \edef\hyxmp@string{#2}%
+ \ifx\hyxmp@string\@empty
+ \else
+ \hyxmp@xmlify{\hyxmp@string}%
+ \hyxmp@add@to@xml{%
+_________<#1>\hyxmp@xmlified</#1>^^J%
+ }%
+ \fi
+}
\newcommand*{\hyxmp@rdf@dc}[2]{%
\ifx#2\@empty
\else
@@ -415,15 +553,11 @@ _________<dc:#1>^^J%
____________<rdf:#2>^^J%
}%
\bgroup
- \edef\hyxmp@text{#3}%
- \ifHy@unicode
- \hyxmp@reencode\hyxmp@text
- \fi
- \hyxmp@commas@to@list\hyxmp@list{\hyxmp@text}%
+ \hyxmp@xmlify{#3}%
+ \hyxmp@commas@to@list\hyxmp@list{\hyxmp@xmlified}%
\def\@elt##1{%
- \hyxmp@xmlify{##1}%
\hyxmp@add@to@xml{%
-_______________<rdf:li>\hyxmp@xmlified</rdf:li>^^J%
+_______________<rdf:li>##1</rdf:li>^^J%
}%
}%
\hyxmp@list
@@ -443,22 +577,39 @@ _________<dc:format>application/pdf</dc:format>^^J%
\hyxmp@rdf@dc{title}{\@pdftitle}%
\hyxmp@rdf@dc{description}{\@pdfsubject}%
\hyxmp@rdf@dc{rights}{\@pdfcopyright}%
- \hyxmp@list@to@xml{creator}{Seq}{\@pdfauthor}%
- \hyxmp@list@to@xml{subject}{Bag}{\@pdfkeywords}%
+ \hyxmp@list@to@xml{creator}{Seq}{\hyxmp@pdfauthor}%
+ \hyxmp@list@to@xml{subject}{Bag}{\hyxmp@pdfkeywords}%
\hyxmp@list@to@xml{date}{Seq}{\hyxmp@today}%
+ \hyxmp@add@simple{dc:language}{\@pdflang}%
+ \hyxmp@add@simple{dc:source}{\jobname.tex}%
\hyxmp@add@to@xml{%
______</rdf:Description>^^J%
}%
}
\newcommand*{\hyxmp@xmpRights@schema}{%
+ \let\hyxmp@rights=\@empty
\ifx\@pdflicenseurl\@empty
\else
- \hyxmp@xmlify{\@pdflicenseurl}%
+ \def\hyxmp@rights{YES}%
+ \fi
+ \ifx\@pdfcopyright\@empty
+ \else
+ \def\hyxmp@rights{YES}%
+ \fi
+ \ifx\hyxmp@rights\@empty
+ \else
\hyxmp@add@to@xml{%
______<rdf:Description rdf:about=""^^J%
___________xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/">^^J%
+ }%
+ \ifx\@pdfcopyright\@empty
+ \else
+ \hyxmp@add@to@xml{%
_________<xmpRights:Marked>True</xmpRights:Marked>^^J%
-_________<xmpRights:WebStatement>\hyxmp@xmlified</xmpRights:WebStatement>^^J%
+ }%
+ \fi
+ \hyxmp@add@simple{xmpRights:WebStatement}{\@pdflicenseurl}%
+ \hyxmp@add@to@xml{%
______</rdf:Description>^^J%
}%
\fi
@@ -474,6 +625,20 @@ _________<xmpMM:InstanceID>\hyxmp@InstanceID</xmpMM:InstanceID>^^J%
______</rdf:Description>^^J%
}%
}
+\newcommand*{\hyxmp@xmp@basic@schema}{%
+ \hyxmp@add@to@xml{%
+______<rdf:Description rdf:about=""^^J%
+____________xmlns:xmp="http://ns.adobe.com/xap/1.0/">^^J%
+ }%
+ \hyxmp@add@simple{xmp:CreateDate}{\hyxmp@today}%
+ \hyxmp@add@simple{xmp:ModifyDate}{\hyxmp@today}%
+ \hyxmp@add@simple{xmp:MetadataDate}{\hyxmp@today}%
+ \hyxmp@add@simple{xmp:CreatorTool}{\@pdfcreator}%
+ \hyxmp@add@simple{xmp:BaseURL}{\@baseurl}%
+ \hyxmp@add@to@xml{%
+______</rdf:Description>^^J%
+ }%
+}
\gdef\hyxmp@photoshop@schema{%
\edef\hyxmp@photoshop@data{\@pdfauthortitle\@pdfcaptionwriter}%
\ifx\hyxmp@photoshop@data\@empty
@@ -483,20 +648,8 @@ ______<rdf:Description rdf:about=""^^J%
____________xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">^^J%
}%
\fi
- \ifx\@pdfauthortitle\@empty
- \else
- \hyxmp@xmlify{\@pdfauthortitle}%
- \hyxmp@add@to@xml{%
-_________<photoshop:AuthorsPosition>\hyxmp@xmlified</photoshop:AuthorsPosition>^^J%
- }%
- \fi
- \ifx\@pdfcaptionwriter\@empty
- \else
- \hyxmp@xmlify{\@pdfcaptionwriter}%
- \hyxmp@add@to@xml{%
-_________<photoshop:CaptionWriter>\hyxmp@xmlified</photoshop:CaptionWriter>^^J%
- }%
- \fi
+ \hyxmp@add@simple{photoshop:AuthorsPosition}{\@pdfauthortitle}%
+ \hyxmp@add@simple{photoshop:CaptionWriter}{\@pdfcaptionwriter}%
\ifx\hyxmp@photoshop@data\@empty
\else
\hyxmp@add@to@xml{%
@@ -504,21 +657,32 @@ ______</rdf:Description>^^J%
}%
\fi
}
-\bgroup
-\catcode`\^^ef=12
-\catcode`\^^bb=12
-\catcode`\^^bf=12
-\gdef\hyxmp@construct@packet{%
+\begingroup
+ \ifhyxmp@unicodetex
+ \lccode`\!="FEFF %
+ \lowercase{%
+ \gdef\hyxmp@bom{!}
+ }%
+ \else
+ \catcode`\^^ef=12
+ \catcode`\^^bb=12
+ \catcode`\^^bf=12
+ \gdef\hyxmp@bom{^^ef^^bb^^bf}%
+ \fi
+\endgroup
+\def\hyxmp@construct@packet{%
\gdef\hyxmp@xml{}%
- \hyxmp@add@to@xml{%
-<?xpacket begin="^^ef^^bb^^bf" id="W5M0MpCehiHzreSzNTczkc9d"?>^^J%
+ \hyxmp@add@to@xml{<?xpacket begin="\hyxmp@bom" %
+id="W5M0MpCehiHzreSzNTczkc9d"?>^^J%
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1-702">^^J%
-___<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns\hyxmp@hash">^^J%
+___<rdf:RDF
+xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns\hyxmp@hash">^^J%
}%
\hyxmp@pdf@schema
\hyxmp@xmpRights@schema
\hyxmp@dc@schema
\hyxmp@photoshop@schema
+ \hyxmp@xmp@basic@schema
\hyxmp@mm@schema
\hyxmp@add@to@xml{%
___</rdf:RDF>^^J%
@@ -527,7 +691,6 @@ ___</rdf:RDF>^^J%
<?xpacket end="w"?>^^J%
}%
}
-\egroup
\newcommand*{\hyxmp@embed@packet}{%
\hyxmp@construct@packet
\def\hyxmp@driver{hpdftex}%
@@ -566,16 +729,20 @@ ___</rdf:RDF>^^J%
}
\newcommand*{\hyxmp@embed@packet@pdfmark}{%
\pdfmark{%
+ pdfmark=/NamespacePush
+ }%
+ \pdfmark{%
pdfmark=/OBJ,
Raw={/_objdef \string{hyxmp@Metadata\string} /type /stream}%
}%
\pdfmark{%
pdfmark=/PUT,
- Raw={\string{hyxmp@Metadata\string}%
- <<
- /Type /Metadata
- /Subtype /XML
- >>
+ Raw={\string{hyxmp@Metadata\string}
+ 2 dict begin
+ /Type /Metadata def
+ /Subtype /XML def
+ currentdict
+ end
}%
}%
\pdfmark{%
@@ -583,16 +750,11 @@ ___</rdf:RDF>^^J%
Raw={\string{hyxmp@Metadata\string} (\hyxmp@xml)}%
}%
\pdfmark{%
- pdfmark=/CLOSE,
- Raw={\string{hyxmp@Metadata\string}}%
+ pdfmark=/Metadata,
+ Raw={\string{Catalog\string} \string{hyxmp@Metadata\string}}%
}%
\pdfmark{%
- pdfmark=/Metadata,
- Raw={\string{Catalog\string}%
- <<
- /Metadata \string{hyxmp@Metadata\string}%
- >>
- }%
+ pdfmark=/NamespacePop
}%
}
\newcommand*{\hyxmp@embed@packet@dvipdfm}{%