[Tex/LaTex] Beamer copenhagen theme banner height

beamerheight

I'm using beamer with Copenhagen theme. I want to use a logo in the right-most corner of all slides. I achieved this using textblock and addtobeamertemplate facilities.

My question is, when I add more sections to my presentation, the banner height increases. When the banner heights increases, I want my logo gets bigger too. So, I need to know the height (see added image) programmatically.

Is that possible?

First slide

Best Answer

Here is a possible solution for this particular case. It completely redefines the headline to achieve the wanted effect. The headline is taken from the split outer theme. Note that subsections are not included, as your image shows, although they can be added with little effort.

Redefined header (to be inserted in the preamble):

\makeatletter
\setbeamertemplate{headline}
{%
  \leavevmode%
  \@tempdimb=2.4375ex%
  \multiply\@tempdimb by\beamer@sectionmax%
  \ifdim\@tempdimb>0pt%
    \advance\@tempdimb by 1.125ex%
    \begin{beamercolorbox}[wd=.5\paperwidth,ht=\@tempdimb]{section in head/foot}%
      \vbox to\@tempdimb{\vfil\insertsectionnavigation{.5\paperwidth}\vfil}%
    \end{beamercolorbox}%
    \begin{beamercolorbox}[wd=.5\paperwidth,ht=\@tempdimb]{subsection in head/foot}%
      \vbox to\@tempdimb{\vfil\hfill \includegraphics[height=0.8\@tempdimb]{logo.jpeg} \hspace{1mm}~\vfil}%
    \end{beamercolorbox}%
  \fi%
}
\makeatother

The height of the header is calculated from the total number of sections and stored in \@tempdimb. This height is used throughout the definition of the headline. In the code above the logo is included taking 80% of the height of the headline, so it will be automatically resized according to the total number of sections.

Example renderings

  • Two sections: image

  • Five sections: image5