LaTeX 使用 hyperxmp 管理 PDF XMP Metadata 元数据教程

PDF 元数据

许多文件都有元数据(metadata)的概念,文件的元数据是描述文件属性和特征的数据。它提供了关于文件的信息,包括但不限于文件的名称、大小、创建日期、修改日期、文件类型、所在位置等。文件的元数据可以帮助我们更好地理解和管理文件,提供了一些关键的信息。

由于 PDF 格式可以封装许多截然不同的信息,直接从渲染后的内容中提取信息是相当困难的,为阅读工具、操作系统、搜索引擎提供一种结构化数据,可以使 pdf 文件更好管理、更易于检索。

比如,Google Scholar 的搜索引擎在检索 pdf 论文时,会优先将 pdftitle 元数据中的内容当作标题;当找不到这个元数据时,才会选择 pdf 文件中前几页中较大的文字,或者通过 OCR 识别 pdf 中可能的标题。显然,前者比后者要准确得多。

对于计算机相关专业来说,有两个大类的 LaTeX 模板是投稿时常见的,一个是 IEEETrans,另一个是 acmart。由于 ACM 的模板更新十分频繁,对 XMP 元数据已有比较好的支持,因此在使用 acmart 的时候不建议使用 hyperxmp;而 IEEE 模板更新比较慢,对 XMP 的支持几近于无,因此可以根据需求适当使用 hyperxmp

注意
PDF 文件有很多标准,其中部分 PDF/A 标准并不支持全部的 XMP 数据集。在大部分科研中产出的文件和投稿要求并不需要符合 PDF/A 标准,丰富而准确的元数据有利于谷歌学术/微软学术等搜索引擎准确索引文件。
但是,依然有少部分情况要求必须符合 PDF/A 标准,请您自行确认您所需要的 PDF 标准。

XMP 元数据

XMP(Extensible Metadata Platform)是一种用于描述和存储关于数字资产的元数据的技术标准。XMP 旨在成为一种开放的、可扩展的元数据标准,可适用于各种类型的文件和应用。XMP 使用 XML 格式来存储元数据,这使得它具有良好的互操作性和扩展性。作为 XML,XMP 显然要比更早的文件格式中定死的几个元数据键值对更有扩展能力。

XMP 在摄影领域也有不少应用,可以作为照片的 EXIF(Exchangeable Image File Format)数据中。此外,许多数字资产管理系统和图像处理软件也支持读取和编辑 XMP 元数据,比如摄影参数、时空信息等,以提供更好的组织、搜索和处理功能。在 PDF 中,它提供了极为丰富的功能,可以为搜索引擎、文献管理工具提供清晰的结构化数据。

hyperxmp 教程

hyperxmp 是在知名 LaTeX 宏包 hyperref 的基础上构建的,它主要用于向 PDF 中添加 XMP 元数据。大部分人可能会用 hyperref 来设置超链接,或者是 pdf 的标题和作者。本文将详细介绍 hyperxmp 宏包在科研过程中的使用方式。

基本格式

一个非常容易被忽略的问题是:hyperxmphyperref 的先后顺序

hyperxmp 手册给出的说法是:\usepackage{hyperxmp} 要放在 LaTeX 文件的导言区(preamble)且必须同时满足\usepackage{hyperref} 之后\hypersetup 之前。标准的先后顺序如下:

\documentclass[conference]{IEEETran} % 以 IEEE 会议模板为例

% other packages ...

%%% hyper starts

\usepackage[unicode]{hyperref} % 先 hyperref
\usepackage{hyperxmp} % 再 hyperxmp

% 最后 hypersetup
\hypersetup{%
  % setup info
}

%%% hyper ends

\begin{document}
  % content ...
\end{document}
LaTeX

各设置项的含义

在上文的提到的 \hypersetup 中有许多不同的设置项来指定元数据。所有的设置项都是以 = 分割的键值对,右边的值建议以大括号 { } 框住。如果某个值有多个内容,请使用逗号而不是分号来分割。

PDF 标题设置

pdftitle 表示文件标题,pdfsubtitle 表示副标题。如果没有制定副标题,那么 pdfsubtitle 就自动继承 pdftitle 标题的内容。科研中,一般无需设置副标题。

pdftitle = {The Name of The Title is Hope},
pdfsubtitle = {An ACM \LaTeX Paper}, % same as pdftitle if not specified
LaTeX

作者与联系方式

这是很重要的一部分,可以引导学术搜索引擎准确索引作者。pdfauthor 表示所有作者,多个作者用逗号分隔。pdfauthortitle 是第一作者的头衔,不能标注其他作者的头衔。pdfcontactphone 表示所有作者的联系电话,逗号分隔,出于隐私安全建议别写。pdfcontactemail 表示所有作者的邮箱,逗号分隔。

