在 latex-beamer 文档中,我使用自定义标题模板。它生成一个标题仅有的当在某个部分中时。以下是精简版:
\documentclass{beamer}
\usepackage{times} % gets rid of fontsize warnings
\setbeamercolor{section in head}{bg=yellow!80!black,fg=structure}
%% \setbeamercolor{lower separation line head}{bg=yellow!50!black}
\setbeamertemplate{headline}{
\ifx\insertsection\empty\else
\usebeamerfont{section in head}
\begin{beamercolorbox}[ht=2ex,dp=1ex,leftskip=2ex]{section in head}
\insertsection
\end{beamercolorbox}
%%\begin{beamercolorbox}[colsep=0.5pt]{lower separation line head}\end{beamercolorbox}
\fi
\vspace*{5pt}
}
\begin{document}
\begin{frame}
% frame has empty headline
\end{frame}
\section{A Section}
\begin{frame}
% frame headline shows section title
\end{frame}
\end{document}
但是,此代码会产生“overfull vbox”:Overfull \vbox (9.41396pt too high) has occurred while \output is active []
我可以忽略它,因为结果看起来不错,但我想知道为什么会发生这种情况以及我该如何处理它,主要是因为看到这个打印出来超过 200 次很烦人。
(注意:注释掉第 6 行和第 12 行(带有 \if 和 \fi 的行)时不会发生这种情况。)
答案1
修改第 5 行如下:
\ifx\insertsection\empty\hrule height2ex depth1ex width0pt\else
我认为,beamer 会在设置之前计算文档开头的头部总高度\insertsection
,并使用该值计算页面的其他尺寸。如果头部为空,则它预计头部的大小为 0,如果头部不为空,则整个页面会溢出。请注意,在带有部分头部的页面上,使用原始代码,导航线会被推出页面,因此会消失。
答案2
放在\vspace*{-9.41396pt}
之前\fi
。
答案3
似乎\ifx\insertsection\undefined\else
在这里可能更合适。(不,见评论)它解决了警告问题。\empty
但我不知道发生了什么。