Hyperref pdftitle gerencia quebras de linha de uma maneira estranha

Hyperref pdftitle gerencia quebras de linha de uma maneira estranha

Eu uso XeLaTeXwith fontspec, polyglossiae packages biblatex( hyperrefetc.) para compor meus documentos como \documentclass[11pt,a4paper]{article}. O hyperrefpacote é simplesmente incrível, no entanto, encontrei um bug realmente irritante.

Quero pdftitleusar uma combinação de algum texto estático e uma variável definida anteriormente \thetitle. Até agora tudo bem. O problema surge quando esta variável contém quebras de linha ( \\). hyperrefparece simplesmente omiti-los automaticamente, mas quero poder controlar isso manualmente.

Para me livrar das quebras de linha eu uso esta macro \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}

(O crédito por isso vai principalmente paraManeira fácil de remover formatação (por exemplo, quebras de linha).) Esta macro funciona bem em qualquer lugar do documento - exceto em \hypersetup{pdftitle= ...}.

O que estou perdendo aqui? Existem muitas perguntas semelhantes neste site, mas nenhuma parece resolver meu problema específico:

Aqui está meu 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}

Isso resulta em:

insira a descrição da imagem aqui

Por favor, ajude-me a entender e corrigir esse comportamento, para que eu possa usar minha \replacelinebreaksmacro ou atingir meu objetivo de alguma outra forma. Sua ajuda é muito apreciada.

Responder1

Você sempre pode redefinir a maneira como o hyperref lida com esses tokens:

\documentclass{article}
\usepackage{hyperref}

\newcommand\myvar{abc\\cde}

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

\begin{document}
blub

\end{document}

insira a descrição da imagem aqui

Ou você pode definir sua variável para que ela seja usada em locais sensíveis \texorpdfstring:

\documentclass{article}
\usepackage{hyperref}

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

\hypersetup{pdftitle= abcXXXcde\myvar}

\begin{document}
\myvar

\end{document}

informação relacionada