15

I am using a beamer frame in which the top has alternating list items, and the bottom has a picture. The problem is that because of the different number of rows for each item, the picture changes vertical position as I move between list items, as I show in the following code. Does anyone know how to "stick" it in place, at the bottom?

\documentclass{beamer}
\begin{document}
  \begin{frame}[t]{System overview}
  \begin{minipage}{\textwidth}
    \begin{itemize}
      \item<1|only@1> item1 (a single row)
      \item<2|only@2> item2 \\ has 2 rows
      \item<3|only@3> item3
    \end{itemize}
  \end{minipage}
  \vfill
  \begin{minipage}{\textwidth}
    \centering
    \includegraphics[scale=0.65]{picture.jpg}
  \end{minipage}
\end{frame}
\end{document}

2 Answers 2

6

Assign a defined height to the top minipage:

\documentclass{beamer}
\begin{document}
  \begin{frame}[t]{System overview}
  \begin{minipage}[t][0.5\textheight][t]{\textwidth}
    \begin{itemize}
      \item<1|only@1> item1 (a single row)
      \item<2|only@2> item2 \\ has 2 rows
      \item<3|only@3> item3
    \end{itemize}
  \end{minipage}
  \vfill
  \begin{minipage}{\textwidth}
    \centering
    \includegraphics[scale=0.65]{picture.jpg}
  \end{minipage}
\end{frame}
\end{document}
14

Try \vskip0pt plus 1filll instead

\documentclass[demo]{beamer}

\begin{document}
  \begin{frame}[t]{System overview}
  \begin{minipage}{\textwidth}
    \begin{itemize}
      \item<1|only@1> item1 (a single row)
      \item<2|only@2> item2 \\ has 2 rows
      \item<3|only@3> item3
    \end{itemize}
  \end{minipage}
\vskip0pt plus 1filll
  \begin{minipage}{\textwidth}
    \centering
    \includegraphics[scale=0.65]{picture.jpg}
  \end{minipage}
\end{frame}
\end{document}

This is what beameruserguide suggests.

5
  • That's excellent. Where does the user guide suggest this if you don't mind me asking? I was unable to find it. Jan 23, 2012 at 11:29
  • In my copy it can be found on page 62. (The very last example).
    – bloodworks
    Jan 23, 2012 at 12:33
  • +1 That is indeed cool (and preferable too my suggestion of explicitly specifying the minipage's height).
    – Daniel
    Jan 23, 2012 at 12:40
  • I see, too bad that it does not explain exactly what is going on. (That is, why it is even required, apparently there is some vfill generated at the end of the frame, but I can't find it specified anywhere, short of going through the code by hand). Thanks anyway :) Jan 23, 2012 at 13:29
  • 4
    There are different stretchable spaces with different names, the more l's you add the more priority the space has. I believe you can put 1, 2 or 3 of them. The plus in command says to TeX "increase the 0pt by vfilll if you get smaller badness (badness measures how "nice" is the output).
    – yo'
    Jan 23, 2012 at 19:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .