我想知道是否有人知道如何告诉 Beamer 如果有太多部分则将标题中的目录分成几列,否则将其保留在一列中。
我发现这个帖子非常有用
但是,使用此代码,目录将始终显示在两列中,这并不总是美观的(例如,当只有 2 个部分时)。
我正在为我的机构制作一个定制模板,这就是为什么我需要让它尽可能的多功能。
我原本想在目录高度小于或等于标题高度时保留默认的 \insertsectionnavigation,否则进行划分。但我无法将其转换为正确的代码。
感谢您的帮助。
答案1
最简单的解决方案可能是检查部分总数。如果此数字大于相同值(示例中为 5),则显示您的自定义代码,否则显示正常导航。
[在“您想要的任何主题”处插入您的自定义代码]
\documentclass{beamer}
\usetheme{Warsaw}
\makeatletter
\setbeamertemplate{headline}{%
\leavevmode%
\@tempdimb=2.4375ex%
\ifnum\beamer@subsectionmax<\beamer@sectionmax%
\multiply\@tempdimb by\beamer@sectionmax%
\else%
\multiply\@tempdimb by\beamer@subsectionmax%
\fi%
\ifdim\@tempdimb>0pt%
\advance\@tempdimb by 1.825ex%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=\@tempdimb]{section in head/foot}%
\vbox to\@tempdimb{\vfil%
\ifnum\beamer@sectionmax<5
\insertsectionnavigation{.5\paperwidth}%
\else%
whatever theme you want
\fi%
\vfil}%
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=\@tempdimb]{subsection in head/foot}%
\vbox to\@tempdimb{\vfil\insertsubsectionnavigation{.5\paperwidth}\vfil}%
\end{beamercolorbox}%
\fi%
}
\makeatother
\begin{document}
\section{a}\frame{a}
\section{a}\frame{a}
\section{a}\frame{a}
\section{a}\frame{a}
\section{a}\frame{a}
\section{a}\frame{a}
\section{a}\frame{a}
\section{a}\frame{a}
\section{a}\frame{a}
\section{a}\frame{a}
\end{document}