定义第二个 frametitle 命令

定义第二个 frametitle 命令

使用 beamer 创建幻灯片时,我想要使用两种框架标题的情况:

  1. 框架标题居中并显示在一行中,与 \textwidth 或 \linewidth 无关。
  2. 框架标题居中,但如果太长则显示在多行中;如果需要,会自动插入换行符。

第一个命令的优点是我可以在一行中获得更长的标题,例如 长标题 我已经这样定义它并且效果很好:

\setbeamertemplate{frametitle}{%
  \vspace{1ex} \huge\rmfamily\centerline{\scshape{\insertframetitle}}
}

如果标题无法在一行中显示,则第二个命令很有用。 在此处输入图片描述 这将由第一个命令生成,它应该智能地断线并生成 两行标题 。第一条线当然应该与第一个函数生成的线具有相同的高度。

现在的问题是我不知道如何创建第二个命令。我想叫它\longtitle。有人有主意吗?

以下是 MWE:

\documentclass[hyperref={pdfpagemode=FullScreen},aspectratio=169]{beamer}

\setbeamertemplate{frametitle}{%
  \vspace{1ex} \huge\rmfamily\centerline{\scshape{\insertframetitle}}
}

%\newcommand{\longtitle}{}

\begin{document}
\begin{frame}
\frametitle{Warum das cartesische Produkt existiert}
\end{frame}
\begin{frame}
%\longtitle{Warum Mengen von Vereinigungspaaren existieren}
\end{frame}
\end{document}

答案1

您可以将框架标题定义为超出文本边距(尽管我不一定提倡这样做)。这样就不需要定义第二个宏了:

\documentclass[hyperref={pdfpagemode=FullScreen},aspectratio=169]{beamer}

\makeatletter
\setbeamertemplate{frametitle}{%
  \vspace{1ex}%
  \hspace*{-\beamer@leftmargin}%
  \parbox{\paperwidth}{\centering\huge\rmfamily\scshape{\insertframetitle}}%
  \hspace*{-\beamer@rightmargin}%
}
\makeatother

\begin{document}
\begin{frame}
\frametitle{Warum das cartesische Produkt existiert}
\end{frame}
\begin{frame}
\frametitle{Warum Mengen von \\ Vereinigungspaaren existieren}
\end{frame}
\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容