
Utilizo XeLaTeX
with fontspec
, polyglossia
y paquetes biblatex
( hyperref
etc.) para componer mis documentos como \documentclass[11pt,a4paper]{article}
. El hyperref
paquete es simplemente increíble, sin embargo, encontré un error realmente molesto.
Quiero pdftitle
usar una combinación de texto estático y una variable previamente definida \thetitle
. Hasta ahora, todo bien. El problema surge cuando esta variable contiene saltos de línea ( \\
). hyperref
Parece simplemente omitirlos automáticamente, pero quiero poder controlar esto manualmente.
Para deshacerme de los saltos de línea utilizo 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}
(El crédito por esto va principalmente aManera sencilla de eliminar el formato (por ejemplo, saltos de línea).) Esta macro funciona bien en todo el documento, excepto en \hypersetup{pdftitle= ...}
.
¿Que me estoy perdiendo aqui? Hay muchas preguntas similares en este sitio, pero ninguna parece resolver mi problema particular:
- Uso de caracteres no ASCII en nombres de autores y títulos dentro de hyperref pdfinfo, pero ya uso
\hypersetup
- También intenté crear una nueva variable sin saltos de línea, pero el error parece propagarse por todas partes.
- El uso de un código para caracteres especiales (por ejemplo,
\040
debe ser un espacio) no produce ninguna diferencia.
- hyperref: título de pdf y codificación de caracteres incorrecta, mismo argumento.
- pdfinfo no parece estar funcionando, mismo argumento nuevamente.
- hyperref: rompe líneas largas en pdftitle y otros campos.
\textLF
y\textCR
no solucionas mi problema. Foxit Reader no reconoce esos caracteres, mientras que Adobe Acrobat y Acrobat Reader muestran solo la primera línea. Mi problema radica enhyperref
. - Los caracteres que no son ASCII no se muestran en el título pdf de Hyperref: ¿error en la opción 'unicode'?. En mi caso,
\usepackage[pdfencoding=unicode]{hyperref}
no cambia nada. - Haga que hyperref tome pdfinfo de \title y \author. Es cierto que si uso
\usepackage[pdfusetitle]{hyperref}
está\hypersetup
obsoleto y los saltos de línea se convierten automáticamente a espacio (para pdftitle) y a coma (para pdfauthor). Sin embargo, como se señaló anteriormente, quiero una combinación de texto estático y\thetitle
, por lo que\hypersetup
es inevitable.- El
\@title
enfoque no ayudaría porque ya se utiliza para definir\thetitle
en primer lugar.
- El
Aquí está mi 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}
En resultado de:
Ayúdenme a comprender y corregir este comportamiento para poder usar mi \replacelinebreaks
macro o lograr mi objetivo de alguna otra manera. Su ayuda es muy apreciada.
Respuesta1
Siempre puedes redefinir la forma en que Hyperref maneja dichos tokens:
\documentclass{article}
\usepackage{hyperref}
\newcommand\myvar{abc\\cde}
\pdfstringdefDisableCommands{\def\\{XXX}}
\hypersetup{pdftitle= abc\\ cde\myvar}
\begin{document}
blub
\end{document}
O puede definir su variable para que se use en lugares sensibles \texorpdfstring
:
\documentclass{article}
\usepackage{hyperref}
\newcommand\myvar{abc\texorpdfstring{\\}{XXX}cde}
\hypersetup{pdftitle= abcXXXcde\myvar}
\begin{document}
\myvar
\end{document}