pdfstringdefDisableCommands для команд с необязательными аргументами (сноска beamer)

pdfstringdefDisableCommands для команд с необязательными аргументами (сноска beamer)

Я пытаюсь убрать \cite, \footnote, и т. д. из заголовков кадров бимера для строк pdf. Я создаю закладки для всех заголовков кадров с помощью \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}

Связанный контент