以下操作以前是可以的。但最新版本的hyperxmp
不再能用,并会出现错误:
./hypersetup-bug.tex:9: Argument of \hyxmp@pdf@to@xmp@date has an extra }.
<inserted text>
\par
l.9 }
如何修复或解决这个问题?
\documentclass{article}
\usepackage{hyperxmp} % to add metadata info into pdf
\usepackage[pdfa]{hyperref}
\hypersetup{
pdfapart=2,
pdfaconformance=u,
pdfdate={\today},
}
\usepackage{kantlipsum}
\begin{document}
\kant[1]
\end{document}
我尝试改变序言以包含以下内容:
\usepackage[main=english]{babel}
\usepackage{datetime2}
这样可以避免错误。但是,我仍然希望能够在文档文本中包含诸如“2020 年 12 月 1 日”之类的日期。不幸的是,timedate2
已重新定义\today
,我无法从该包的文档中找出将两者作为参数2020-112-01
的值,一方面,并以某种方式调整日期,以便在文档正文中包含冗长的形式“2020 年 12 月 1 日”。\today
\hypersetup
答案1
错误源于pdfdate
需要采用特定格式的要求,而不是<monthname> <day>, <year>
。hyperxmp
文档提及:
XMP 元数据可以包含多个日期(实际上是时间戳,因为它们包含日期和时间部分)。
pdfdate
指定文档日期。它类似于 LaTeX\date
命令,并且像 一样\date
默认为文档的构建日期。它必须以 XMP 格式或 PDF 格式指定。
您的日期格式与上述任何一种都不匹配。正如您所发现的,包括datetime2
修复了这个问题,因为它突然符合 PDF 日期格式。但是,为了获得所需的文档内日期显示,您需要重新定义日期格式。方法如下:
\documentclass{article}
\usepackage{datetime2}
\DTMusemodule{english}{en-US}
\usepackage{hyperxmp} % to add metadata info into pdf
\usepackage[pdfa]{hyperref}
\hypersetup{
pdftitle = {A title},
pdfauthor = {An author},
pdfapart = 2,
pdfaconformance = U,
pdfdate = {\today}
}
\usepackage{lipsum}
% Set a new date style/representation
\DTMnewdatestyle{usdate}{%
% \DTMdisplaydate{<year>}{<month>}{<day>}{<day of week>}
\renewcommand{\DTMdisplaydate}[4]{%
\DTMenglishmonthname{##2} \number##3, \number##1 }%
\renewcommand{\DTMDisplaydate}{\DTMdisplaydate}% Capitalization of \DTMdisplaydate
}
\DTMsetdatestyle{usdate}% Use the above-defined date for date representation within the document
\begin{document}
\today
\lipsum[1]
\end{document}