使用 frametitle.fg,因为配色方案在 beamer-class 的第二张幻灯片上不起作用

使用 frametitle.fg,因为配色方案在 beamer-class 的第二张幻灯片上不起作用

我遇到了一个很奇怪的现象,我不明白

这是一个 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}

相关内容