オプション引数を持つコマンドの pdfstringdefDisableCommands (ビーマー脚注)

オプション引数を持つコマンドの pdfstringdefDisableCommands (ビーマー脚注)

私は、PDF 文字列の Beamer フレーム タイトルから、、などを削除しようとしています。 を使用してすべてのフレーム タイトルのブックマークを生成する\citeので、フレーム タイトルにこのようなコマンドが発生するたびに問題が発生します。 を使用して手動で解決できることはわかっていますが、これらのエラーは見逃されやすいため、「そのまま機能する」デフォルトを用意したいと思います。\footnote\bookmark[page=\the\c@page,level=3]{\beamer@frametitle}\texorpdfstring

\boldmathこれは、およびの基本的なケースでは問題なく動作します\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」のようなブックマークがあります。必要なのは「Frametitle」だけです。そして、これをローカルではなくグローバルに解決したいのですが、ラップすることで解決したいのです\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}

関連情報