我使用自定义宏来设置文档及其元数据的作者。在我开始与同事一起编写文档之前,它一直运行良好。
这是代码:
%----------------------------------------------------------------------------------------
% 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 命令的任何解决方法?
可能有效的解决方案:
- 我尝试过
&
在作者之间使用,但 ShareLatex 告诉我这\cr
更好。但是,我不知道\cr
命令的作用是什么,我想避免使用我不知道的代码,而且我甚至不知道这是否是编码方面的正确解决方案。 - 我认为使用 \author1 和 \author2 可以解决我的问题,(
\author{\author1 \and \author2}
;\hypersetup{pdfauthor={\author1 , \author2}
),但同样,我不认为这是最好的解决方案。
答案1
两种方法:
\pdfstringdefDisableCommands{\def\and{and }}
加载后添加hyperref
为 TeX 和 PDF 定义两个不同的字符串
\newcommand*{\myauthor}{% \texorpdfstring{Alfredo Hernández \and John Smith} {Alfredo Hernández, John Smith}}
对于第一个解决方案,元数据中的作者将是
阿尔弗雷多·埃尔南德斯和约翰·史密斯
使用第二个,你将获得
阿尔弗雷多·埃尔南德斯、约翰·史密斯
当然,第二种方式更加灵活。