使用 beamercolorbox 填充 vbox 过满

使用 beamercolorbox 填充 vbox 过满

在 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但我不知道发生了什么。

相关内容