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}
3
  • 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 6, 2012 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 6, 2012 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 7, 2012 at 14:11

1 Answer 1

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}
5
  • 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 6, 2012 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 6, 2012 at 23:49
  • Thanks, I edited my first posting and included the thank you slide.
    – Mike M.
    Jan 6, 2012 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 7, 2012 at 0: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, 2012 at 20:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .