我获得了hyperxmp
包含常规 LaTeX 的 XMP 版权信息的软件包,但使用 XeLaTeX 似乎存在问题。我需要 XeLaTeX,因为它有更好的字体支持和排版功能。有什么方法可以hyperxmp
使用 XeLateX 吗?
以下是包文档示例的精简版本hyperxmp
:
\documentclass{article}
\usepackage{hyperxmp}
\usepackage{hyperref}
\title{Paper}
\author{Nomen Nescio}
\hypersetup{
pdfcopyright={Copyright © Nomen Nescio. Creative Commons 3.0 Attribution License.}
pdflicenseurl={http://creativecommons.org/licenses/by/3.0/us/}
}
\begin{document}
\maketitle
processes in so-called empty space\dots
\end{document}
XeLaTeX 给出的是:
** WARNING ** Could not find an object definition for "hyxmp@Metadata".
** WARNING ** Interpreting special command object (pdf:) failed.
** WARNING ** >> at page="1" position="(133.768, 524.256)" (in PDF)
** WARNING ** >> xxx "pdf: object @hyxmp@Metadata << /Type /Metadata /Subtype /XML..."
** WARNING ** >> Reading special command stopped around >>stream\x0a<?xpacket begin="\xc3\xaf\xc2\xbb\xc2\xbf" id="W5M...<<
** WARNING ** Unresolved object reference "hyxmp@Metadata" found!!!
当我打开文件并查看属性时,没有版权信息。我尝试使用另一个包含版权信息的文件,它显示了版权信息。
答案1
[提问者自己的回答,从问题编辑移至此处]
终于!我找到了解决这个问题的方法。这条消息来自 Pablo Rodríguez给出了答案。
必须同时存在pdfcopyright 和 pdflicenseurl,否则将不起作用。
以下是序言的代码:
\makeatletter
\renewcommand*{\hyxmp@embed@packet@dvipdfm}{%
\ifxetex{%
\hyxmp@string@len{\hyxmp@xml}%
\special{pdf:stream @hyxmp@Metadata (\hyxmp@xml)
<<
/Type /Metadata
/Subtype /XML
>>
}%
\special{pdf:put @catalog
<<
/Metadata @hyxmp@Metadata
>>
}%
}
\else
\hyxmp@string@len{\hyxmp@xml}%
\special{pdf: object @hyxmp@Metadata
<<
/Type /Metadata
/Subtype /XML
/Length \the\@tempcnta
>>
stream^^J\hyxmp@xml endstream%
}%
\special{pdf: docview
<<
/Metadata @hyxmp@Metadata
>>
}%
\fi
}
\makeatother
答案2
您的文件对我来说运行良好。我正确获取了版权信息。
仅显示 xetex 版本(XeTeX:0.9997)
你必须点击Additional Metadata...
上面窗口(图片)中的按钮。我得到的版权信息
笔记:看来您可能需要更新您的软件包。