我正在使用 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}