Beamer 繼續下一列中的區塊

Beamer 繼續下一列中的區塊

我正在使用文檔類製作海報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 的另一個回答以獲得進一步的靈感。

相關內容