我正在使用文檔類製作海報beamer
。我所做的是將海報分成兩欄。在每一列中,我都有一些包含內容的區塊。我想做的是在下一列中繼續區塊的主體,以防它不適合第一列。這有可能嗎?
下面我提供了我的配置的最小範例。
\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}
答案1
這是一個基於的解決方案這個答案由埃格格。 (編輯:我簡化了原來的解決方案)。我更改了您的尺寸和唇部段落的選擇,以使材料適合一張投影機幻燈片。
\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}
基本概念是讓 LaTeX 在 vbox 中排版材料\flowtextbox
。透過在我們希望使用第一個框的位置執行此操作,我們可以從當前環境中獲得正確的寬度設定。 (這假設第二列具有相同的寬度。)然後,我們使用該命令\vsplit
將該框的垂直材料剪切到所需的高度。這將小於您的\columnheight
,因為我們需要為標頭留出空間,所以我計算出的值為\columnheight - 2\baselineskip
。現在,當我們到達適當的點時,我們只需打開 vbox 即可。為了確保正確的框存在於定義環境之外,我們在命令前面加上\global
.請注意,還需要輸入幾個\strut
命令來使行高匹配。
當\vsplit
發生這種情況時,您將收到 vbox 未滿警告。看這個問題如果你想抑制它。
看egreg 的另一個回答以獲得進一步的靈感。