Я хочу разместить строку текста в верхней части фрейма (над заголовком фрейма и заголовком фрейма по умолчанию), например:
\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
).