我正在尝试将图像作为边框放置在演示文稿footline
的页脚 ( )中beamer
。我注意到,如果我\setbeamertemplate{footline}[large]
在 之后使用\begin{document}
,垂直位置太低而无法显示图像。如果我在 之前使用它\begin{document}
,那么它会被正确放置。在最终的演示文稿中,一些幻灯片(例如标题幻灯片)会有这个,但更多的幻灯片不会有,这就是为什么我不想在上面全局设置它\begin{document}
,然后在没有它的幻灯片上隐藏它。
我想要做的事情是这样的:
\defbeamertheme{footline}{large}{
\leavevmode
\includegraphics[width=\paperwidth]{images/banner.pdf}
\begin{tikzpicture}[overlay]
\node at (-.845\paperwidth,.05\paperheight) {
\includegraphics[width=.15\paperwidth]{images/logo.png}
};
\end{tikzpicture}
}
\begin{document}
{\setbeamertemplate{footline}[large]
\begin{frame}
\titlepage
\end{frame}
}
\begin{frame}{Frame without footline}
Text
\end{frame}
\end{document}
答案1
您可以通过重新计算头部和脚部尺寸来解决这个问题\beamer@calculateheadfoot
。
\documentclass[demo]{beamer}
\usepackage{tikz}
\title{Here is the Title}
\author{Author}
\date{\today}
\defbeamertemplate{footline}{large}{
\leavevmode
\includegraphics[width=\paperwidth]{images/banner.pdf}
\begin{tikzpicture}[overlay]
\node at (-.845\paperwidth,.05\paperheight) {
\includegraphics[width=.15\paperwidth]{images/logo.png}
};
\end{tikzpicture}
}
\newcommand*{\resetsize}{\csname beamer@calculateheadfoot\endcsname}
\newcommand*{\enablefoot}{%
\setbeamertemplate{footline}[large]
\resetsize
}
\newcommand*{\disablefoot}{%
\setbeamertemplate{footline}{}
\resetsize
}
\begin{document}
\enablefoot
\begin{frame}
\titlepage
\end{frame}
\disablefoot
\begin{frame}{Frame without footline}
Text
\end{frame}
\end{document}
评论:
我使用是
\csname beamer@calculateheadfoot\endcsname
因为这个定义会导致错误:\newcommand*{\resetsize}{% \makeatletter \beamer@calculateheadfoot \makeatother}
我定义了开关而不是使用括号分组,因为在我的测试文档中,这种方法产生了一个额外的空框架。
答案2
随着当前 beamer 开发版本(应包含在 beamer v3.70 或更新版本中),beamer 现在会在每帧开始时重新计算头部和脚部的高度,因此您的代码现在可以立即使用:
\documentclass{beamer}
\usepackage{tikz}
\defbeamertemplate{footline}{large}{
\leavevmode
\includegraphics[width=\paperwidth]{example-image-duck}
\begin{tikzpicture}[overlay]
\node at (-.845\paperwidth,.05\paperheight) {
\includegraphics[width=.15\paperwidth]{example-image-duck}
};
\end{tikzpicture}
}
\title{text}
\begin{document}
{\setbeamertemplate{footline}[large]
\begin{frame}
\titlepage
\end{frame}
}
\begin{frame}{Frame without footline}
Text
\end{frame}
\end{document}