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.
これは、PDFのメタデータを設定するhyperrefと関係があり、改行はあまり意味をなさないので、削除する必要があることを理解しています。
設定しようとすると
\hypersetup{pdfauthor={Name}}
を設定してみても状況は変わらず、hyperrefはまだauthorコマンドを見ているようです。
どうすれば、著者名と電子メールの望ましい表示を得ることができ、なおかつhyperrefを満足させることができるでしょうか?
冗長ではありますが、適切な名前のマクロ texorpdfstring
があり、これは2つの引数を取り、最初の引数を (La)TeX に、2番目の引数を pdf に使用します。
\author{A.U. Thor\texorpdfstring{\\ [email protected]}{}}
のようなものが動作するはずです。
コマンドはドキュメントのプリアンブルで定義されていないので、この場合 author{}
は begin{document}
の後に指定する必要があります。
(そうなんです。)industryの中に別の引数を入れていいのかどうか、頭からわからないという問題を回避しています......(笑)。
Ulrich' の回答は正しく、機能しますが、この問題を回避するためのより一般的で透明性の高い方法があります。
hyperrefパッケージの
pdfstringdefDisableCommands` コマンドを使えば、通常PDFブックマーク文字列に対応していないコマンドを再定義することが可能です。
OPの例では、問題のあるコマンドは http` と
httpt` で、この方法で別のことをするように再定義することができます。
\pdfstringdefDisableCommands{%
\def\\{}%
\def\texttt#1{<#1>}%
}
そうすれば、特に注意することなく、文書内で著者を指定することができます。
\author{Name \\ \texttt{[email protected]}}
と記述すれば、そのまま整形されますが、PDFの情報文字列には 名前 <[email protected]>
として記述されます。
を追加することもできます。
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{naturalnames}{hyperref}
のように、各国語 (非英語) のセクションタイトルのために生成された多くのメッセージを削除するには、documentclass{beamer}
の前に {{10897931}} を追加します。
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing `\PD1\cyrn' on input line 33.
追記: 通常は、簡単なプレゼンテーションでも数千のメッセージが発生し、多くのIDEでは最新のマシンでもこれらのパースに数秒を要することがあります。