.png)
Я пытаюсь убрать \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}