使用 Beamer 调整目录条目之间的垂直间距

使用 Beamer 调整目录条目之间的垂直间距

我的演示文稿目录相当长。Beamer 不会压缩目录条目之间的垂直间距,而是将最后一项放在输出底部!有没有办法控制这个间距?

我努力了

\begin{spacing}{0.9}
\tableofcontents
\end{spacing}

setspace包装一起,但我不认为这与 Beamer 兼容。

答案1

我不知道它为什么会起作用,但是如果你把它放在环境\tableofcontentsminipage,行之间的空间就会减少:

\begin{frame}
\frametitle{Outline}
  \begin{minipage}{\textwidth}
    \tableofcontents
  \end{minipage}
\end{frame}

答案2

在写这个答案之前,我已经测试了 beamer,并且可以将 18 个部分(不包括子部分)插入到具有默认主题的框架中。所以我不确定上一个beamer版本是否已经缩小了目录。无论如何,几年前我通过更改目录定义解决了这个问题。我所做的是从中提取下一行beamer/base/beamerbasetoc.sty

\def\sectionintoc{}
\def\beamer@sectionintoc#1#2#3#4#5{%
\ifnum\c@tocdepth>0%
\ifnum#4=\beamer@showpartnumber%
{
  \beamer@saveanother%
  \gdef\beamer@todo{}%
  \beamer@slideinframe=#1\relax%
  \expandafter\only\beamer@tocsections{\gdef\beamer@todo{%
      \beamer@tempcount=#5\relax%
      \advance\beamer@tempcount by\beamer@sectionadjust%
      \edef\inserttocsectionnumber{\the\beamer@tempcount}%
      \def\inserttocsection{\hyperlink{Navigation#3}{#2}}%
      \beamer@tocifnothide{\ifnum\c@section=#1\beamer@toc@cs\else\beamer@toc@os\fi}%
      {
        \ifbeamer@pausesections\pause\fi%
        \ifx\beamer@toc@ooss\beamer@hidetext
          \vskip1.5em
        \else
          \vfill
        \fi
        {%
          \hbox{\vbox{%
              \def\beamer@breakhere{\\}%
              \beamer@tocact{\ifnum\c@section=#1\beamer@toc@cs\else\beamer@toc@os\fi}    {section in toc}}}%
         \par%
        }%
      }%
    }
  }%
  \beamer@restoreanother%
  }
  \beamer@todo%
  \fi\fi%
}

并粘贴到我的主要演示文稿文件中\begin{document}(不要忘记\makeatletter\makeatother),然后更改\vskip1.5em\vskip0.5em。就这样。

答案3

在 Beamer 3.10 版本中,目录使用时没有正确调整隐藏其他子部分。 还,不适用目录收缩可以工作,但是字体太小并且字体之间的间距太大。

我发现的最佳解决方案是在相应的模板中定义尺寸,并在 \tableofcontents 之前指定较小的尺寸:

\defbeamertemplate*{section in toc}{my theme}
{\leavevmode\leftskip=0.5em\large{\usebeamercolor[fg]{titlelike}\inserttocsectionnumber.} \inserttocsection\par}

\defbeamertemplate*{subsection in toc}{my theme}
{\leavevmode\leftskip=2em\normalsize{\usebeamercolor[fg]{titlelike}\inserttocsectionnumber.\inserttocsubsectionnumber.} \inserttocsubsection\par}

\defbeamertemplate*{subsubsection in toc}{my theme}
{\leavevmode\leftskip=3.5em\normalsize\usebeamerfont{subsection in toc}\usebeamerfont{subsubsection in toc}\inserttocsubsubsection\par}


\begin{frame}{Outline}
  \scriptsize
  \tableofcontents[currentsection,hideothersubsections]
\end{frame}

答案4

在里面投影机手册,查看框架选项shrinksqueeze

的解释shrink有点长,所以我不会在这里粘贴它,但基本上,它会缩小框架上的文本,以便它实际上适合框架。该squeeze选项会使文本中的所有垂直空间尽可能地挤压在一起。目前,这只会导致枚举或分项中的垂直空间减少到零。

我不确定它是否适用于 TOC,但你可以尝试一下。

相关内容