Beamer 框架环境引入 5.69pt 垂直边距

Beamer 框架环境引入 5.69pt 垂直边距

我正在制作一个 beamer 海报模板,需要精确控制所有边距。我删除了大部分内容,但强制框架环境(1)引入了一个5.69pt(2),我找不到(3)

观察这个例子:

\documentclass[final,t]{beamer}

\usepackage[orientation=portrait,size=a4]{beamerposter}
\geometry{margin=0pt}%

\begin{document}%
\begin{frame}[t,plain]%
%\vskip-5.69pt%    <--- magical vertical space
\begin{pgfpicture}%
  \pgfsetlinewidth{1pt}%
  \pgfpathmoveto{\pgfpoint{0pt}{0pt}}%
  \pgfpathlineto{\pgfpoint{2cm}{0pt}}%
  \pgfpathlineto{\pgfpoint{2cm}{-2cm}}%
  \pgfusepath{stroke}%
\end{pgfpicture} with frame%
\end{frame}%
\end{document}%

如果我们构建它并放大左上角,它看起来像这样:

垂直框架边距

现在,如果我们删除,\begin{frame}[t,plain]我们\end{frame}会得到以下结果:

没有垂直边距

请注意,图片周围的细黑框是我的 pdf 查看器插入的页面边框。

我不知道页面边框和 pdfpicture 之间的距离来自哪里。我怎样才能摆脱它?


(1)我可以省略框架,但\item在 itemize 环境中使用 s 时会遇到麻烦。TeX 会突然声称\item这是一个未定义的控制序列。

(2)\hbox当我尝试插入尺寸的小页面时,这就是乳胶报告的过满情况[\paperheight]{\paperwidth}

(3)我尝试设置几乎每个页边距无济于事0pt。另外,官方的 Beamer 指南没有提到这个边距。

答案1

这是一个偷偷摸摸的:该t选项不会将所有内容推到顶部,而是设置\beamer@frametopskip0.2cm plus 0.5\paperheight。(0.2cm 恰好是您观察到的 5.69pt)。

添加

\makeatletter
\define@key{beamerframe}{t}[true]{% top
  \beamer@frametopskip=0pt %<-- was: .2cm plus .5\paperheight\relax%
  \beamer@framebottomskip=0pt plus 1fill\relax%
  \beamer@frametopskipautobreak=\beamer@frametopskip\relax%
  \beamer@framebottomskipautobreak=\beamer@framebottomskip\relax%
  \def\beamer@initfirstlineunskip{%
    \def\beamer@firstlineitemizeunskip{%
      \vskip-\partopsep\vskip-\topsep\vskip-\parskip%
      \global\let\beamer@firstlineitemizeunskip=\relax}%
    \everypar{\global\let\beamer@firstlineitemizeunskip=\relax}}
}

似乎解决了该问题,至少对于我测试的小例子而言。

相关内容