0

As the title says. I use \beamerdefaultoverlayspecification{<+->} in my presentation. By default, beamer displays a new frame with the first item or piece of text already visible. However, I want to first display only the frametitle (e.g., the title is a question I want to explain before I go on to provide answers). Right now, I can do this manually like this:

\begin{frame}\frametitle{This title needs some explanation}
  \pause
...

But this has to be done for each frame, and it also has all sorts of unexpected effects (e.g., it seems to mess with the beamerpauses counter, but I don't understand what it does exactly). Is there a way to have a pause after the frametitle by default for all the frames? And if there is, is it also possible to revert back to the default behavior for a single frame (in case I don't want a pause after the title on a specific frame)?

1 Answer 1

1

You can patch \beamer@checkframetitle commmand and add \pause command if boolean \ifafterftpause is true, for frames without a pause after frametitle just change to \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}

With beamerswitch class

You need to add \mode<all> at the beginning

\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}
7
  • This does not work for me. In fact, what seems to happen is that the frametitle is displayed first, then I have to press <space> as many times as there are overlays on the frame, and then everything is displayed at the last step. For instance, if the frame has only an itemize environment with two items, the title is displayed first, then I have to press <space> twice while the frame remains empty, and then both items are displayed after hitting <space> a third time. Obviously, not what I was after.
    – GrB
    Sep 22, 2020 at 12:59
  • @GrB answer updated.
    – Salim Bou
    Sep 22, 2020 at 14:09
  • Salim, this works, except that as soon as you add \frame{\titlepage}, the file begins with an empty frame and the title is displayed on the second.
    – GrB
    Sep 22, 2020 at 20:28
  • @GrB try with {\afterftpausefalse\frame{\titlepage}}.
    – Salim Bou
    Sep 22, 2020 at 20:36
  • OK. Thanks. It works, but I would like to use the beamerswitch package, and as soon as I substitute \documentclass[aspectratio=169,10pt]{beamer} by \PassOptionsToClass{aspectratio=169,10pt}{beamer} \documentclass[beamer]{beamerswitch}, I get the empty frame at the beginning again.
    – GrB
    Sep 22, 2020 at 21:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .