Hyperref pdftitle은 이상한 방식으로 줄 바꿈을 관리합니다.

Hyperref pdftitle은 이상한 방식으로 줄 바꿈을 관리합니다.

나는 XeLaTeXfontspec문서 polyglossiabiblatex.hyperref\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}

관련 정보