考虑以下 MWE:
\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{itemize}[<+->]
\item item
\item item\footnote<.->{footnote}
\item item
\end{itemize}
\end{frame}
\end{document}
主文本和脚注之间的水平线显示在第一个幻灯片上,尽管脚注本身仅在第二个幻灯片上显示。
有没有办法让这条规则只与脚注一起打印而不是之前打印?
答案1
此规则不是\footnote
命令的一部分,而是带脚注的框架。它是使用文件\footnoterule
中的命令绘制的。当 beamer 计算框架尺寸时,它会考虑框架是否有脚注,并在这种情况下绘制规则。\beamer@autobreakframebox
beamerbaseframesize.sty
我能提供的最佳解决方案是根本不绘制规则。下一个代码
\beamer@autobreakframebox
在您的文件中包含一个带有注释\footnoterule
命令的副本。我不知道这个解决方案是否适用于其他主题(我希望如此)。
\documentclass{beamer}
\makeatletter
\def\beamer@autobreakframebox{%
\global\setbox\beamer@splitbox=\box\voidb@x%
\ifbeamer@autobreak%
% Ok, frame was overful -> split it!
\setbox\@tempboxa=\vsplit\beamer@framebox to\beamer@autobreakfactor\textheight%
\global\setbox\beamer@splitbox=\box\beamer@framebox%
\@tempdima=\ht\beamer@splitbox%
\ifdim\@tempdima<\beamer@autobreaklastheight%
\global\beamer@autobreaklastheight=\@tempdima\relax%
\else%
\setbox\@tempboxa=\vbox{\unvbox\@tempboxa\unvbox\beamer@splitbox}%
\global\setbox\beamer@splitbox=\box\voidb@x%
\fi%
\setbox\beamer@framebox=\vbox to\textheight{\unvbox\@tempboxa%
\vskip\beamer@framebottomskipautobreak%
\ifvoid\beamer@splitbox%
\ifvoid\beamer@footins%
\else%
\begingroup
\usebeamercolor*[fg]{footnote}%
% \footnoterule%
\unvbox \beamer@footins%
\global\setbox\beamer@footins=\box\voidb@x%
\endgroup
\fi%
\fi%
\beamer@exitcode%
}%
\else%
\setbox\beamer@framebox=\vbox to\textheight{\unvbox\beamer@framebox%
\vskip\beamer@framebottomskip%
\ifvoid\beamer@footins%
\else%
\begingroup
\usebeamercolor*[fg]{footnote}%
% \footnoterule%
\unvbox \beamer@footins%
\global\setbox\beamer@footins=\box\voidb@x%
\endgroup
\fi%
\beamer@exitcode}%
\global\setbox\beamer@footins=\box\voidb@x%
\fi%
}
\makeatother
\begin{document}
\begin{frame}
\begin{itemize}[]
\item<1-> item
\item<2-> {item\footnote<2->{footnote}}
\item<3-> item
\end{itemize}
\end{frame}
\end{document}
答案2
我知道这个问题大约是一年前出现的,但我现在遇到了同样的问题。禁用该命令的最简单方法footnoterule
是重新定义该\footnoterule
命令。
\renewcommand{\footnoterule}{}
但是,如果你设法禁用\footnoterule
Ignasi 的答案,你可以使用
此方法只会添加\footnoterule
到您的文本中,而不会添加到您的脚注中。以下段落中添加了一个更好的解决方法
\begin{frame}{frametitle}
My text\footnotemark[1]
...
\uncover<2>{\footnoterule}
\footnotetext[1]<2>{This is my footnote}
\end{frame}
它允许您在覆盖层中显示\footnoterule
脚注。
此方法只会添加\footnoterule
到您的文本中,而不会添加到您的脚注中。以下段落中添加了一个更好的解决方法
解决方法是删除\footnoterule
Ignasi 答案中的 as,并添加\footnoterule
indefbeamertemplate*{footnote}
beamerinnertheme<themename>.sty
% Footnotes
\defbeamertemplate*{footnote}{default}
{
\footnoterule\parindent 1em\noindent%
\raggedright
\hbox to 1.8em{\hfil\insertfootnotemark}\insertfootnotetext\par%
}
并非beamerinnertheme.sty
所有主题都适用此定义,但您可以随时复制此定义beamerinnerthemedefault.sty
并进行修改。