Beamer-Fortsetzungsblock in der nächsten Spalte

Beamer-Fortsetzungsblock in der nächsten Spalte

Ich erstelle ein Poster mit der beamerDokumentklasse. Ich habe das Poster in zwei Spalten unterteilt. In jeder Spalte habe ich einige Blöcke mit Inhalt. Ich möchte den Text eines Blocks in der nächsten Spalte fortsetzen, falls er nicht in die erste passt. Ist das irgendwie möglich?

Nachfolgend gebe ich ein Minimalbeispiel meiner Konfiguration.

\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}

Antwort1

Hier ist eine Lösung basierend aufdiese Antwortvon egreg. (BEARBEITEN: Ich habe meine ursprüngliche Lösung vereinfacht.) Ich habe Ihre Abmessungen und die Auswahl der Lipsum-Absätze geändert, damit das Material auf eine Beamer-Folie passt.

\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}

Beispielausgabe

Die wesentliche Idee besteht darin, LaTeX dazu zu bringen, das Material in einer vbox zu setzen \flowtextbox. Indem wir dies an der Stelle tun, an der wir die erste Box verwenden möchten, erhalten wir die richtige Breiteneinstellung aus der aktuellen Umgebung. (Dies setzt voraus, dass die zweite Spalte die gleiche Breite hat.) Dann verwenden wir den Befehl, \vsplitum vertikales Material von dieser Box auf die erforderliche Höhe abzuschneiden. Diese wird kleiner sein als Ihre \columnheight, weil wir Platz für eine Kopfzeile lassen müssen, daher habe ich einen Wert berechnet, der beträgt \columnheight - 2\baselineskip. Wenn wir jetzt an die entsprechenden Punkte gelangen, packen wir einfach unsere vboxes aus. Um sicherzustellen, dass die richtigen Boxen außerhalb der definierenden Umgebung existieren, stellen wir den Befehlen ein voran \global. Beachten Sie, dass auch einige \strutBefehle eingefügt werden mussten, um die Zeilenhöhen anzupassen.

In diesem Stadium \vspliterhalten Sie eine Warnung, dass die Vbox nicht voll ist. Siehediese Fragewenn Sie das unterdrücken möchten.

Seheneine weitere Antwort von egregfür weitere Inspirationen.

verwandte Informationen