我正在制作一个 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@frametopskip
为0.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}}
}
似乎解决了该问题,至少对于我测试的小例子而言。