在某些版本的类中beamer
(例如 TeX Live 2016 v3.36 中的版本),在背景层中,在plain
框架的背景内容之前插入了高度与脚注线相同的空间。但是,在较新版本中beamer
(例如 TeX Live 2017 中的 v3.42),这种情况不再发生,背景内容从框架的最顶部开始。我认为这可能是由于提交f6e1d8e
beamer
,因此看起来似乎没有一个简单的用户端钩子来控制这一点。
为了说明该问题,请考虑以下最小文档的第一页:
\documentclass{beamer}
\setbeamertemplate{headline}{\color{red}\rule{\paperwidth}{1cm}}
\setbeamertemplate{background}{\rule{0.8cm}{7cm}}
\begin{document}
\begin{frame}[plain]
plain frame
\end{frame}
\begin{frame}
normal frame
\end{frame}
\end{document}
我的问题在于,我提供的 Beamer 主题/模板在标题幻灯片上使用全页背景图像,因此我使用框架plain
作为标题幻灯片来隐藏其他框架部分。但是,根据版本的不同beamer
,背景图像可能会向下移动标题高度。
我如何根据版本解释这种转变beamer
?TeX Live 2016 是相当新的,我不能简单地告诉所有用户升级他们的 TeX 安装(他们可能正在使用 Linux 发行版的 LTS 版本,或者只是在他们的机器上没有管理员权限),所以我正在寻找 LaTeX 解决方案。
答案1
您可以使用xpatch
将错误修复添加到旧版本:
\documentclass{beamer}
\setbeamertemplate{headline}{\color{red}\rule{\paperwidth}{1cm}}
\setbeamertemplate{background}{\rule{0.8cm}{7cm}}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\ps@empty}{%
\vbox{\hbox{\hskip-\Gm@lmargin\raise\headheight\box\beamer@tempbox\box\@tempboxa}\hfil}%
}{%
\vbox{\hbox{\hskip-\Gm@lmargin\raise\headheight\box\beamer@tempbox\raise\headheight\box\@tempboxa}\hfil}%
}{\typeout{patching successful}}{\typeout{patching failure}}
\makeatother
\begin{document}
\begin{frame}[plain]
plain frame
\end{frame}
\begin{frame}
normal frame
\end{frame}
\end{document}