[Tex/LaTex] Customize Beamer navigational bar

beamernavigation

The horizontal navigational bar of this beamer presentation

\documentclass[utf8,compress]{beamer}
\usetheme{Singapore}
\setbeamertemplate{mini frames}{}
\begin{document} 

\section{1}
\subsection{a}
\frame{\frametitle{Beamer navigation}Frame text} 
\subsection{b}
\frame{Frame text} 
\subsection{c}
\frame{Frame text} 
\section{2}
\frame{Frame text}
\section{3}
\frame{Frame text}

\end{document}

shows one entry for each section of the presentation (in this case 1,2 and 3).
For my purposes — rather than showing entries for each section — I need to have entries for the subsections displayed, so that where it reads "1,2,3" now it will then read "a,b,c".

I have been plowing through the Beamer manual, but without success. Suggestions anyone? Thanks.

Harry

Best Answer

That section navigation bar is dynamic. I think it's not well prepared to work for subsections instead, though it's possible to display the subsection numbers a, b, c additionally in the header.

That's why I recommend to change the presentation sectioning structure if this kind of navigation is needed: you could make subsections to sections and sections to parts.

The miniframes theme uses \insertnavigation of beamerbasenavigation.sty which calls \dohead of beamerbasemisc.sty. Have a look at the code there:

\def\headcommand#1{\global\advance\beamer@totalheads by1\relax%
  \expandafter\gdef\csname @@head\the\beamer@totalheads\endcsname{#1}}
\def\dohead{\beamer@headcounter=0\loop\ifnum\beamer@headcounter<\beamer@totalheads%
  \advance\beamer@headcounter by1\relax%
  \csname @@head\the\beamer@headcounter\endcsname\repeat}

You may check the produced .nav files for the \headcommand calls (made by beamerbasesection.sty).