오버프린트 내부의 수직 중앙 맞춤

오버프린트 내부의 수직 중앙 맞춤

환경에서 항목을 수직으로 중앙에 배치하는 "쉬운" 방법이 있습니까 overprint?

현재 답변에 따르면 이것은 내 테스트 문서입니다.

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

그리고 이제 문제는 단락 나누기(? 대체 \smash)와 내용 그대로( listings)에 있습니다.

답변1

아이디어는 \smash텍스트의 높이를 숨기는 데 사용하고 \vfills를 사용하여 수직으로 가운데에 놓은 다음 사용하는 것입니다.minibox텍스트에서 줄 바꿈을 얻으려면.

minipage대신에 사용할 수도 있지만 minibox전자를 사용하려면 너비를 지정해야 합니다.


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

관련 정보