9

How can I create a list of all beamer slides (by their frame-title) like the table of contents in a regular latex document? I just need it as a bird's eye view of my presentation, thus it must not be anything fancy.

It should also be able to cope with the following slide that I have at the end of my presentation

\begin{frame}
    {\Huge
        \vspace {0.35\textwidth}
% Don't remove
        \begin{columns}[ccc]
            \begin{column}{0.3\textwidth}
            \end{column}
% Don't remove
            \begin{column}{0.3\textwidth}
                    \textbf{Thanks!}
            \end{column}
% Don't remove
            \begin{column}{0.3\textwidth}
            \end{column}
        \end{columns}
    }
\end{frame}
Mike M.
  • 299
  • Should it form part of your presentation or be output to the .log file? Are you interested in a macro like \showmyoverview that should print the slides? – Werner Jan 06 '12 at 22:51
  • It doesn't matter, as long as it's readable. It's more of a one off thing for "debugging" purposes only. – Mike M. Jan 06 '12 at 22:52
  • Sorry, but I can't upvote. It says I'm not loggend in. But obviously I have a profile page and everything, so I should be logged in, right? – Mike M. Jan 07 '12 at 14:11

1 Answers1

9

Howdy this is my solution:

   \documentclass{beamer}
\usepackage{etextools}
\makeatletter
%Here comes the Framelist
%
\newcommand{\printframelist}{ }
\newcommand{\@savefrml}{ }
\newcommand{\frameliston}{%
\let\oldframetitle\frametitle
\newcommand{\tgframelistfronthook}{$\cdot$}
\newcommand{\tgframelistbackhook}{\\ }
\newcommand\myaddto[1]{%
  \write\@auxout{\noexpand\@writefile{frml}{\noexpand ##1}}}
  \renewcommand{\printframelist}{\@starttoc{frml}}
\renewcommand{\frametitle}[1]{\oldframetitle{##1}%
\xifstrequal{##1}{\@savefrml}{}{
\myaddto{ \noexpand%
\tgframelistfronthook ##1 \noexpand\tgframelistbackhook}%
}
\global\def\@savefrml{##1}%
}
}


\makeatother
\frameliston
\begin{document}
\frame{\frametitle{FIRST}}
\frame{\frametitle{Second}}
\frame{\frametitle{Third}}
\begin{frame}
\printframelist
\end{frame}
% The following should turn the framlist off for one slide when\anotherft is used  
\let\anotherft\oldframetitle
\frame{\anotherft{FIRST A}}
\frame{\frametitle{Second A}}
\frame{\frametitle{Third A}}
\end{document}

This uses the very basic LaTeX mechanism on creating external files (like toc). extetools are used to compare strings and decide to print or not to print the title (for overlays). See in bitbucket.org/tobig/hohenheimbeamertheme/

Redefine \tgframelistbackhookand \tgframelistfronthook as you please.

EDIT: What you are showing in your example given above is that you put the whole columns stuff into the frametitle. And it breaks. Remember the frame environment is defined as

    \begin{frame}<⟨overlay specification⟩>[<⟨default overlay specification⟩>][⟨options⟩]{⟨title⟩}{⟨subtitle⟩}
 ⟨environment contents⟩
    \end{frame}

(see beamer documentation)

The first brakets after \begin{frame} will be interpreted as the title. This will work:

\begin{frame}
    \Huge
        \vspace {0.35\textwidth}
% Don't remove
        \begin{columns}
            \begin{column}{0.3\textwidth}
            \end{column}
% Don't remove
            \begin{column}{0.3\textwidth}
                    \textbf{Thanks!}
            \end{column}
% Don't remove
            \begin{column}{0.3\textwidth}
            \end{column}
        \end{columns}
\end{frame}
bloodworks
  • 10,178
  • Thanks, it's working just perfect, except for my "thank you" slide at the end (it's a bit hacked I suppose) which causes LaTeX to choke and not produce a PDF file. How would a \framelistoff look like? I tried \newcommand{\framelistoff}{\renewcommand\frametitle\oldframetitle} which is not working. – Mike M. Jan 06 '12 at 23:45
  • Howdy maybe you could edit your question and add a minimal working example that shows your hack so that teh code could be adapted. A \framelistoff can´t be realised but a simple \let\frametile\oldframetitleshould shut of the function completly (printframlist will produce just nothing) – bloodworks Jan 06 '12 at 23:49
  • Thanks, I edited my first posting and included the thank you slide. – Mike M. Jan 06 '12 at 23:56
  • @bloodworks: thanks, that explains a lot. It never occurred to me that LaTeX will interpret the curly braces as the frame title. – Mike M. Jan 07 '12 at 00:49
  • @MikeM. Well but it does. One can make that visible by adding \usetheme{AnnArbor} for instance. (The Yellow Frametitle background will spread over the whole frame). The beameruserguide names that frametitle argument "optional" (which is not that perfect, because usually optional arguments are in square brackets ). When you add e.g. a \par beamer will not longer interpret the second {} as the frametitle. But in this case those brackets aren´t necessary here. – bloodworks Jan 12 '12 at 20:32