3

It looks like beamer is ignoring changes in the size of template elements.

I have the following minimal example:

\documentclass{beamer}
\usepackage{lipsum}

\setbeamertemplate{footline}[text line]{
\begin{beamercolorbox}[wd=\paperwidth,ht=3ex,dp=1ex]{}
FirstFoot
\end{beamercolorbox}
}

\begin{document}

\begin{frame}[allowframebreaks]{FirstSlide}
\lipsum[3-8]
\end{frame}

\setbeamertemplate{footline}[text line]{%
\begin{beamercolorbox}[wd=\paperwidth,ht=3ex,dp=1ex]{}%
SecondFoot
\end{beamercolorbox}
}

\begin{frame}[allowframebreaks]{SecondSlide}
\lipsum[3-8]
\end{frame}

\end{document}

This document renders as expected.

Now let us make a very small change and increase the ht parameter of the first footline to 30.

\documentclass{beamer}
\usepackage{lipsum}

\setbeamertemplate{footline}[text line]{
\begin{beamercolorbox}[wd=\paperwidth,ht=30ex,dp=1ex]{}% Set
FirstFoot
\end{beamercolorbox}
}

\begin{document}

\begin{frame}[allowframebreaks]{FirstSlide}
\lipsum[3-8]
\end{frame}

\setbeamertemplate{footline}[text line]{%
\begin{beamercolorbox}[wd=\paperwidth,ht=3ex,dp=1ex]{}% Ignored
SecondFoot
\end{beamercolorbox}
}

\begin{frame}[allowframebreaks]{SecondSlide}
\lipsum[3-8]
\end{frame}

\end{document}

Beamer respects the change in the footer text from the first to the second template specification but ignores the height of the second specification.

And now let's make the reverse test:

\documentclass{beamer}
\usepackage{lipsum}

\setbeamertemplate{footline}[text line]{
\begin{beamercolorbox}[wd=\paperwidth,ht=3ex,dp=1ex]{}% Set
FirstFoot
\end{beamercolorbox}
}

\begin{document}

\begin{frame}[allowframebreaks]{FirstSlide}
\lipsum[3-8]
\end{frame}

\setbeamertemplate{footline}[text line]{%
\begin{beamercolorbox}[wd=\paperwidth,ht=30ex,dp=1ex]{}% Ignored
SecondFoot
\end{beamercolorbox}
}

\begin{frame}[allowframebreaks]{SecondSlide}
\lipsum[3-8]
\end{frame}

\end{document}

Now again beamer honors the height of the first footline template. When later the height of the second footline is increased, the change is ignored in the layout and the text of the second footline consequently is pushed off the page.

Thus it looks like beamer ignores changes in the footline height.

Is this a bug?

How would I change the height of a footline?

1
  • 2
    As a dog, your knowledge is astounding to me! I can barely bark.
    – hola
    Commented Oct 7, 2020 at 14:20

3 Answers 3

1

With the current beamer development version, beamer now calculates the head- and footheight at the start of every frame. This should be included in beamer v3.70 (or newer).

enter image description here

1

From the beamer user guide (section 8.2.1), it is stated that :

The size of the headline and the footline is determined as follows: Their width is always the paper width. Their height is determined by tentatively typesetting the headline and the footline right after the \begin{document} command. The head of the headline and the footline at that point is frozen and will be used throughout the whole document, even if the headline and footline vary in height later on (which they should not).

So the first remark with respect to your objective is : you should not attempt to modify the footline height throughout the document.

After a quick modification of your document to show some contrast, you can actually see that beamer does exactly what the documentation states.

% arara: lwpdflatex
\documentclass{beamer}
\usepackage{lipsum}
\setbeamertemplate{navigation symbols}{}
\setbeamercolor{footlinecolor}{fg=white,bg=blue}

\setbeamertemplate{footline}[text line]{%
\begin{beamercolorbox}[wd=\paperwidth,ht=30ex,dp=1ex]{footlinecolor}%
FirstFoot%
\end{beamercolorbox}%
}

\begin{document}


\begin{frame}[allowframebreaks]{FirstSlide}
\lipsum[3-8]
\end{frame}

\setbeamertemplate{footline}[text line]{%
\begin{beamercolorbox}[wd=\paperwidth,ht=3ex,dp=1ex]{footlinecolor}%
SecondFoot%
\end{beamercolorbox}%
}

\begin{frame}[allowframebreaks]{SecondSlide}
\lipsum[3-8]
\end{frame}

\end{document}

First slide : the expected height is computed and frozen

enter image description here

Seventh slide : the new height is activated but the rest remains frozen as expected

enter image description here

In conclusion, what beamer does is actually an update of the footline itself, but the top of the footline box is locked through the document, leaving the impression that it does not account for any modification.

9
  • 2
    To the person who downvoted, is there a specific reason why ?
    – BambOo
    Commented Oct 7, 2020 at 11:19
  • I don't know the reason...but I have given to you +1 for your effort.
    – Sebastiano
    Commented Oct 7, 2020 at 12:14
  • 1
    @BambOo Didn't downvote you but gave +1 for the effort as well. But it's not my favorite answer, sorry, as it does not provide a method HOW I would change the footline. Given the accepted answer I ten to consider it a design flaw of beamer that the recalculation is not done automatically. Commented Oct 7, 2020 at 13:40
  • 1
    @Nobody-Knows-I-am-a-Dog, thanks. I can understand that you prefer the ohter solution. It is quite common to miss an existing answer due to mismatching keywords here. I am unsure wether you should post the additional information as an answer though.
    – BambOo
    Commented Oct 7, 2020 at 13:47
  • 1
    @Nobody-Knows-I-am-a-Dog Frankly, I do not know. And you are not at all obliged to give me the bounty. If you deemed my answer helpful, just upvote it if not already, that's largely enough to me :)
    – BambOo
    Commented Oct 11, 2020 at 11:01
0

The answer already was there in stackexchange, I just did not have the right search word. The problem seems to be the lack of a recalculation of the height of the footline.

Problem with \setbeamertemplate{footline} when using \ifthenelse inside

https://tex.stackexchange.com/a/78345/196228

https://tex.stackexchange.com/a/105753/196228

Having understood the mechanism now, I consider this a bug / lack of feature in beamer.

For a fully working example:

\documentclass{beamer}
\usepackage{lipsum}

\setbeamertemplate{footline}[text line]{
\begin{beamercolorbox}[wd=\paperwidth,ht=3ex,dp=1ex]{}% Set to a small value
FirstFoot
\end{beamercolorbox}
}

\begin{document}

\begin{frame}[allowframebreaks]{FirstSlide}
\lipsum[3-8]
\end{frame}

\setbeamertemplate{footline}[text line]{%

\begin{beamercolorbox}[wd=\paperwidth,ht=30ex,dp=1ex]{}% Set to a larger value
SecondFoot
\end{beamercolorbox}
}

%% and now have the footer size recalculated again
\makeatletter
\beamer@calculateheadfoot
\makeatother


\begin{frame}[allowframebreaks]{SecondSlide}
\lipsum[3-8]
\end{frame}

\end{document}

You must log in to answer this question.

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