正如标题所示。我\beamerdefaultoverlayspecification{<+->}
在演示中使用。默认情况下,beamer 会显示一个新框架,其中第一个项目或文本片段已经可见。但是,我首先只想显示框架标题(例如,标题是我想在继续提供答案之前解释的问题)。现在,我可以像这样手动执行此操作:
\begin{frame}\frametitle{This title needs some explanation}
\pause
...
但这必须对每一帧都执行,而且还会产生各种意想不到的效果(例如,它似乎会干扰 beamerpauses 计数器,但我不明白它到底是做什么的)。有没有办法让所有帧默认在 frametitle 后暂停?如果有,是否也可以恢复为单个帧的默认行为(以防我不想在特定帧的标题后暂停)?
答案1
如果布尔值为真,则可以修补 \beamer@checkframetitle
命令并添加 命令,对于在帧标题后没有暂停的帧,只需更改为\pause
\ifafterftpause
\afterftpausefalse
\documentclass{beamer}
\usepackage{lipsum}
\newif\ifafterftpause
\afterftpausetrue % default
\makeatletter
\def\beamer@checkframetitle{%
\@ifnextchar\bgroup\beamer@inlineframetitle{{}\ifafterftpause\pause\fi}}
\def\beamer@inlineframetitle#1{%
\@ifnextchar\bgroup{\frametitle{#1}\framesubtitle}{\frametitle{#1}\relax}%
\ifafterftpause\pause\fi
}
\makeatother
\begin{document}
\begin{frame}
\frametitle{Title}
\lipsum[2]
\pause
\begin{itemize}
\item text
\item text
\end{itemize}
\end{frame}
{\afterftpausefalse % no pause after frame title
\begin{frame}{Title}
\lipsum[1]
\end{frame}
}
\begin{frame}{Title}
\lipsum[2]
\pause
\begin{itemize}
\item text
\item text
\end{itemize}
\end{frame}
\end{document}
使用 beamerswitch 类
您需要\mode<all>
在开头添加
\PassOptionsToClass{aspectratio=169,10pt}{beamer}
\documentclass[beamer]{beamerswitch}
\usepackage{lipsum}
\newif\ifafterftpause
\afterftpausetrue % default
\makeatletter
\def\beamer@checkframetitle{%
\@ifnextchar\bgroup\beamer@inlineframetitle{{}\ifafterftpause\pause\fi}}
\def\beamer@inlineframetitle#1{%
\@ifnextchar\bgroup{\frametitle{#1}\framesubtitle}{\frametitle{#1}\relax}%
\ifafterftpause\pause\fi
}
\makeatother
\title{Title}
\begin{document}
% for beamerswitch class
\mode
<all>
{\afterftpausefalse\frame{\titlepage}}
\begin{frame}
\frametitle{Title}
\lipsum[2]
\pause
\begin{itemize}
\item text
\item text
\end{itemize}
\end{frame}
{\afterftpausefalse % no pause after frame title
\begin{frame}{Title}
\lipsum[1]
\end{frame}
}
\begin{frame}{Title}
\lipsum[2]
\pause
\begin{itemize}
\item text
\item text
\end{itemize}
\end{frame}
\end{document}