[Tex/LaTex] Stable vertical alignment of columns in Beamer

beamercolumnsvertical alignment

In Beamer, I often use a two-column slide layout, picture on the left and text on the right. Sometimes the same picture is used on multiple slides, with the text on the right changing. I use the Beamer columns environment for this purpose.

My problem is that typically the pictures in the two slides do not have the same vertical alignment, causing a slightly annoying "jiggle". None of the various options for column seems to help, and the default (align centers) is the most reasonable anyway.

Is there a way to force the picture to be vertically centered with respect to the page, irrespective of the size of the content of the other column?

Here's an example – the text on the left (representing a picture) moves a little between frames.

\documentclass{beamer}
\usepackage{calc}
\begin{document}
\begin{frame}\frametitle{Test frame}
    \begin{columns}
        \column{.5\textwidth}
          A figure
        \column{.5\textwidth}
          \begin{itemize}
              \item Item 1
              \item Item 2
          \end{itemize}
      \end{columns}
\end{frame}
\begin{frame}\frametitle{Test frame 2}
    \begin{columns}
        \column{.5\textwidth}
          A figure
        \column{.5\textwidth}
          \begin{itemize}
              \item Another item 1
              \item Another item 2
              \item This list is longer
              \item Than the previous one
              \item was
          \end{itemize}
      \end{columns}
\end{frame}
\end{document}

Best Answer

You could fix the vertical alignment by using minipages of the same height in the second column. Here's the modified example with a stable left column:

\documentclass{beamer}
\usepackage{calc}
\begin{document}
\begin{frame}\frametitle{Test frame}
    \begin{columns}
        \column{.5\textwidth}
          A figure
        \column{.5\textwidth}
          \begin{minipage}[c][.6\textheight][c]{\linewidth}
            \begin{itemize}
                \item Item 1
                \item Item 2
            \end{itemize}
          \end{minipage}
      \end{columns}
\end{frame}
\begin{frame}\frametitle{Test frame 2}
    \begin{columns}
        \column{.5\textwidth}
          A figure
        \column{.5\textwidth}
          \begin{minipage}[c][.6\textheight][c]{\linewidth}
            \begin{itemize}
                \item Another item 1
                \item Another item 2
                \item This list is longer
                \item Than the previous one
                \item was
            \end{itemize}
          \end{minipage}
      \end{columns}
\end{frame}
\end{document}