ビーマーは次の列にブロックを続行します

ビーマーは次の列にブロックを続行します

私はドキュメント クラスを使用してポスターを作成していますbeamer。ポスターを 2 つの列に分割しました。各列にはコンテンツを含むブロックがいくつかあります。ブロックの本文が最初の列に収まらない場合に備えて、次の列にブロックの本文を継続したいと考えています。これは何とか可能でしょうか?

以下に、私の設定の最小限の例を示します。

\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

以下は、この答えegreg による。(編集: 元のソリューションを簡略化しました。資料が 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。最初のボックスを使用する時点でこれを行うと、現在の環境から正しい幅設定が取得されます。(2 番目の列の幅が同じであると想定しています。) 次に、 コマンドを使用して、\vsplitこのボックスから必要な高さまで垂直方向の資料を切り取ります。\columnheightヘッダー用のスペースを残す必要があるため、この値は よりも小さくなります。そのため、 という値を計算してもらいました\columnheight - 2\baselineskip。これで、適切なポイントに到達したら、vbox を展開するだけです。定義環境の外部に正しいボックスが存在することを確認するために、コマンドの前に を付けます。行の高さを一致させるために、\globalいくつかのコマンドを配置する必要もあったことに注意してください。\strut

発生した段階で、\vsplitvboxの容量不足の警告が表示されます。この質問それを抑制したい場合。

見るegregによる別の回答さらなるインスピレーションを得るために。

関連情報