Estou fazendo um pôster usando a beamer
classe document. O que fiz foi dividir o pôster em duas colunas. Em cada coluna tenho alguns blocos com conteúdo. O que eu quero fazer é continuar o corpo de um bloco na próxima coluna caso ele não caiba na primeira. Isso é possível de alguma forma?
Abaixo forneço um exemplo mínimo de como está minha configuração.
\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}
Responder1
Aqui está uma solução baseada emesta respostapor egrég. (EDITAR: simplifiquei minha solução original). Alterei suas dimensões e a escolha dos parágrafos do lipsum para fazer o material caber em um slide do projetor.
\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}
A idéia essencial é fazer com que o LaTeX componha o material em um vbox \flowtextbox
. Fazendo isso no ponto onde desejamos usar a primeira caixa, obtemos a configuração correta de largura do ambiente atual. (Isso pressupõe que a segunda coluna terá a mesma largura.) Em seguida, usamos o comando \vsplit
para cortar o material vertical desta caixa até a altura necessária. Isso será menor que o seu \columnheight
, porque precisamos deixar espaço para um cabeçalho, então calculei um valor que é \columnheight - 2\baselineskip
. Agora, quando chegarmos aos pontos apropriados, apenas descompactaremos nossos vboxes. Para garantir que as caixas corretas existam fora do ambiente de definição, prefaciamos os comandos com \global
. Observe que também foi necessário colocar alguns \strut
comandos para que as alturas das linhas correspondessem.
No estágio em que isso \vsplit
ocorrer, você receberá um aviso de vbox insuficiente. Veressa questãose você deseja suprimir isso.
Veroutra resposta de egregpara mais inspiração.