При компиляции презентации beamer и использовании следующей команды \author
\author{Name \\ \texttt{[email protected]}}
я получаю следующее предупреждение о гиперрефе в моем лог-файле
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing `\\' on input line 15.
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing `\new@ifnextchar' on input line 15.
Я понимаю, что это связано с установкой hyperref в метаданных PDF, где перевод строки не имеет особого смысла и должен быть удален.
Пытаясь установить
\hypersetup{pdfauthor={Name}}
не меняет ситуацию, похоже, что hyperref все еще смотрит на команду author.
Как мне добиться желаемого отображения имени автора с электронной почтой и при этом сохранить гиперреф?
Существует метко, хотя и многословно, названный макрос \texorpdfstring
, который принимает два аргумента и использует первый для (La)TeX, а второй для pdf, так что что-то вроде
\author{A.U. Thor\texorpdfstring{\\ [email protected]}{}}
должно работать.
Команда не определена в преамбуле документа, поэтому \author{}
в этом случае должен быть указан после \begin{document}
.
(Да, я'избегаю вопроса о том, что я'не знаю, разрешено ли \url внутри другого аргумента...)
Хотя ответ Ульриха правильный и работает, есть более общий и прозрачный способ обойти эту проблему.
Команда \pdfstringdefDisableCommands
из пакета hyperref
может быть использована для переопределения команд, которые обычно не поддерживаются в строках закладок PDF.
В примере OP, нарушающими правила командами являются \\\\
и \texttt
, которые можно переопределить таким образом, чтобы они выполняли что-то другое:
\pdfstringdefDisableCommands{%
\def\\{}%
\def\texttt#1{<#1>}%
}
Тогда автор может быть указан в документе без особых усилий:
\author{Name \\ \texttt{[email protected]}}
и будет отформатирован как есть, но затем помещен как Name <[email protected]>
в информационных строках PDF.
Можно также добавить
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{naturalnames}{hyperref}
перед `\documentclass{beamer}}, чтобы удалить многие сообщения, возникающие из-за национальных (неанглийских) названий разделов, например
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing `\PD1\cyrn' on input line 33.
P.S. Обычно даже для простой презентации таких сообщений бывает до нескольких тысяч, и их разбор занимает несколько дополнительных секунд для многих IDE даже на современном компьютере.