我正在根据Elsevier 文献类别。
hyperref
我想使用\hypersetup
将生成的PDF文件的标题、作者和关键字设置为相应的值。
问题是我想要\hypersetup
自动生成值;即,它获取论文的标题并将其设置为 PDF 文件的标题,并对作者和关键字字段执行相同操作。
这是我到目前为止想到的:
\documentclass{elsarticle}
\usepackage{hyperref}
\begin{document}
\title{A Test Title}
\author{John Doe}
\author{Jane Doe}
\author{John Smith}
\begin{abstract}
...
\end{abstract}
\begin{keyword}
key1, key2, key3, key4.
\end{keyword}
\maketitle
\makeatletter
\hypersetup{
pdfinfo={
Title={\@title},
Author={},
Keywords={}
}
}
\makeatother
\end{document}
如上所示,我使用了\@title
(由文档类内部定义elsarticle
)。我只是不知道如何自动包含作者姓名和关键字列表(两者都采用逗号分隔格式)。
答案1
不幸的是,elsarticle
它不仅仅将作者列表存储在控制序列中,也不会存储关键字列表,因此您必须创建自己的列表:
\documentclass{elsarticle}
\usepackage{etoolbox,environ}
\makeatletter
\def\auto@authors{\@gobbletwo}
\pretocmd{\@author}{\g@addto@macro\auto@authors{,\space #1}}{}{}
\pretocmd{\@@author}{\g@addto@macro\auto@authors{,\space #2}}{}{}
\let\kept@keyword\keyword
\let\kept@endkeyword\endkeyword
\let\keyword\relax\let\endkeyword\relax
\NewEnviron{keyword}{%
\expandafter\gdef\expandafter\auto@keywords\expandafter{\BODY}%
\kept@keyword\BODY\kept@endkeyword}
\makeatother
\usepackage{hyperref}
\begin{document}
\title{A Test Title}
\author{John Doe}
\author{Jane Doe}
\author{John Smith}
\begin{abstract}
...
\end{abstract}
\begin{keyword}
key1, key2, key3, key4.
\end{keyword}
\maketitle
\makeatletter
\hypersetup{
pdfinfo={
Title={\@title},
Author={\auto@authors},
Keywords={\auto@keywords}
}
}
\makeatother
\end{document}
以下是(相关)输出pdfinfo
:
Title: A Test Title
Subject:
Keywords: key1, key2, key3, key4.
Author: John Doe, Jane Doe, John Smith
Creator: LaTeX with hyperref package