什么是 \DocumentMetadata?它采用哪些键值对以及何时应使用它?

什么是 \DocumentMetadata?它采用哪些键值对以及何时应使用它?

我偶然发现了一份文件,开头是这样的:

\DocumentMetadata{pdfversion=1.2}
\nonstopmode\synctex=1
\documentclass{article}

我见过 2 号线和 3 号线,但从未见过 1 号线。我很好奇它是什么,它有什么用处,它接受什么值?

答案1

\DocumentMetadata是一个相当新的命令,它于一年前在LaTeX 新闻。它是告诉 LaTeX 当前文档是一个新的/现代文档的触发器,应该使用传统 LaTeX2e 文档中没有的概念,例如,为 PDF 标记项目开发的所有内容,其目标是使 LaTeX 能够轻松自动地生成标记的 PDF。(https://www.latex-project.org/publications/indexbytopic/pdf/

这个新命令必须首先出现在 LaTeX 文档中,在 之前\documentclass。顾名思义,它用于设置有关整个文档的元数据,但在处理 PDF 标记项目时,它还用于启用来自该项目的新代码。

如果您不带任何选项使用它,它将加载新的 PDF 管理代码(当前位于 pdfmanagement-testphase 包中),该代码用于各种 PDF 相关任务,如透明度、专色、XMP 元数据、更改 pdfversion 和支持 PDF 标准。可见的效果是它将更改 hyperref 的默认链接颜色。

\DocumentMetadata具有许多在 documentmetadata-support-doc.pdf(以及 pdfmanagement-testphase 包的 ltdocinit.pdf)中描述的键:

  • pdfversion:设置 pdfversion,例如pdfversion=2.0(我不建议像您的示例那样将其设置为 1.2)。
  • pdfstandard:设定标准,例如pdfstandard=A-2b
  • lang:在 pdf 目录中设置 /Lang 键,例如lang=de
  • xmp:用于抑制 XMP 元数据的布尔值
  • colorprofiles:添加和配置颜色配置文件(更多信息请参阅 l3pdfmeta.pdf)
  • uncompress:生成未压缩的 PDF(它是的简写debug={uncompress},但我经常需要它……)。
  • backend:设置不能自动检测的后端/引擎,例如 dvipdfmx。
  • debug:设置调试选项

\DocumentMetadata有一些包和类与 PDF 管理不兼容,但对于大多数文档来说,使用上面提到的键应该没有问题。

但 last key 并非如此testphase。它支持标记自动化,所有这些自动化目前都处于原型状态,仅限于使用标准类(文章、报告和书籍),并且仅支持有限数量的附加包(欢迎反馈有关其他包的问题)。

testphase键接受逗号分隔的值列表。目前主要的值是 phase-I(一些标记)、phase-II(更多标记)、phase-III(需要 LaTeX 2023-06-01 或更新版本,也许还需要 latex-dev)。但还有更多,例如,您可以额外加载数学标记的原型。如果您想测试它,\DocumentMetadata{testphase={phase-III,math}}建议您关注 LaTeX 新闻并检查软件包。latex-lab

答案2

如果其他一切都失败了,可以阅读源代码texdoc source2e

texdoc source2e 的屏幕截图

根据建议,继续texdoc documentmetadata-support

texdoc documentmetadata-support 的屏幕截图

因此在这种情况下,命令将“明确设置 PDF 版本”为 1.2。


在内部,你可以猜测 LaTeX 只是将其转发到相应的引擎原语:

texdoc pdftex 截图

从技术上讲,你可以设置任何你想要的值,而且它似乎无论如何都能起作用:

\DocumentMetadata{pdfversion=9.9}
\documentclass{article}
\begin{document}
hello world
\end{document}

给出以以下内容开头的 PDF 文件

%PDF-9.9
%¿÷¢þ

事实上,根据维基百科最新版本是2.0,查看器兼容性有所不同。

为什么 1.5 是默认的 pdf 版本? - TeX - LaTeX Stack ExchangePDF 格式版本之间的差异以及选择哪个版本。

相关内容