Beamer TOC:右对齐章节编号

Beamer TOC:右对齐章节编号

我正在尝试使用大写罗马数字(I、II、...)来显示我的投影仪目录中每个部分及其部分编号。以下 MWE 总体上有效,但可以看出罗马数字以及部分标题未对齐。相反,罗马数字是左对齐的,部分编号和标题之间的距离是固定的,因此根据罗马数字的宽度将部分向右移动。

[在创建此 MWE 时,我希望将第二部分的数字设为 25,以便更好地形象化问题,因为 XXV 比 I 宽得多(与 II 相比)。但是,尽管将节计数器设置为 24 并thesection在框架标题中正确设置为 25,但inserttocsectionnumberTOC 中的命令仅生成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}

在此处输入图片描述

相关内容