[Tex/LaTex] Theorem content right after theorem name in beamer

beamertheorems

When we write a theorem in beamer, by default the theorem name and theorem content are in different lines, like this:

|-------------------------------------------
|Theorem 1
|-------------------------------------------
|Some theorem content.
|-------------------------------------------

How to make the theorem name and theorem content show in the same line? like this:

|---------------------------------------------
|Theorem 1: Some theorem content.
|---------------------------------------------

Best Answer

beamer provides a means to modify the start and end of a theorem environment by setting the appropriate template. The start of the theorem environment template is defined within theorem begin, and the end in the template theorem end:

\documentclass{beamer}

\makeatletter
\setbeamertemplate{theorem begin}
{%
  \inserttheoremheadfont% \bfseries
  \inserttheoremname \inserttheoremnumber
  \ifx\inserttheoremaddition\@empty\else\ (\inserttheoremaddition)\fi%
  \inserttheorempunctuation
  \normalfont
}
\setbeamertemplate{theorem end}{%
  % empty
}
\makeatother

\begin{document}
\begin{frame}
  \begin{theorem}[Theorem name]
    This is a very important theorem and requires an exceptional proof.
  \end{theorem}
\end{frame}
\end{document}

enter image description here

\inserttheoremheadfont formats the header as \bfseries. If you want to modify this (and add some colour or perhaps even a different style (\itshape, say), input it directly as needed. Ending in \normalfont switches back to the normal font shape for typesetting the remainder of the theorem content. \inserttheoremname inserts Theorem, while \inserttheoremnumber inserts the theorem number. Whatever is specified as the optional argument to theorem is considered as a "theorem addition", and is inserted using \inserttheoremaddition. Punctuation, if any, is provided by \insertpunctuation (default is a period .).

The redefinition of theorem end is also required. In this case, it is left empty.