我正在尝试更改 Beamer 中框架的背景颜色,并一直遵循这个问题示例版本运行良好,但如果将ignorenonframetext
参数引入\documentclass
声明,则所有框架都会获得白色背景。
这会改变背景颜色,但会产生一个带有非框架文本的框架。
\documentclass{beamer}
\begin{document}
Some non-frame text.
\begin{frame}{Test}
white
\end{frame}
\setbeamercolor{background canvas}{bg=black}
\begin{frame}{Test}
\textcolor{white}{black}
\end{frame}
\end{document}
这会隐藏非框架文本,但不改变背景颜色。唯一的区别是第一行。
\documentclass[ignorenonframetext]{beamer}
\begin{document}
Some non-frame text.
\begin{frame}{Test}
white
\end{frame}
\setbeamercolor{background canvas}{bg=black}
\begin{frame}{Test}
\textcolor{white}{black}
\end{frame}
\end{document}
这是一个错误吗?发生了什么事?
编辑
我突然想到这不是一个错误:当然,它忽略了背景颜色命令,它是非框架文本。在这种情况下,问题是如何在选项ignorenonframetext
到位的情况下设置背景颜色?
答案1
搞定了。可能有更优雅的方法来做到这一点,但下面的方法有效。
诀窍是ignorenonframetext
在有问题的帧之后暂时禁用它,然后重新启用它\mode*
:
\documentclass[ignorenonframetext]{beamer}
\begin{document}
Some non-frame text.
\begin{frame}{Test}
white
\end{frame}
% Turn off ignorenonframetext and change the color
\mode<all>
{\setbeamercolor{background canvas}{bg=black}
\begin{frame}{Test}
\textcolor{white}{black}
\end{frame}
}
\mode*
% Return to ignorenonframetext
% Revert the background color to the default for the next frame
\mode<all>
{\setbeamercolor{background canvas}{bg=}
\begin{frame}{Test\setbeamercolor{background canvas}{bg=red}}
white again
\end{frame}
}
\mode*
\end{document}