Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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}
share|improve this question
    
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 '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 6 '12 at 22:52
    
You should not only accept, but also upvote bloodwork's answer. –  lockstep Jan 7 '12 at 0:12
    
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 '12 at 14:11

1 Answer 1

up vote 8 down vote accepted

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}
share|improve this answer
    
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 '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 6 '12 at 23:49
    
Thanks, I edited my first posting and included the thank you slide. –  Mike M. Jan 6 '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 7 '12 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 '12 at 20:32

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.