
我正在嘗試從 pdf 字串的投影機框架標題中刪除 、 等\cite
。\footnote
我使用 為所有框架標題產生書籤\bookmark[page=\the\c@page,level=3]{\beamer@frametitle}
,因此每當框架標題中出現此類命令時,它們就會造成麻煩。我知道我可以使用手動解決這些問題\texorpdfstring
,但我寧願有“正常工作”的預設值,因為這些錯誤很容易被忽略。
這適用於\boldmath
and的基本情況\cite{key}
,但我無法讓它與具有可選參數的命令一起使用,例如
\footnote[frame]{footnote text}
我已經嘗試過例如
\pdfstringdefDisableCommands{%
\def\boldmath{}% easy case you'll find in many examples
\def\cite{\@gobble}% supposedly does not work with optionals either
\renewcommand<>{\footnote}[1][]{}%
}
但這不起作用。
最小工作範例(問題在 PDF 中)書籤!
\documentclass{beamer}
\usepackage{hyperref,bookmark}
\makeatletter
\setbeamertemplate{frametitle}{\insertframetitle
\bookmark[page=\the\c@page,level=3]{\beamer@frametitle}}
\makeatother
\begin{document}
\begin{frame}{Frametitle \footnote[frame]{Footnote}}
Frame text
\end{frame}
\end{document}
該文件將有一個書籤,如“Frametitle [frame]Footnote”。我只想要「框架標題」。我想在全球範圍內解決這個問題,而不是透過包裝為本地解決這個問題\texorpdfstring{\footnote[frame]{Footnote}}{}
(這可行,但需要單獨檢查所有有問題的幀)。
答案1
\documentclass{beamer}
\usepackage{hyperref,bookmark}
\usepackage{xparse}
\makeatletter
\setbeamertemplate{frametitle}{\insertframetitle
\bookmark[page=\the\c@page,level=3]{\beamer@frametitle}}
\makeatother
\NewExpandableDocumentCommand\gobbleoptandarg{om}{}
\pdfstringdefDisableCommands{\let\footnote\gobbleoptandarg}%
\begin{document}
\begin{frame}{Frametitle \footnote[frame]{Footnote}}
Frame text
\end{frame}
\end{document}