pdfauthor = {Zhenglong Wu, Albert Einstein}, % comma-separated
pdfauthortitle = {Research Assistant at BUPT}, % title of the first author
% pdfcontactphone = {008612345678900, 0011234567890}, % comma-separated
pdfcontactemail = {[email protected], [email protected]}, % comma-separated
LaTeX

如果在作者设置中需要用到逗号,请不要直接使用逗号,而是使用 \xmpcomma 代替逗号,并分别用 \xmpquote{. . . } 包住每个作者各自的全称,比如:

pdfauthor={Zhenglong WU,\xmpquote{Weibai Ceng\xmpcomma\ PhD}}
LaTeX

机构地址

机构地址一般可以是一作或者通讯作者的单位。pdfcontactpostcode 表示邮编,pdfcontactcountry 表示国家,pdfcontactregion 表示省或州或直辖市或特区,pdfcontactcity 表示城市,pdfcontactaddress 表示机构名称+街道地址。pdfcontacturl 是每个作者的主页,逗号分隔。

与作者栏相似的是,pdfcontactaddress 里面的逗号表示的是换行符,也就是信笺上的三行地址。如果要使用行内地址,也需要将这部分用 \xmpquote{. . . } 包住并使用 \xmpcomma 代替逗号。比如:

pdfcontactaddress = {\xmpquote{SKLNST\xmpcomma Beijing University of Posts and Telecommunications}, No 10 Xitucheng Road}, % Address of institution
pdfcontactcity = {Haidian},
pdfcontactregion = {Beijing},
pdfcontactcountry = {China},
pdfcontactpostcode = {100000},
pdfcontacturl = {https://orcid.org/0000-0002-1956-2877, https://orcid.org/0000-0003-0829-4624},
LaTeX

pdfcontacturl 是所有作者的 URL,建议放主页或者 ORCID。需要注意的是,有的教师主页的 URL 带有 ~ 波浪线,波浪线需要用 \xmptilde 代替,记得要在命令后面添加一个空格。

版权信息

在上传 arXiv 等预印版网站的适合,一般会让作者选择协议。类似的,pdf 文件的协议可以通过 XMP 元数据来指定。pdfcopyright 表示版权声明文字,pdflicenseurl 表示的是协议的 URL 链接。比如以 CC By-SA 4.0 协议授权的内容就是:

pdfcopyright = {Copyright (c) 2023 itdevwu.}, % Copyright text
pdflicenseurl = {https://creativecommons.org/licenses/by-sa/4.0/}, % Link to license
LaTeX

发表信息

在大部分时候,DOI、ISBN、ISSN 这些编号是在论文录用后由出版社分配的。如果要指定的话,可以使用 pdfdoipdfisbnpdfissnpdfeissn 来指定。指定 DOI 的时候,要去除前面的 https://doi.org/ 域名前缀。pdfidentifier 也可用于指定各类编号,但是只能指定一个,因此更建议使用具体的编号类型。

pdfpublicationpdfpublisher 分别用来指定刊物和出版社,对于刊物,可通过 pdfpublication={[zh]巴普特大学本科学位论文集} 这样的方式来同时指定不同语言的刊物名称。

pdfvolumenumpdfissuenumpdfpagerange 这些可以用来标注本文在期刊中的位置,以保证学术搜索引擎可以生成正确的引用文件。

pdfpubstatus 是一个很有意思的参数,据我的观察,IEEE Xplore 会为发表的论文的 PDF 文件指定这个参数,其含义如下:

可选值含义
AO作者原文版
SMUR交稿审核版本
AM已被接受的版本(尚未定稿)
P证明
VoR正式发布版本
CVoR对 VoR 进行纠错后的版本
EVoR对 VoR
pdfpubstatus 的可选值及含义表

版本与时间

pdfdocumentidpdfinstanceid 分别用来指代文件 ID 和实例 ID,这两个都是 UUID 格式,由 hyperxmp 自动管理,因此不建议做人为修改。

更建议操作的是 pdfversionid,内容完全自定,自己能够区分即可。

pdfdate 一般自动设定为 pdf 文件编译生成的时间。不过也可以通过 pdfcreationdatepdfmoddate 两个时间来定义文件创建和修改的时间。时间的格式既可以是 PDF 时间格式也可以是 XMP 时间格式(ISO 8601 时间格式):

  • PDF 时间格式形如 D:YYYYMMDDhhmmss+TT'tt'
  • XMP 时间格式形如 YYYY-MM-DDThh:mm:ss+TT:tt

其中 +TT'tt'+TT:tt 表示时区,如北京时间(UTC +8)分别表示为 +08'00'+08:00;论文投稿常用的 Anywhere on Earth(AoE,UTC -12)时区分别表示为 -12'00-12:00。再比如,本文发布的时间用 PDF 时间格式表示为 D:20231127132800+08'00' ;用 XMP 时间格式表示为 2023-11-27T13:28:00+08:00

发表评论