我遇到了一个很奇怪的现象,我不明白
这是一个 MWE
\documentclass{beamer}
\usetheme{Boadilla}
\title{Title}
\begin{document}
\begin{frame}[plain]
\titlepage
\end{frame}
\begin{frame}\frametitle{title}
\textcolor{frametitle.fg}{Does not work}
\end{frame}
\begin{frame}\frametitle{title}
\textcolor{frametitle.fg}{Does work}
\end{frame}
\end{document}
因此问题是,虽然在第二张幻灯片上我无法调用 frametitle.fg 作为颜色选项,但我可以稍后对所有幻灯片执行此操作(我仅在幻灯片 2 中收到“未定义颜色 frametitle.fg”错误)。
但是,幻灯片 2 的框架标题颜色正确。
我怀疑这是因为我使用 [纯色] 幻灯片作为标题页。但是,我想保留它,但想在第二张幻灯片上显示一些带有颜色 frametitle.fg 的文本。
有什么办法可以做到这一点?
答案1
@Ignasi 和 @Harish Kumar 提供了一些解决方案。原因如下。
比默使用复杂的系统来处理颜色。简而言之,当你看到类似
\usebeamercolor{frametitle}
frametitle
是一组颜色,以便您只需一个命令即可同时设置前景色和背景色。
微妙的是,虽然你可以使用它frametitle.fg
来访问颜色,比默将颜色存储在其他地方并计算飞行中。如下例所示,标题以绿色排版。
\documentclass{beamer}
\begin{document}
\setbeamercolor{frametitle}{bg=red!50!blue}
\colorlet{blue}{yellow}
\frame{{purple or orange?}}
这种设计的优点是,当您更改“父颜色”时,所有“子颜色”都会更新。特别是,您可以在演示文稿的中间更改主题。
现在我们可以得出结论,因为尚未调用,frametitle.fg
所以未定义。但是它怎么可能没有被调用呢?唯一的可能性是\usebeamercolor
比默在排版标题之前读取整个框架。这确实有道理,因为比默需要找出\frametitle
整个框架。
\frame{
\xglobal\colorlet{blue}{green}
\frametitle{purple or dirt?}
}
\end{document}