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.

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 5x4 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?

share|improve this question
4  
Take a look at pgfpages (in the pgf manual). That should give you a starting point. –  Andrew Stacey Oct 17 '12 at 14:49
    
@lockstep answered. Defining the layout is a pain without a loop so I figured it worth answering. –  Andrew Stacey Nov 4 '12 at 19:06
add comment

1 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

share|improve this answer
add comment

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.