获取给定文档中的作者和关键字列表

获取给定文档中的作者和关键字列表

我正在根据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

相关内容