我正在尝试制作一个 .sty 模板,但我无法弄清楚如何为“部分页面”框架定义专用的背景画布。
这里 (如何仅向标题框添加背景并仅向最后一框添加其他背景?) 是一种可以根据帧号来表征背景的解决方案,但它不能应用于我的情况。
那么有没有办法测试框架的“类型”?(例如“标题页”、“部分页”等)。如果是,则意味着我可以做与 sandoche 问题的解决方案相同的事情。如果没有,有人能想到解决方法吗?
答案1
据我所知,背景画布是在读取框架的实际内容之前绘制的。因此\frame{\partpage}
,在 中,背景是在 beamer 看到\partpage
并意识到框架是部分页面之前绘制的。
如果您想要\frame{\partpage}
在每个之后立即执行\part{}
,那么您可以简单地挂接到\AtBeginPart
:
\documentclass{beamer}
\AtBeginPart{%
{% start a group to keep the template change local
\setbeamertemplate{background canvas}{%
\color{red!50}\rule{\paperwidth}{\paperheight}%
}%
\frame{\partpage}%
}% end group
}
\begin{document}
\part{The first part}
\frame{...}
\frame{...}
\part{The second part}
\frame{...}
\frame{...}
\end{document}
答案2
Caramdir 提供的解决方案不允许在输入时为部分页面获取不同的背景颜色
\begin{frame}
\partpage
\end{frame}
假设部分页面的背景由部分标题的背景颜色给出(这很容易调整)。这里有个窍门。我们首先定义一个将用于部分页面的新页面样式。然后将此页面样式添加到部分页面模板中。
为了方便起见,我们还添加了一个键,以便可以使用该bgcolor
键轻松插入背景颜色。
这是一个完整的例子。
\documentclass{beamer}
\makeatletter
\def\ps@navigation@partpage{%
\setbeamercolor{background canvas}{use=part title,bg=part title.bg}%
\@nameuse{ps@navigation}}
\addtobeamertemplate{part page}{\thispagestyle{navigation@partpage}}{}
\define@key{beamerframe}{bgcolor}[]{%
\ifx#1\@empty\else\setbeamercolor{part title}{bg=#1}\fi}
\makeatother
\setbeamercolor{part title}{bg=pink} % default color
\begin{document}
\part{First Part}
\begin{frame}
\partpage
\end{frame}
\part{Second Part}
\begin{frame}[bgcolor=yellow]
\partpage
\end{frame}
\end{document}
第一部分页面具有默认的粉红色背景颜色,第二部分页面具有黄色背景颜色。修改上例中的背景颜色的另一种方法是通过\setbeamercolor
:
\setbeamercolor{part title}{bg=yellow}
\begin{frame}
\partpage
\end{frame}