以下代码会导致以下警告:“包 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上相关问题:
答案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}
可以产生一个合适的名字。