Hyperref pdftitle 以奇怪的方式管理换行符

Hyperref pdftitle 以奇怪的方式管理换行符

我使用XeLaTeXfontspecpolyglossia等包将我的文档排版为。 这个包很棒,但是我发现了一个非常烦人的错误biblatexhyperref\documentclass[11pt,a4paper]{article}hyperref

我希望pdftitle使用一些静态文本和先前定义的变量的组合\thetitle。到目前为止一切顺利。当此变量包含换行符(\\)时,就会出现问题。hyperref似乎只是自动省略它们,但我希望能够手动控制它。

为了摆脱换行符,我使用这个宏\replacelinebreaks{}{}

% A macro to remove line breaks from any text #1 and replace them 
% with #2 (can be void). E.g.: \replacelinebreaks{\thetitle}{\ }. 
\newcommand{\replacelinebreaks}[2]{%
    \begingroup\def\\{#2}#1\endgroup}

(这主要归功于删除格式(例如换行符)的简单方法) 此宏在整个文档的任何地方都能正常工作 - 除了\hypersetup{pdftitle= ...}

我在这里错过了什么?这个网站上有很多非常相似的问题,但似乎没有一个能解决我的特定问题:

这是我的 MWE:

% !BIB TS-program = biber
% !TeX program = xelatex
% !TeX encoding = UTF-8
% !TeX spellcheck = en_GB

\documentclass[11pt,a4paper]{article}
\usepackage{polyglossia}
\usepackage{hyperref}

\newcommand{\replacelinebreaks}[2]{\begingroup\def\\{#2}#1\endgroup}

\def\thetitle{Type the\\Minimum Working Example\\Title Here\\}      
\def\firstauthor{Abra}      % Only the first author 
\def\theauthor{\firstauthor %  Add all other authors (no spaces! Use "\\" and "%")
\\Ca%                   
\\Dabra%
} 

\begin{document}
\hypersetup{
    pdftitle    = MWE No.1 \space -- \replacelinebreaks{\thetitle}{\ },
    pdfauthor   = \replacelinebreaks{\theauthor}{; },
}

\begin{center}
    {\Huge\thetitle}
\end{center}
\end{document}

其结果是:

在此处输入图片描述

请帮助我理解并纠正此行为,以便我可以使用\replacelinebreaks宏或以其他方式实现我的目标。非常感谢您的帮助。

答案1

您始终可以重新定义 hyperref 处理此类标记的方式:

\documentclass{article}
\usepackage{hyperref}

\newcommand\myvar{abc\\cde}

\pdfstringdefDisableCommands{\def\\{XXX}}
\hypersetup{pdftitle= abc\\ cde\myvar}

\begin{document}
blub

\end{document}

在此处输入图片描述

或者您可以定义变量,以便它在合理的位置使用\texorpdfstring

\documentclass{article}
\usepackage{hyperref}

\newcommand\myvar{abc\texorpdfstring{\\}{XXX}cde}

\hypersetup{pdftitle= abcXXXcde\myvar}

\begin{document}
\myvar

\end{document}

相关内容