[Tex/LaTex] Beamer: Bottom align every frame

beamervertical alignment

Is there a way to globally set the vertical alignment of the contents in a frame to be bottom aligned? In other words, I'm tired of adding [b] to every frame:

\begin{frame}[b]
...
\end{frame}

I know there are class options c and t to center and top align, but as far as I know, no b option exists.

Any help would be appreciated.

MWE:

\documentclass{beamer}

\begin{document}
\begin{frame}[b]
This is bottom aligned.
\end{frame}

\begin{frame}
This is not\ldots
\end{frame}
\end{document}

Best Answer

You can modify the t key which is defined in the file beamerbaseframe.sty like this:

\define@key{beamerframe}{t}[true]{% top
  \beamer@frametopskip=.2cm plus .5\paperheight\relax%
  \beamer@framebottomskip=0pt plus 1fill\relax%
  \beamer@frametopskipautobreak=\beamer@frametopskip\relax%
  \beamer@framebottomskipautobreak=\beamer@framebottomskip\relax%
  \def\beamer@initfirstlineunskip{}%
}

To obtain what you need (bottom align)

\define@key{beamerframe}{t}[true]{% bottom
  \beamer@frametopskip=0pt plus 1fill\relax%
  \beamer@framebottomskip=0.2cm plus .5\paperheight\relax%
  \beamer@frametopskipautobreak=\beamer@frametopskip\relax%
  \beamer@framebottomskipautobreak=\beamer@framebottomskip\relax%
  \def\beamer@initfirstlineunskip{}%
} 

And your code become

\documentclass{beamer}

\makeatletter
\define@key{beamerframe}{t}[true]{% bottom
  \beamer@frametopskip=0pt plus 1fill\relax%
  \beamer@framebottomskip=0.2cm plus .5\paperheight\relax%
  \beamer@frametopskipautobreak=\beamer@frametopskip\relax%
  \beamer@framebottomskipautobreak=\beamer@framebottomskip\relax%
  \def\beamer@initfirstlineunskip{}%
}
\beamer@centeredfalse
\makeatother

\begin{document}
\begin{frame}
This is bottom aligned.
\end{frame}

\begin{frame}
This is also
\end{frame}
\end{document}

Update

\documentclass[b]{beamer}

\makeatletter
\DeclareOptionBeamer{b}{\beamer@centeredfalse\define@key{beamerframe}{t}[true]{% bottom
  \beamer@frametopskip=0pt plus 1fill\relax%
  \beamer@framebottomskip=0.2cm plus .5\paperheight\relax%
  \beamer@frametopskipautobreak=\beamer@frametopskip\relax%
  \beamer@framebottomskipautobreak=\beamer@framebottomskip\relax%
  \def\beamer@initfirstlineunskip{}%
}}
\ProcessOptionsBeamer
\makeatother

\begin{document}
\begin{frame}
This is bottom aligned.
\end{frame}

\begin{frame}
This is also
\end{frame}
\end{document}

Output

enter image description here

Related Question