Platzieren Sie den Text über dem Rahmentitel im Beamer

Platzieren Sie den Text über dem Rahmentitel im Beamer

Ich möchte oben in einem Frame (über dem Frame-Titel und der Standard-Frame-Überschrift) eine Textzeile platzieren, etwa:

\begin{frame}
    My top of frame text
    \frametitle{My title}
    My frame body
\end{frame}

aber Beamer formatiert automatisch neu. Haben Sie Vorschläge? Danke.

Antwort1

Hier habe ich einen linksbündigen \smashed-Stapel über dem Rahmentitel hinzugefügt. Er scheint den gleichen Abstand zu haben wie wenn es \frametitlesich nur um einfachen Text handelt. Ein vollständiges MWE vom OP hätte geholfen zu verstehen, ob dieser Ansatz angemessen ist.

\documentclass{beamer}
\usepackage{stackengine}
\renewcommand\stackalignment{l}
\begin{document}
\begin{frame}
    My top of frame text
%\frametitle{My title}
    \frametitle{\stackon{My title}{%
      \smash{\scriptsize extra text above the frame title}}}
    My frame body
\end{frame}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Dies ist eine „native“ Beamer-Lösung:

\documentclass{beamer}

\makeatletter
\newenvironment{myframe}[2][c]{%
    \addtobeamertemplate{frametitle}{\hskip-.7\beamer@leftmargin\scriptsize #2\vspace*{-.2cm}}{}
    \begin{frame}[#1]%
}{%
    \end{frame}
}
\makeatother

\begin{document}
\begin{myframe}{text above}
\frametitle{frame title}
\end{myframe}

\begin{frame}
\frametitle{frame title}
\end{frame}
\end{document}

Bildbeschreibung hier eingeben

Im Grunde wird dadurch eine benutzerdefinierte frameUmgebung erstellt, die eine gepatchte frametitleVorlage einbettet. Auf diese Weise können Sie myframeden Text über dem Titel aufrufen, wann immer Sie ihn möchten, und die Standardeinstellung, framewenn Sie ihn nicht möchten.

Bei Bedarf kann das Patchen global durchgeführt werden (entfernen Sie einfach das newenvironment).

verwandte Informationen