
나는 XeLaTeX
내 fontspec
문서 polyglossia
를 biblatex
.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= ...}
.
내가 여기서 무엇을 놓치고 있는 걸까요? 이 사이트에는 매우 유사한 질문이 꽤 많이 있지만 내 특정 문제를 해결하는 것은 없는 것 같습니다.
- 하이퍼참조 pdfinfo 내 저자 이름 및 제목에 ASCII가 아닌 문자 사용, 하지만 이미 사용 중이에요
\hypersetup
- 또한 줄 바꿈 없이 새 변수를 생성해 보았지만 오류가 전체에 전파되는 것 같습니다.
- 특수 문자(예: 공백이어야 함)에 코드를 사용해도
\040
아무런 차이가 없습니다.
- hyperref: pdf제목 및 잘못된 문자 인코딩, 같은 주장.
- pdfinfo가 작동하지 않는 것 같습니다, 다시 같은 주장.
- hyperref : pdftitle 및 기타 필드의 긴 줄 바꿈. 내 문제를 해결하지 마십시오
\textLF
.\textCR
Foxit Reader는 Adobe Acrobat 및 Acrobat Reader가 첫 번째 줄만 표시하는 반면 해당 문자를 인식하지 못합니다. 내 문제는hyperref
. - ASCII가 아닌 문자가 hyperref의 pdftitle에 표시되지 않습니다: 'unicode' 옵션에 버그가 있습니까?. 내 경우에는
\usepackage[pdfencoding=unicode]{hyperref}
아무것도 변경되지 않습니다. - 하이퍼참조가 \title 및 \author에서 pdfinfo를 가져오도록 만듭니다.. 물론,
\usepackage[pdfusetitle]{hyperref}
the is obsolete를 사용하면\hypersetup
줄 바꿈이 자동으로 공백(pdftitle의 경우)과 쉼표(pdfauthor의 경우)로 변환됩니다. 그러나 앞서 언급했듯이 정적 텍스트와 의 조합을 원하므로\thetitle
이는\hypersetup
불가피합니다.- 이 접근 방식은 처음에
\@title
정의하는 데 이미 사용되었으므로 도움이 되지 않습니다 .\thetitle
- 이 접근 방식은 처음에
내 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}