使用 beamer 创建幻灯片时,我想要使用两种框架标题的情况:
- 框架标题居中并显示在一行中,与 \textwidth 或 \linewidth 无关。
- 框架标题居中,但如果太长则显示在多行中;如果需要,会自动插入换行符。
第一个命令的优点是我可以在一行中获得更长的标题,例如 我已经这样定义它并且效果很好:
\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}