![Beamer TOC:右对齐章节编号](https://linux22.com/image/391661/Beamer%20TOC%EF%BC%9A%E5%8F%B3%E5%AF%B9%E9%BD%90%E7%AB%A0%E8%8A%82%E7%BC%96%E5%8F%B7.png)
我正在尝试使用大写罗马数字(I、II、...)来显示我的投影仪目录中每个部分及其部分编号。以下 MWE 总体上有效,但可以看出罗马数字以及部分标题未对齐。相反,罗马数字是左对齐的,部分编号和标题之间的距离是固定的,因此根据罗马数字的宽度将部分向右移动。
[在创建此 MWE 时,我希望将第二部分的数字设为 25,以便更好地形象化问题,因为 XXV 比 I 宽得多(与 II 相比)。但是,尽管将节计数器设置为 24 并thesection
在框架标题中正确设置为 25,但inserttocsectionnumber
TOC 中的命令仅生成2
而不是25
。如果也有针对该问题的解决方案,那就太好了,即强制 TOC 采用实际的节号而不是似乎是它自己的计数。]
\documentclass[t, sansserif, onlymath, 10pt]{beamer}%\mode<handout>
\makeatletter
\defbeamertemplate{section in toc}{sections numbered roman}{%
\@Roman\inserttocsectionnumber.\ %
\inserttocsection\par}
\renewcommand*{\numberline}[1]{%
\hb@xt@\@tempdima{\hfil#1 }%
}
\makeatother
\begin{document}
\setbeamertemplate{section in toc}[sections numbered roman]
\setbeamerfont{section in toc}{size=\normalsize, family = \sffamily}
\setbeamerfont{section in toc}{shape = \normalfont}
\begin{frame}
\frametitle{Overview}
\tableofcontents[currentsection]
\end{frame}
\section{section one}
\begin{frame}
\frametitle{xxx1 \thesection}
\end{frame}
\setcounter{section}{24}
\section{section two/twenty-five}
\begin{frame}
\frametitle{xxx2 \thesection}
\end{frame}
\setbeamercovered{transparent}
\begin{frame}
\frametitle{{Agenda}}
\begin{enumerate}[I.]
\item <1|handout: 1> { Overview} \\
\vspace{0.9cm}
\item <0|handout: 1> {sec1}\\
\vspace{0.9cm}
\item <0|handout: 1> {sec 2: }\\
\end{enumerate}
\end{frame}
\end{document}
包括最后一张幻灯片在内,我几乎已经知道了我想要的结果(事实上,这是我的想法,但我需要自动化)。您可以看到,使用“枚举”包,“枚举”是右对齐的,各节标题也是如此。
在文档序言中,代码
\defbeamertemplate{section in toc}{sections numbered roman}{%
\@Roman\inserttocsectionnumber.\ %
\inserttocsection\par}
用于使用罗马数字并在章节标题前插入章节编号,以及
\renewcommand*{\numberline}[1]{%
\hb@xt@\@tempdima{\hfil#1 }%
}
尝试使用来自的命令右对齐数字目录中的数字右对齐 ,但这是关于节和小节之间相对于彼此的对齐,而上面的代码片段并不能解决问题。
答案1
快速解决方法:
将罗马数字放在固定宽度的框中
\documentclass[t, sansserif, onlymath, 10pt]{beamer}%\mode<handout>
\makeatletter
\defbeamertemplate{section in toc}{sections numbered roman}{%
\makebox[0.8cm]{\hfill\@Roman\inserttocsectionnumber.}\space%
\inserttocsection\par
}
\makeatother
\begin{document}
\setbeamertemplate{section in toc}[sections numbered roman]
\begin{frame}
\frametitle{Overview}
\tableofcontents
\end{frame}
\section{section one}
\begin{frame}
\frametitle{xxx1 \thesection}
\end{frame}
\makeatletter
\beamer@tocsectionnumber=24
\makeatother
\section{section two/twenty-five}
\begin{frame}
\frametitle{xxx2 \thesection}
\end{frame}
\end{document}