pdfstringdefDisableCommands para comandos com argumentos opcionais (nota de rodapé do Beamer)

pdfstringdefDisableCommands para comandos com argumentos opcionais (nota de rodapé do Beamer)

Estou tentando remover \cite, \footnote, etc. dos títulos dos quadros do beamer para strings de PDF. Eu gero marcadores para todos os meus títulos de quadros usando \bookmark[page=\the\c@page,level=3]{\beamer@frametitle}, portanto, sempre que esses comandos surgirem em um título de quadro, eles causarão problemas. Eu sei que posso resolver isso manualmente usando \texorpdfstring, mas prefiro ter padrões que "simplesmente funcionem", pois esses erros são fáceis de ignorar.

Isso funciona bem para os casos básicos de \boldmathand \cite{key}, mas não consigo fazê-lo funcionar com comandos que possuem parâmetros opcionais, como

\footnote[frame]{footnote text}

Eu tentei por exemplo

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

mas isso não funciona.

Exemplo minimamente funcional (o problema está no PDFfavoritos!):

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

Este arquivo terá um marcador como "Frametitle [frame]Footnote". Eu só quero "Frametitle". E quero resolver isso globalmente, não localmente, agrupando-o como \texorpdfstring{\footnote[frame]{Footnote}}{}(isso funciona, mas requer a análise individual de todos os quadros problemáticos). Problema com favoritos

Responder1

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

informação relacionada