在另一个现在相当令人困惑的问题,我正在努力将版权信息纳入由 制作的 PDF 中memoir
。
到目前为止的调查已经得出了这个有问题的 MWE:
% !TEX TS-program = XeLaTeX
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{hyperxmp}
\hypersetup{
pdfauthor={Brent Longborough},
pdftitle={O Hai},
pdfcopyright={Copyright © 2012 by Brent Longborough. All rights reserved.},
}
\begin{document}
\lipsum[1]
\end{document}
生成的 PDF 已成功将版权声明包含在元数据中,且“PDF 制作器”设置为“XeTeX 0.9997”
但是,如果我将文档类更改为:
\documentclass{memoir}
那么我就收不到版权声明,并且 PDF 制作器现在设置为“xdvipdfmx (0.7.8)”。
经过一个小时左右的搜索memoir.sty
,memhfixc.sty
我感到很困惑。有人知道下一步该看哪里吗?
答案1
这实际上是一个时间问题:元数据必须在最后一个\clearpage
命令之前插入,否则,它不会再写入 PDF 文档。然而,memoir
问题\clearpage
\AtBeginDocument{\AtEndDocument{\clearpage\dol@stsheet\dol@stpage}}
因此使用的代码hyperxmp
\AtBeginDocument{%
% [...]
\AtEndDocument{%
\hyxmp@find@metadata
\hyxmp@embed@packet
}%
% [...]
}
为时已晚,因为\hyxmp@find@metadata
和\hyxmp@embed@packet
在之后被执行\clearpage
。
为了解决这个问题,你可以手动发出
\makeatletter
\AtEndDocument{\hyxmp@find@metadata\hyxmp@embed@packet}
\makeatother
在您的文档的序言中。
最小测试代码:
% !TEX TS-program = XeLaTeX
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{hyperxmp}
\makeatletter
\AtEndDocument{\hyxmp@find@metadata\hyxmp@embed@packet}
\makeatother
\hypersetup{
pdfauthor={Brent Longborough},
pdftitle={O Hai},
pdfcopyright=Copyright © 2012 by Brent Longborough. All rights reserved.}
\begin{document}
\lipsum[1]
\end{document}