[Tex/LaTex] How to number sections in Roman numerals in a Beamer header

beamerheader-footersectioning

I am using Beamer and the Warsaw theme. I am trying to format the way sections appear in the frame header.

What I would like to get in header:

I – Section I

II – Section II

I did not manage to modify the numbering to uppercase roman letters. Here is a minimal example :

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\usetheme{Warsaw}

\makeatletter
\def\insertsectionheadnumber{\@Roman\c@section}
\makeatother

\setbeamertemplate{section in head/foot}%
{\hfil\insertsectionheadnumber~-~\insertsectionhead}

\setbeamertemplate{section in head/foot shaded}%
{\color{structure!50}\hfil\insertsectionheadnumber~-~\insertsectionhead}

\begin{document}

\section{Section I}
\begin{frame}
\end{frame}

\section{Subsection II}
\begin{frame}
\end{frame}

\end{document}

What I tried so far to add in my preamble:

  • \renewcommand \thesection{\Roman{section}}: not working because Beamer uses \insertsectionheadnumber to insert the section number instead of the standard counter.

  • \renewcommand \insertsectionheadnumber{\Roman{section}}: I get the error \insertsectionheadnumber undefined.

  • \makeatletter
    \def\insertsectionheadnumber{\@Roman\c@section}
    \makeatother

    No error produced but it appears to have no effect.

  • Using \insertsectionnumber instead of \insertsectionheadnumber. Here, the \def command is working (numbers appear as roman), but all the sections are numbered with the counter of the current one (so in my example, on slide 1 every section will be numbered I, then on slide 2 they will all be numbered II).

I tried to look into the class files and found that \insertsectionheadnumber is defined in beamerbasenavigation.sty, but I don't understand the code I found there.

How should I define the \insertsectionheadnumber command, or is there another (better) way to do this ?

Best Answer

Based on the answer https://tex.stackexchange.com/a/163490/36296 you can use \MakeUppercase{\romannumeral\insertsectionheadnumber}

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\usetheme{Warsaw}

\setbeamertemplate{section in head/foot}%
{\hfil \MakeUppercase{\romannumeral\insertsectionheadnumber}~-~\insertsectionhead}

\setbeamertemplate{section in head/foot shaded}%
{\color{structure!50}\hfil \MakeUppercase{\romannumeral\insertsectionheadnumber}~-~\insertsectionhead}

\begin{document}

\section{Section I}
\begin{frame}
\end{frame}

\section{Subsection II}
\begin{frame}
\end{frame}

\end{document}

enter image description here

Related Question