\hypersetup{pdfauthor=...} 中的 \and 问题

\hypersetup{pdfauthor=...} 中的 \and 问题

我使用自定义宏来设置文档及其元数据的作者。在我开始与同事一起编写文档之前,它一直运行良好。

这是代码:

%----------------------------------------------------------------------------------------
%    PDF INFO
%----------------------------------------------------------------------------------------
\newcommand*{\mytitle}{Equacions diferencials}
\newcommand*{\myauthor}{Alfredo Hernández \and John Smith} 
\newcommand*{\myuni}{Universitat Autònoma de Barcelona, Departament de Física}
\newcommand*{\mydate}{\normalsize 2013-2014}

\usepackage{hyperxmp}
\hypersetup{pdfauthor={\myauthor}, pdftitle={\mytitle}}

%----------------------------------------------------------------------------------------
%    TITLE SECTION AND DOCUMENT BEGINNING
%----------------------------------------------------------------------------------------
\newcommand{\horrule}[1]{\rule{\linewidth}{#1}}
\title{
    \normalfont
    \small \scshape{\myuni} \\ [25pt] 
    \horrule{0.5pt} \\[0.4cm]
    \huge \mytitle \\
    \horrule{2pt} \\[0.5cm]
}
\author{\myauthor}
\date{\mydate}

\begin{document}

据我所知,该命令\and是设置多个作者的正确方法。问题是hypersetup尝试写入元数据时崩溃(当然,如果我删除 \and,文档可以完美呈现)。

您是否知道在元数据和标题本身中继续使用 \myauthor 命令的任何解决方法?


可能有效的解决方案:

  1. 我尝试过&在作者之间使用,但 ShareLatex 告诉我这\cr更好。但是,我不知道\cr命令的作用是什么,我想避免使用我不知道的代码,而且我甚至不知道这是否是编码方面的正确解决方案。
  2. 我认为使用 \author1 和 \author2 可以解决我的问题,( \author{\author1 \and \author2}; \hypersetup{pdfauthor={\author1 , \author2}),但同样,我不认为这是最好的解决方案。

答案1

两种方法:

  1. \pdfstringdefDisableCommands{\def\and{and }}加载后添加hyperref

  2. 为 TeX 和 PDF 定义两个不同的字符串

    \newcommand*{\myauthor}{%
      \texorpdfstring{Alfredo Hernández \and John Smith}
        {Alfredo Hernández, John Smith}}
    

对于第一个解决方案,元数据中的作者将是

阿尔弗雷多·埃尔南德斯和约翰·史密斯

使用第二个,你将获得

阿尔弗雷多·埃尔南德斯、约翰·史密斯

当然,第二种方式更加灵活。

相关内容