\begin{document} 之后的脚注位置

\begin{document} 之后的脚注位置

我正在尝试将图像作为边框放置在演示文稿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}

相关内容