Hyperref pdftitle verwaltet Zeilenumbrüche auf seltsame Weise

Hyperref pdftitle verwaltet Zeilenumbrüche auf seltsame Weise

Ich verwende die Pakete XeLaTeXmit fontspec, polyglossia, biblatexund hyperref(usw.), um meine Dokumente als zu setzen \documentclass[11pt,a4paper]{article}. Das hyperrefPaket ist einfach großartig, ich habe jedoch einen wirklich nervigen Fehler gefunden.

Ich möchte pdftitleeine Kombination aus statischem Text und einer zuvor definierten Variable verwenden \thetitle. Soweit, so gut. Das Problem entsteht, wenn diese Variable Zeilenumbrüche enthält ( \\). hyperrefscheint diese einfach automatisch wegzulassen, aber ich möchte dies manuell steuern können.

Um die Zeilenumbrüche loszuwerden, verwende ich dieses Makro \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}

(Der Verdienst dafür gebührt vor allemEinfache Möglichkeit, Formatierungen (z. B. Zeilenumbrüche) zu entfernen.) Dieses Makro funktioniert im gesamten Dokument einwandfrei – außer in \hypersetup{pdftitle= ...}.

Was übersehe ich hier? Es gibt eine ganze Reihe sehr ähnlicher Fragen auf dieser Site, aber keine scheint mein spezielles Problem zu lösen:

Hier ist mein 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}

Es fuehrt zu:

Bildbeschreibung hier eingeben

Bitte helfen Sie mir, dieses Verhalten zu verstehen und zu korrigieren, damit ich entweder mein \replacelinebreaksMakro verwenden oder mein Ziel auf andere Weise erreichen kann. Ihre Hilfe wird sehr geschätzt.

Antwort1

Sie können die Art und Weise, wie Hyperref mit solchen Token umgeht, jederzeit neu definieren:

\documentclass{article}
\usepackage{hyperref}

\newcommand\myvar{abc\\cde}

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

\begin{document}
blub

\end{document}

Bildbeschreibung hier eingeben

Oder Sie definieren Ihre Variable so, dass sie an sinnvollen Stellen verwendet wird \texorpdfstring:

\documentclass{article}
\usepackage{hyperref}

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

\hypersetup{pdftitle= abcXXXcde\myvar}

\begin{document}
\myvar

\end{document}

verwandte Informationen