Разместить текст над заголовком фрейма в проекторе

Разместить текст над заголовком фрейма в проекторе

Я хочу разместить строку текста в верхней части фрейма (над заголовком фрейма и заголовком фрейма по умолчанию), например:

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

но бимер автоматически переформатирует. Есть предложения? Спасибо.

решение1

Здесь я добавил выровненный по левому краю \smashстек ed поверх заголовка фрейма. Кажется, он имеет тот же интервал, что и когда это \frametitleпросто обычный текст. Наличие полного MWE от OP помогло бы понять, адекватен ли этот подход.

\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}

введите описание изображения здесь

решение2

Это «родное» решение Beamer:

\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}

введите описание изображения здесь

По сути, это создает пользовательскую frameсреду, которая встраивает пропатченный frametitleшаблон. Таким образом, вы можете вызывать myframeтекст над заголовком всякий раз, когда вам это нужно, и значение по умолчанию, frameкогда вам это не нужно.

При необходимости исправление можно сделать глобальным (просто удалите newenvironment).

Связанный контент