XMP 与 XeLaTeX

XMP 与 XeLaTeX

我获得了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...上面窗口(图片)中的按钮。我得到的版权信息

在此处输入图片描述

笔记:看来您可能需要更新您的软件包。

相关内容