我已经嵌套了 Latex 类。基类设置了公司范围的样式,并包含以下内容:
\ProvidesClass{companydoc}
\LoadClass{report}
\RequirePackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=magenta,
urlcolor=cyan,
bookmarks=true,
}
下一个类用于需要批准的报告。它需要添加一些自定义元数据字段:
\ProvidesClass{approvaldoc}
\LoadClass{companydoc}
\necommand{\SetApprovalData}[2]{
\hypersetup{
pdfinfo={
ApprovingManager={#1},
ApprovalDate={#2}
}
}
}
approvaldoc
意志 会覆盖\hypersetup
还是companydoc
增强\hypersetup
?
假设增强是可能的,如果我想更进一步,下一个类专门用于费用报告:
\ProvidesClass{expensereport}
\LoadClass{approvaldoc}
\newcommand{\SetExpenseTotal}[1]{
\hypersetup{
pdfinfo={
ExpenseTotal={#1}
}
}
}
这里,我假设我们将覆盖approvaldoc
。pdfinfo
如果是这样,我可以获取 的当前值pdfinfo
,以便向其附加数据吗?
答案1
您可以根据需要随时使用它。使用经典 hyperref 时,pdfinfo 会设置在第一页的末尾。因此,如果您运行此文档
\documentclass{article}
\usepackage{hyperref}
\hypersetup{pdfinfo={ABC=aaa}}
\hypersetup{pdfinfo={CDE=ccc}}
\hypersetup{pdfinfo={CDE=ddd}}
\begin{document}
aaa
\hypersetup{pdfinfo={FGH=fff}}
\newpage
bbbb
\hypersetup{pdfinfo={XYZ=xxx}}
\end{document}
你将获得这些条目
/ABC(\376\377\000a\000a\000a)
/CDE(\376\377\000d\000d\000d)
/FGH(\376\377\000f\000f\000f)
因此第二个 CDE 获胜,而最后一页的 XYZ 丢失。
如果您通过在开头添加来使用新的 pdfmanagement \DocumentMetadata
,那么新的 hyperref 驱动程序将在文档末尾设置信息字典,并且 XYZ 也会被使用。
\DocumentMetadata{}
\documentclass{article}
\usepackage{hyperref}
\hypersetup{pdfinfo={ABC=aaa}}
\hypersetup{pdfinfo={CDE=ccc}}
\hypersetup{pdfinfo={CDE=ddd}}
\begin{document}
aaa
\hypersetup{pdfinfo={FGH=fff}}
\newpage
bbbb
\hypersetup{pdfinfo={XYZ=xxx}}
\end{document}
给出
/ABC <FEFF006100610061>
/CDE <FEFF006400640064>
/FGH <FEFF006600660066>
/XYZ <FEFF007800780078>
请注意,在 PDF 2.0 中,信息字典已被弃用,而应在 XMP 元数据中设置此类数据。