我希望框架的标题比默认的标题稍微靠右一些。我以为我有一个理想的解决方案
\addtobeamertemplate{frametitle}{\hspace*{1em}}{}
(1em 仅作为示例)。但是“前置文本”和“后置文本”参数无法按预期工作(并在 beamer 文档中描述)。:-(
梅威瑟:
\documentclass{beamer}
\addtobeamertemplate{frametitle}{X}{Z}
\begin{document}
\begin{frame}{Foo}
\begin{itemize}
\item Bar
\end{itemize}
\end{frame}
\end{document}
那么有谁知道如何实现我的愿望吗?
答案1
\addtobeamertemplate
允许“你有限的修改现有模板的形式。”它是否有效(以及如何有效)在很大程度上取决于您要更改的模板的代码。在 frametitle 的情况下,默认模板(在 中定义beamerouterthemedefault.sty
)或多或少是一个宽度的框\textwidth
,因此如果您在将框推入右边距或下一行之前添加一些内容。
因此,您要么必须完全重新定义模板(或定义一个新模板),要么尝试修补模板定义。这样的修补自然也很大程度上取决于实际代码:
\documentclass{beamer}
\makeatletter
\usepackage{xpatch}
\patchcmd\beamer@@tmpl@frametitle{sep=0.3cm}{sep=1cm}{}{}
\makeatother
\begin{document}
\begin{frame}{Foo blbla blabl ablalb blablalb XXXXX XXXX blablabla blablabl blalab blablablala}
akbkbkb
\begin{itemize}
\item Bar
\end{itemize}
\end{frame}
\end{document}
未打补丁
带补丁
答案2
默认的外部主题使用 options 定义 frametitle 颜色框[sep=0.3cm,#1,wd=\the\@tempdima]
。因此,将标题推到右侧的一个简单方法是将 frametitle 模板定义为
\setbeamertemplate{frametitle}[default][left,leftskip=1cm] % <-- choose here the leftskip you wish
要自动将框架标题与其余文本对齐,您可以编写
\makeatletter
\setbeamertemplate{frametitle}[default][left,leftskip=\the\dimexpr\[email protected]\relax]
\makeatother
(减去 0.3cm,因为默认值sep
是 0.3cm)