Beamer \mode* metropolis theme and standout

beamerbeamer-metropolismode

When using \mode* it seems that this confuses beamer with the metropolis theme when using the standout-frame option such that after using standout all succeeding frames stay in this standout mode although not active.

Here is a minimal example:

\documentclass{beamer}
\usepackage[utf8]{inputenc}

\usetheme{metropolis}

\begin{document}
    \mode*
    \begin{frame}{test}
        
    \end{frame}

    \begin{frame}[standout]{test standout}
    123
    \end{frame}

    \begin{frame}{test no standout}
        
    \end{frame}


\end{document}

I would expect that the frame after the standout-frame is not typeset in standout-mode but, unfortunately, it is. I know that removing \mode* solves this issue. But I am using a construction where having it is quite handy and simplifies my document because I do not have to use at every in-between frame text the option \mode<article>{}. So, I wonder whether the beaviour is intended or if there is a workaround?

Best Answer

Update 2024:

You could avoid the problem by using the moloch theme, which a more modern fork of the metropolis theme:

\documentclass{beamer}
\usepackage[utf8]{inputenc}

\usetheme{moloch}% modern fork of the metropolis theme

\begin{document}
    \mode*
    \begin{frame}{test}
        
    \end{frame}

    \begin{frame}[standout]{test standout}
    123
    \end{frame}

    \begin{frame}{test no standout}
        
    \end{frame}


\end{document}

Original answer:

This has already been fixed in the development version on github, see https://github.com/matze/mtheme/issues/335

Until a new version is released to ctan, you can either manually install the dev version or use the following workaroud:

\documentclass{beamer}
\usepackage[utf8]{inputenc}

\usetheme{metropolis}

\makeatletter
  \pretocmd{\beamer@reseteecodes}{%
    \ifbool{metropolis@standout}{
      \endgroup
      \boolfalse{metropolis@standout}
    }{}
  }{}{}
\makeatother

\begin{document}
    \mode*
    \begin{frame}{test}
        
    \end{frame}

    \begin{frame}[standout]{test standout}
    123
    \end{frame}

    \begin{frame}{test no standout}
        
    \end{frame}


\end{document}