pdfx 包可以使用文档标题和作者吗?

pdfx 包可以使用文档标题和作者吗?

软件包pdfx文档建议使用文件\jobname.xmpdata来提供 PDF 元数据。这可以通过使用filecontents环境来处理。但是,这会使宏变得毫无用处,使得包含文档范围的标题和作者变得非常困难。

在纯 LaTeX 中是否有任何方法可以解决必须在文档的多个位置输入元数据的问题? sed 脚本之类的东西不可能在所有平台上都能工作。

\documentclass{article}
\usepackage[a-1b]{pdfx}

\title{Example}
\author{John Doe}

\makeatletter

\begin{filecontents}{\jobname.xmpdata}
\Title{\@title}
\Author{\@author}
\end{filecontents}

\makeatother

\begin{document}
test
\end{document}

结果产生以下 xmpdata,使用非转义的标题和作者

%% LaTeX2e file `main.xmpdata'
%% generated by the `filecontents' environment
%% from source `main' on 2017/06/03.
%%
\Title{\@title}
\Author{\@author}

答案1

您可以反过来做并重用 xmpdata 中的数据:

\RequirePackage{filecontents} %if filecontents should overwrite old files

\begin{filecontents}{\jobname.xmpdata}
\Title{My Title}
\Author{John Doe}
\end{filecontents}

\documentclass{article}
\usepackage[a-1b]{pdfx}

\makeatletter
\title{\xmp@Title}
\author{\xmp@Author}
\makeatother

\begin{document}
\maketitle
test
\end{document}

您还可以在第三个位置定义您的标题。它不会在 xmpdate 文件中,但读取时,内容将展开:

\newcommand\mytitle{My Title}
\RequirePackage{filecontents}

\begin{filecontents}{\jobname.xmpdata}
\Title{\mytitle}
\Author{John Doe}
\end{filecontents}

\documentclass{article}
\usepackage[a-1b]{pdfx}

\makeatletter
\title{\mytitle \\ and some subtitle}
\author{\xmp@Author}
\makeatother

\begin{document}
\maketitle
test
\end{document}

相关内容