Продолжить блокировать проектор в следующем столбце

Продолжить блокировать проектор в следующем столбце

Я создаю постер с использованием beamerкласса document. Я разделил постер на две колонки. В каждой колонке у меня есть несколько блоков с контентом. Я хочу продолжить тело блока в следующей колонке на случай, если оно не поместится в первой. Возможно ли это как-то?

Ниже я привожу минимальный пример моей конфигурации.

\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

Вот решение, основанное наэтот ответпо эгрегору. (РЕДАКТИРОВАТЬ: Я упростил свое первоначальное решение). Я изменил ваши размеры и выбор абзацев Lipsum, чтобы материал поместился на одном слайде проектора.

\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. Теперь, когда мы добираемся до соответствующих точек, мы просто распаковываем наши vboxes. Чтобы убедиться, что правильные блоки существуют вне определяющей среды, мы предваряем команды \global. Обратите внимание, что также необходимо было поместить пару \strutкоманд, чтобы совпасть высоты строк.

На этапе, когда это \vsplitпроизойдет, вы получите предупреждение о недостаточном заполнении vbox. Смотритеэтот вопросесли вы хотите это скрыть.

Видетьдругой ответ от egregдля дальнейшего вдохновения.

Связанный контент