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.

I am making a poster using the beamer document class. What I have done is that I divided the poster in two columns. In each column I do have a few blocks with content. What I want to do is to continue a block's body in the next column in case that it doesn't fit in the first one. Is that possible somehow?

Below I provide a minimum example of how my configuration is.

\documentclass{beamer}
\usepackage{lipsum}

\newlength{\columnheight}
\setlength{\columnheight}{25cm}

\begin{document}

\begin{frame}[fragile]
\begin{columns}
    % ---------------------------------------------------------%
    % Set up a column 
    \begin{column}{.49\textwidth}
        \begin{beamercolorbox}[center,wd=\textwidth]{postercolumn}
            \begin{minipage}[T]{.95\textwidth}
                \parbox[t][\columnheight]{\textwidth}{
                    \begin{block}
                        \lipsum[1-2]
                    \end{block}
                }
            \end{minipage}
        \end{beamercolorbox}
    \end{column}
    \begin{column}{.49\textwidth}
        \begin{beamercolorbox}[center,wd=\textwidth]{postercolumn}
            \begin{minipage}[T]{.95\textwidth}
                \parbox[t][\columnheight]{\textwidth}{
                }
            \end{minipage}
        \end{beamercolorbox}
    \end{column}
\end{columns}
\end{frame}

\end{document}
share|improve this question
1  
This is sophisticated problem. If you are prepared to change package, then flowfram has a solution. The CTAN directory contains examples of making posters and there is a web page explaining more. –  Andrew Swann Aug 31 '12 at 16:23
    
Seems interesting. Although the deadline for my poster submission has past but nevertheless the option you present might be useful next time! Cheers! –  gkaran89 Aug 31 '12 at 22:05
add comment

1 Answer 1

up vote 3 down vote accepted

Here is a solution based on this answer by egreg. (EDIT: I have simplified my original solution). I have changed your dimensions and the choice of lipsum paragraphs to make the material fit on one beamer slide.

\documentclass{beamer}
\usepackage{lipsum}

\newlength{\columnheight}
\setlength{\columnheight}{8cm}
\newlength{\flowheight}
\setlength{\flowheight}{\columnheight}
\advance\flowheight-2\baselineskip

\newbox\flowtextbox
\newbox\curblockbox

\begin{document}

\begin{frame}[fragile]
\begin{columns}
    % ---------------------------------------------------------%
    % Set up a column 
    \begin{column}[T]{.49\textwidth}
        \begin{beamercolorbox}[center,wd=\textwidth]{postercolumn}
            \begin{minipage}[t]{.95\textwidth}
              \parbox[t][\columnheight]{\textwidth}{
              \begin{block}{Head\strut}
                  \global\setbox\flowtextbox=\vbox{\lipsum[43]\lipsum[11]}
                  \global\setbox\curblockbox=\vsplit\flowtextbox
                  to \flowheight
                  \unvbox\curblockbox
                \end{block}
              }
            \end{minipage}
        \end{beamercolorbox}
    \end{column}
    \begin{column}[T]{.49\textwidth}
        \begin{beamercolorbox}[center,wd=\textwidth]{postercolumn}
            \begin{minipage}[t]{.95\textwidth}
              \parbox[t][\columnheight]{\textwidth}{
                \begin{block}{Head (cont.)}
                  \unvbox\flowtextbox
                \end{block}
              }
            \end{minipage}
        \end{beamercolorbox}
    \end{column}
\end{columns}
\end{frame}

\end{document}

Sample output

The essential idea is to get LaTeX to typeset the material in a vbox \flowtextbox. By doing this at the point where we wish to use the first box, we get the correct width setting from the current environment. (This assumes the second column will have the same width.) We then use the command \vsplit to cut off vertical material from this box to the required height. This will be less than your \columnheight, because we need to leave room for a header, so I have calculated a value that is \columnheight - 2\baselineskip. Now when we get to the appropriate points we just unpack our vboxes. To make sure the correct boxes exist outside of the defining environment, we preface the commands with \global. Note it was also necessary to put a couple of \strut commands to get line heights to match up.

At the stage when the \vsplit occurs you will get an underfull vbox warning. See this question if you wish to suppress that.

See another answer by egreg for further inspiration.

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.