如何在 Beamer 页眉中使用罗马数字对节进行编号?

如何在 Beamer 页眉中使用罗马数字对节进行编号?

我正在使用 Beamer 和 Warsaw 主题。我正在尝试格式化部分在框架标题中的显示方式。

我想在标题中获得什么:

I - 第一部分

II - 第二部分

我没能将编号修改为大写罗马字母。这是一个最简单的例子:

\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}

我目前尝试在序言中添加的内容是:

  • \renewcommand \thesection{\Roman{section}}:不起作用,因为 Beamer 用于\insertsectionheadnumber插入章节编号而不是标准计数器。

  • \renewcommand \insertsectionheadnumber{\Roman{section}}:我收到错误\insertsectionheadnumber undefined

  • \makeatletter \def\insertsectionheadnumber{\@Roman\c@section} \makeatother 没有产生错误但似乎没有效果。

  • 使用\insertsectionnumber而不是\insertsectionheadnumber。在这里,\def命令可以正常工作(数字显示为罗马数字),但是全部各部分均用当前的一(因此在我的示例中,在幻灯片 1 上每个部分都将编号为 I,然后在幻灯片 2 上它们都将编号为 II)。

我尝试查看类文件并发现在\insertsectionheadnumber中定义beamerbasenavigation.sty,但我不明白我在那里找到的代码。

我应该如何定义\insertsectionheadnumber命令,或者是否有其他(更好)的方法来做到这一点?

答案1

根据答案https://tex.stackexchange.com/a/163490/36296您可以使用\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}

在此处输入图片描述

相关内容