Beamer 页脚通过添加 \if... \fi 测试进行移动

Beamer 页脚通过添加 \if... \fi 测试进行移动

好吧 --- 我对此感到很抓狂(我可以解决这个问题,但我真的想知道发生了什么)。考虑一下这个 MWE 几乎直接从这个答案

\documentclass{beamer}

\usetheme{Boadilla}

\makeatletter
\setbeamertemplate{footline}{%
  %%\ifnum\thepage>1\relax  %%% HERE
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
    \usebeamerfont{author in head/foot}\insertshortauthor\expandafter\ifblank\expandafter{\beamer@shortinstitute}{}{~~(\insertshortinstitute)}
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
    \usebeamerfont{title in head/foot}\insertshorttitle
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}%
    \usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em}
    \insertframenumber{} / \inserttotalframenumber\hspace*{2ex} 
  \end{beamercolorbox}}%

    \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
    \usebeamerfont{author in head/foot} text
  \end{beamercolorbox}%
  \vskip0pt%
  %%\fi %%% HERE
}
\makeatother

\begin{document}

\begin{frame}
    \titlepage
\end{frame}

\begin{frame}
\frametitle{Frame Title}
\end{frame}
\end{document}

渲染成功:

正确渲染

但我不想在标题页上有页脚(在我的主题中它有一个背景图像),所以我用 取消\ifnum...\fi注释上面的注释%%%HERE。页脚在第一帧中正确消失,但随后所有其他帧的页脚都移位了:

错误渲染

...我在这里做错了什么?

答案1

如果你的页脚没有文字,那么它就相当于

\leavevmode\hbox{}%
\vskip0pt

它开始一个段落,添加一行白线“文本”来结束段落,然后添加 0pt 的垂直跳过(这可能会移动对齐点)。

\ifnum用什么都不替换它,这意味着行为可能会有所不同,将测试移到你的水平盒子里面。

请注意,一般来说,测试文档中间的页码计数器或将其作为数字进行测试是不安全的,但由于您在没有自动分页符的投影仪中,并且您知道页面样式是数字,所以没问题(尽管为了安全起见我不会\thepage使用)。\value{page}\thepage

相关内容