
Я взломал таблицу кадров для проектора и получил странную ситуацию, которую не понимаю.
\documentclass{beamer}
\makeatletter
\newcommand\listofframes{\@starttoc{lbf}}
\makeatother
\setbeamertemplate{background}{
\addcontentsline{lbf}{section}{\protect\insertframetitle}
}
\begin{document}
\begin{frame}[allowframebreaks]{Title1}
Some text1
\end{frame}
\begin{frame}[allowframebreaks]{Title2}
Some text2
\end{frame}
\setbeamertemplate{background}{}
\begin{frame}[allowframebreaks]{List}
\listofframes
\end{frame}
\end{document}
Две записи в списке — «Список 1» и «Список 1», тогда как должны быть «Заголовок 1» и «Заголовок 2».
Если я удалю, \protect
то получу странное сообщение об ошибке:
! Argument of \XC@col@rlet has an extra }.
<inserted text>
\par
l.15 \end{frame}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Чточто здесь не так?
Примечание 1:Похоже, что этот минимальный оскорбительный пример критически зависит от довольно большого количества деталей. Например, если я уберу allowframebreaks
в первых двух слайдах, все будет в порядке (при условии, что я также уберу \protect
- если я оставлю его, я получу неправильные записи).
Заметка 2:Я использую шаблон фона, поскольку только он вызывается на всех слайдах продолжения; переход к заголовку кадра невозможен.