Beamer 附录引起的 hyperref 警告

Beamer 附录引起的 hyperref 警告

以下代码会导致以下警告:“包 hyperref 警告:PDF 字符串中不允许使用令牌(PDFDocEncoding):在输入的第 16 行删除‘\translate’。”

(注意:第 16 行是紧接着的空行\appendix。)

即使我删除了补充幻灯片并保留\appendix为 之前的最后一行,也会出现\end{document}此警告。如果我完全删除附录,则不会出现警告。生成的 .pdf 文件显然是正确的,但我希望能够包含附录而不会遇到警告。

我查看了之前回答的问题,找到了对该\texorpdfstring命令的引用,但在这种情况下我似乎无法让它工作。有人找到解决方案了吗,或者有人能指出我可能错过的之前回答的问题吗?谢谢!

\documentclass{beamer}
\title{The Title}
\author{The Author}
\begin{document}

\begin{frame}
\titlepage
\end{frame}

\section{First Section} 
\begin{frame}\frametitle{First Section} 
This is a slide.
\end{frame}

\appendix

\section{Appendix}
\begin{frame}\frametitle{Supplemental Material} 
This is a supplemental slide.
\end{frame}

\end{document}

答案1

您可以使用以下方法解决此警告

\documentclass{beamer}
\title{The Title}
\author{The Author}


\renewcommand\appendixname{Appendix}

\begin{document}

\begin{frame}
\titlepage
\end{frame}

\section{First Section} 
\begin{frame}\frametitle{First Section} 
This is a slide.
\end{frame}

\appendix

\section{Appendix}
\begin{frame}\frametitle{Supplemental Material} 
This is a supplemental slide.
\end{frame}

\end{document}

编辑

警告原因解释如下@Gonzalo Medina评论

问题在于 beamerbasesection.sty 中 \appendix 的定义使用了 \part{\appendixname},而 \appendixname 在 beamerbasemisc.sty 中定义为 \translate{Appendix}

github上相关问题:

https://github.com/josephwright/beamer/issues/449

答案2

\translate在包中定义translator。它使用可选参数定义,并在实现中有许多赋值。因此它不可扩展,也不能以这种方式在书签中使用。

以下代码提供了,这是不支持可选参数\bkmtranslate的粗略定义。此外,原始语言搜索未实现。相反,语言被定义为宏。默认值为。如果未找到翻译,则使用参数而不进行修改,其行为与原始行为相同,只是原始行为可以将搜索扩展到多种语言。\translate\translate\bkmtranslateto\languagename\translate\translate

\pdfstringdefDisableCommands用于\bkmtranslate替换\translate书签中的安装:

\documentclass{beamer}

\makeatletter
\newcommand*{\bkmtranslateto}{\languagename}
\newcommand*{\bkmtranslate}[1]{%
  \ifcsname tr@@@\bkmtranslateto @#1\endcsname
    \csname tr@@@\bkmtranslateto @#1\endcsname
  \else
    #1%
  \fi
}
\pdfstringdefDisableCommands{\let\translate\bkmtranslate}
\makeatother

\usepackage{bookmark}% not needed here, but faster bookmark updates

答案3

...这是一个老问题,但我认为值得一提的是,这也可以通过此处提到的建议来解决: https://tex.stackexchange.com/a/330980/172810

...例如,只需将其添加到您的序言中:

\pdfstringdefDisableCommands{%
\def\translate#1{#1}%
}

答案4

使用 babel 包也可以解决这个问题,因为它\translate{Appendix}可以产生一个合适的名字。

相关内容