Vertikale Zentrierung innerhalb eines Überdrucks

Vertikale Zentrierung innerhalb eines Überdrucks

Gibt es eine „einfache“ Möglichkeit, Dinge in einer overprintUmgebung vertikal zu zentrieren?

Basierend auf der aktuellen Antwort ist dies mein Testdokument

\documentclass{beamer}
\usepackage{listings}
\long\def\opcenter#1{\vfill\smash{\begin{minipage}[c]{\linewidth}#1\end{minipage}}}
\begin{document}
\begin{frame}[fragile]
  \begin{overprint}
    \onslide<1>
      \opcenter{A short paragraph}
    \onslide<2>
      \opcenter{A\\
        longer\\
        paragraph\\
        with\\
        a\\
        few\\
        lines}
    \onslide<3>
      \opcenter{
        \begin{block}{Title}
          A block \\
          with\\
          a\\
          few lines
        \end{block}
      }
    \onslide<4>
      \opcenter{
        One paragraph

        Plus something else
      }
     \onslide<5>
       \opcenter{
         \begin{lstlisting}
And verbatim stuff
         \end{lstlisting}
       }
  \end{overprint}
\end{frame}
\end{document}

Und das Problem liegt jetzt bei Absatzumbrüchen (ein Ersatz für \smash?) und wörtlichen Inhalten ( listings).

Antwort1

Die Idee ist, \smashdie Höhe des Textes zu verbergen, \vfills zu verwenden, um ihn vertikal zu zentrieren und dannminiboxum Zeilenumbrüche im Text zu erhalten.

Sie können minipageanstelle von auch verwenden minibox, für Ersteres ist jedoch die Angabe der Breite erforderlich.


\documentclass{beamer}
\usepackage{minibox}
\begin{document}
\long\def\opcenter#1{\vfill\smash{\minibox{#1}}}
\begin{frame}
  \begin{overprint}
    \onslide<1>
    \opcenter{A short paragraph}
    \onslide<2>
    \opcenter{A\\
        longer\\
        paragraph\\
        with\\
        a\\
        few\\
        lines}

% This frame uses minipage instead of minibox. minibox
% does not accept a block as its argument.
\onslide<3>
      \vfill\smash{\begin{minipage}[c]{1.0\linewidth}
        \begin{block}{Title}
          A block \\
          with\\
          a\\
          few lines
        \end{block}
      \end{minipage}}\vfill
  \end{overprint}
\end{frame}
\end{document}

verwandte Informationen