众多 MWE 中的一个(带或不带普通框架选项、带或不带 vfill、带或不带 c 框架选项等):
\documentclass[10pt]{beamer}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{}
\begin{document}
\begin{frame}[c]{}
\vfill
\rule{\textwidth}{1pt}
\vfill
\end{frame}
\end{document}
这样会生成一条不完全居中的水平线(使用文本代替也不行)。在这种情况下,线上方和下方的空间比例约为 4.5/5.5。为什么?
PS:通过 TikZ 居中,如下所示问题 208633工作正常。
答案1
除了坎帕答案:
frametopskip
通过对和的对称定义,也可以实现与 campa 第三框架相同的结果framebottomskip
:
\documentclass[10pt]{beamer}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{}
\begin{document}
% from https://tex.stackexchange.com/a/354503/36296
\begin{frame}[c]{} % this works
\null\vfill\null
ace\rule[.5ex]{.5\textwidth}{.5pt}
\vfill
\end{frame}
\makeatletter
\define@key{beamerframe}{c}[true]{% centered
\beamer@frametopskip=0pt plus 1fill\relax%
% \beamer@framebottomskip=0pt plus 1.5fill\relax%
\beamer@framebottomskip=0pt plus 1fill\relax%
}
\makeatother
\begin{frame}[c]
aba\rule[.5ex]{.5\textwidth}{.5pt}abc
\end{frame}
\end{document}
答案2
这只是个不成熟的回答,因为我并不确切知道其背后的行为。一个(小)问题是\rule
在基线上画了一条线,但这不是真正的问题。考虑以下示例
\documentclass[10pt]{beamer}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{}
\begin{document}
\begin{frame}[c]{} % the problem
\vfill
ace\rule[.5ex]{.5\textwidth}{.5pt}
\vfill
\end{frame}
\begin{frame}[c]{} % slightly better
\null\vfill
ace\rule[.5ex]{.5\textwidth}{.5pt}
\vfill
\end{frame}
\begin{frame}[c]{} % this works
\null\vfill\null
ace\rule[.5ex]{.5\textwidth}{.5pt}
\vfill
\end{frame}
\end{document}
第一帧不是居中的。根据经验,我知道仅仅调用\vfill
某个地方可能会产生意想不到的结果(TeX 模式),所以我在帧的开头放了一个空框。这给出了上面示例中的第二帧,它稍好一些,但还没有真正居中。为了得到我们想要的结果,我不得不放其他空盒子后。\vfill
我必须承认,我很困惑为什么……