pdfstringdefDisableCommands für Befehle mit optionalen Argumenten (Beamer-Fußnote)

pdfstringdefDisableCommands für Befehle mit optionalen Argumenten (Beamer-Fußnote)

Ich versuche \cite, \footnote, , usw. aus den Beamer-Frame-Titeln für PDF-Strings zu entfernen. Ich generiere Lesezeichen für alle meine Frame-Titel mit \bookmark[page=\the\c@page,level=3]{\beamer@frametitle}, daher verursachen solche Befehle, wenn sie in einem Frame-Titel vorkommen, Probleme. Ich weiß, dass ich diese manuell mit lösen kann \texorpdfstring, aber ich hätte lieber Standardeinstellungen, die „einfach funktionieren“, da diese Fehler leicht übersehen werden.

Dies funktioniert in den grundlegenden Fällen von \boldmathund einwandfrei \cite{key}, aber ich bekomme es nicht mit Befehlen zum Laufen, die optionale Parameter haben, wie z. B.

\footnote[frame]{footnote text}

Ich habe zum Beispiel versucht

\pdfstringdefDisableCommands{%
  \def\boldmath{}% easy case you'll find in many examples
  \def\cite{\@gobble}% supposedly does not work with optionals either
  \renewcommand<>{\footnote}[1][]{}%
}

aber das funktioniert nicht.

Minimal funktionierendes Beispiel (das Problem liegt im PDFMerkzettel!):

\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}

Diese Datei wird ein Lesezeichen wie „Frametitle [frame]Footnote“ haben. Ich möchte nur „Frametitle“. Und ich möchte das global lösen, nicht lokal durch Umbrechen als \texorpdfstring{\footnote[frame]{Footnote}}{}(das funktioniert, erfordert aber, alle problematischen Frames einzeln durchzugehen). Problem mit Lesezeichen

Antwort1

\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}

verwandte Informationen