
Hackeei uma mesa de frames para beamer e me deparei com uma situação estranha que não entendo.
\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}
As duas entradas na lista são "Lista 1" e "Lista 1", mas deveriam ser "Título 1" e "Título 2".
Se eu remover \protect
, recebo uma mensagem de erro estranha:
! 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.
O queestá dando errado aqui?
Nota 1:Parece que esses exemplos mínimos ofensivos dependem crucialmente de vários detalhes. Por exemplo, se eu remover o allowframebreaks
nos dois primeiros slides, está tudo bem (desde que eu também remova o \protect
- se eu deixar, recebo as entradas erradas).
Nota 2:Eu uso o modelo de plano de fundo, pois apenas esse modelo é chamado em todos os slides de continuação; mudar para o frametitle não é uma opção.