beamer, \vfill and itemize
I will agree with @egreg that this does not seem to be the right way to do what you intend. In any case, if you insist, here's what I suggest.
Beamer uses \vfill
to vertically justify your slide. You may think of it this way: there's a \vfill
above your slide's contents and one more below them. So, roughly speaking, the \vfill
that you introduce only uses one third of the slide's vertical unused space.
To use all of that space, you need the next level of TeX's glue stretching:
\def\position#1#2{\vskip 0pt plus 1filll\hfill #1-#2}
This will leave you with no space at the top or the bottom of your slide, but it may be what you were looking for.
According to the beamer
manual you can use the textpos
package to position things absolutely on a page:
12.8 Positioning Text and Graphics Absolutely
Normally, beamer uses TEX’s normal typesetting mechanism to position text and graphics on the page. In certain situation you may instead wish a certain text or graphic to appear at a page position that is specified absolutely. This means that the position is specified relative to the upper left corner of the slide. The package
textpos
provides several commands for positioning text absolutely and it works together with beamer. When using this package, you will typically have to specify the optionsoverlay
and perhapsabsolute
.
Code:
\documentclass[handout]{beamer}
\usepackage[absolute,overlay]{textpos}
\newcommand*{\XOffsetFromBottomRight}{-2.0em}%
\newcommand*{\YOffsetFromBottomRight}{2.0ex}%
\newcommand*{\BottomRightText}[2]{%
\par%
\begin{textblock*}{5.0cm}(\dimexpr\textwidth-\XOffsetFromBottomRight\relax,\dimexpr\textheight-\YOffsetFromBottomRight\relax)
#1-#2%
\end{textblock*}%
}%
\begin{document}
\begin{frame}
\begin{itemize}\item a
\item a
\item a
\end{itemize}
\BottomRightText{2}{1}
\end{frame}
\begin{frame}
\begin{itemize}\item a
\item a
\item a
\item a
\item a
\item a
\item a
\item a
\item a
\item a
\end{itemize}
\BottomRightText{2}{2}
\end{frame}
\end{document}
\vspace{\stretch{100}}
Will do something like this:
\vfill
(top part of slide)
\vfill\vfill...\vfill
(thats the \vspace{\stretch{100}}
part)
(bottom part of slide)
\vfill
and will therefore simulate almost the expected \vfill
result.
You can now either change only the definiton of your \position command like this
\def\position#1#2{\vspace{\stretch{100}}\hfill #1-#2}
or define your own \myvfill for BEAMER usage
\def\myvfill{\vspace{\stretch{100}}}
\def\position#1#2{\myvfill\hfill #1-#2}