Beamer 的 ToC 显示/隐藏子部分不在同一垂直位置

Beamer 的 ToC 显示/隐藏子部分不在同一垂直位置

Beamer带有该选项的框架t应该:

  • 垂直对齐在顶部,
  • 因此将它们的第一行显示在相同的垂直位置。

然而,对于包含目录的框架来说情况并非如此,这取决于这些目录是否显示子部分,如下面的 MCE 所指出的那样。

你知道发生了什么吗?

\documentclass{beamer}
\begin{document}
\section{Section 1}
\subsection{Subsection 1 of section 1}
\subsection{Subsection 2 of section 1}
\section{Section 2}
\subsection{Subsection 1 of section 2}
\subsection{Subsection 2 of section 2}
\begin{frame}[t]
  \tableofcontents
\end{frame}
\begin{frame}[t]
  \tableofcontents[hideallsubsections]
\end{frame}
\end{document}

在此处输入图片描述

答案1

While[t]将框架配置为顶部对齐,\tableofcontents并自行添加一些间距。它在正常情况下分配各节之间的空间,并1.5em在各节之间设置空间hideallsections。这beamerbasetoc.sty\beamer@sectionintoc宏中是硬编码的:重要的部分是

        \ifx\beamer@toc@ooss\beamer@hidetext
          \vskip1.5em
        \else
          \vfill
        \fi

您可以\vspace{0pt plus 1filll}在框架的底部添加\tableofcontents以强制它们进行顶部对齐,但随后正常的\tableofcontents开始位置会高于\tableofcontents[hideallsubsections]并且第一个命令的部分之间没有间距,因此看起来不太好。

如果您只关心对齐第一行,则可以\vspace{1.5em plus -1fill}在之前添加\tableofcontents以对齐它们: 在此处输入图片描述

答案2

tocdepth手动设置和顶部对齐的小页面的组合似乎可以对齐目录:

\documentclass{beamer}
\begin{document}
\section{Section 1}
\subsection{Subsection 1 of section 1}
\subsection{Subsection 2 of section 1}
\section{Section 2}
\subsection{Subsection 1 of section 2}
\subsection{Subsection 2 of section 2}

\begin{frame}[t]
  \begin{minipage}[t]{\textwidth}
  \tableofcontents
  \end{minipage}
\end{frame}
\setcounter{tocdepth}{1}
\begin{frame}[t]
  \begin{minipage}[t]{\textwidth}
  \tableofcontents
  \end{minipage}
\end{frame}
\end{document}

结果:

在此处输入图片描述

相关内容