多个 PDF 作者的动态列表

多个 PDF 作者的动态列表

我想构建一个允许使用多个作者的文档类。为此,我创建了一个命令来添加任意数量的作者,并将他们存储到诸如 、 等命令中。\authornamei\authornameii部分已经完成,但现在我想将此列表放入 PDF 作者字段。我的想法是使用\hypersetup包的命令\hyperref,但它表现得很奇怪。这里肯定有一些我不明白的地方,所以我需要你的帮助!

这个最小的工作示例可能会有所帮助:

\documentclass{article}

\newcounter{L}
\newcommand{\aaai}{first}
\newcommand{\aaaii}{second}
\setcounter{L}{2}

\newcounter{C}

\newcommand{\buildlist}{%
    \csname aaa\roman{C}\endcsname%
    \ifnum\value{C}<\value{L}%
        ,%
        \stepcounter{C}%
        \buildlist%
    \fi%
}

\usepackage{hyperref}

\begin{document}
    \setcounter{C}{1}
    \let\ccc\buildlist

    ccc: \ccc

    \hypersetup{
        pdfauthor = {\ccc}
    }
\end{document}

使用此代码,我获得了一个内容符合预期的 PDF:。ccc: first,second但是,在 PDF 数据中,作者字段只是second。我发现的唯一解释是\ccc再次计算。然后,作为一种解决方法,我尝试在调用之前将计数器重置为 1 \hypersetup,但它会引发编译错误:

! Missing \endcsname inserted.
<to be read again> 
                   \csname\endcsname 
l.30    }

如果我不先尝试显示,也会遇到同样的错误\ccc。有什么想法吗?

答案1

\documentclass{article}

\usepackage{xparse}
\ExplSyntaxOn
\seq_new:N\g_jeremy_authors_seq
\NewDocumentCommand\newauthor { m }
{
  \seq_gput_right:Nn  \g_jeremy_authors_seq { #1 }
}

\newcommand\authorlist
 {
  \seq_use:Nn \g_jeremy_authors_seq{,~}
 }
\ExplSyntaxOff
\newauthor{first}
\newauthor{second}
\usepackage{hyperref}

 \hypersetup{
        pdfauthor = {\authorlist}
    }

\begin{document}
\authorlist
\end{document}

相关内容