[Tex/LaTex] Is it possible to convert a beamer presentation directly to an a0 Poster

beamerbeamerposterpaper-size

Suppose I have a Beamer presentation with 20 slides, and I need to make a poster out of them in 5 minutes.

Is it possible to have Beamer output the slides into a 5×4 grid on an a0 sized pdf?

I'm not really sure how I'd go about doing this, but I have a hunch that it should be possible. Any thoughts?

Best Answer

This is eminently possible using pgfpages. It doesn't have a 20 on 1 layout built in (the biggest being 16 on 1) but it's not hard to define one (a bit tedious without a for loop).

\documentclass{beamer}
%\url{http://tex.stackexchange.com/q/78041/86}

\usepackage{pgffor}
\usepackage{pgfpages}
\usepackage{pgf}

\pgfpagesdeclarelayout{20 on 1}
{
  \edef\pgfpageoptionheight{\the\paperheight}
  \edef\pgfpageoptionwidth{\the\paperwidth}
  \edef\pgfpageoptionborder{0pt}
}
{
  \pgfpagesphysicalpageoptions
  {
    logical pages=20,
    physical height=\pgfpageoptionheight,
    physical width=\pgfpageoptionwidth
  }
  \def\pgfpgtemp{}
  \foreach \i in {1,...,4} {
    \foreach \j in {1,...,5} {
      \pgfmathtruncatemacro\n{(\i-1)*5 + \j}
      \pgfmathsetmacro\ri{1 - (\i - .5)/4}
      \pgfmathsetmacro\rj{(\j - .5)/5}
      \edef\temp{%
        \noexpand\pgfpageslogicalpageoptions{\n}
      {
        border code=\noexpand\pgfsetlinewidth{2pt}\noexpand\pgfstroke,
        border shrink=\noexpand\pgfpageoptionborder,
        resized width=.25\noexpand\pgfphysicalwidth,
        resized height=.2\noexpand\pgfphysicalheight,
        center=\noexpand\pgfpoint{\rj\noexpand\pgfphysicalwidth}{\ri\noexpand\pgfphysicalheight}
      }
      }
      \expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter\pgfpgtemp\expandafter\expandafter\expandafter{\expandafter\pgfpgtemp\temp}
    }
  }
  \pgfpgtemp
}

\pgfpagesuselayout{20 on 1}[a0paper, border shrink=5mm,landscape]

\begin{document}

\foreach \k in {1,...,20} {

\begin{frame}{Frame \k}

This is frame \k.
It is exciting.
\end{frame}
}
\end{document}

pgfpages 20 on 1 layout