在环境中定义文本的颜色时textblock
(即来自textpos
包),则文本的颜色下一个框架也变成了那个颜色。
在下面的例子中(使用 lualatex 编译),文本“n°1”设置为Gray
,并且在下一个框架,正常文本(“答案!”)Gray
也是如此。
代码:
\documentclass[20pt, xcolor={usenames, dvipsnames}]{beamer}
\usepackage[overlay,absolute]{textpos}
\begin{document}
\begin{frame}
\begin{center}
\begin{textblock}{1}(0.5,0.5)\color{Gray}{n°1}\end{textblock}
$ \text{5}\times \text{9} $ = \color{BrickRed}{?}
\end{center}
\end{frame}
\begin{frame}
\begin{center}
Answers!
\end{center}
\end{frame}
\begin{frame}
\begin{center}
\begin{textblock}{1}(0.5,0.5)\color{Gray}{n°1}\end{textblock}
\only<1>{$ \text{5}\times \text{9} $ = \color{BrickRed}{?}}
\only<2>{$ \text{5}\times \text{9} $ = \color{OliveGreen}{\text{45}}}
\end{center}
\end{frame}
\end{document}
我知道一个非常简单的解决方法是包装“答案!”:color{Black}{Answers!}
但是:
我不确定这是否是正常现象(原因是我的文档写得不好)或者这是否是包之间的冲突(textpos 文档提到了这种冲突,但它给出的解决方法并不适用于
lualatex
或涉及我不使用的其他命令,例如\pagecolor
;尽管如此,尝试提到的技巧并lualatex
没有奏效(相同的结果))。另外,我徒劳地尝试添加:\setbeamercolor{normal text}{fg=black,bg=white}
before\begin{document}
。由于文档是自动创建的,如果可能的话,我宁愿避免添加这样的解决方法
那么,有什么办法(比我的解决方法更好)可以让下一帧的文本变成正常颜色(这里是黑色)吗?如果可能的话,答案不应该使用任何其他包(以限制其他包冲突的风险)。
答案1
\color
不是带参数的宏,而是开关。根据你的代码设置方式,我建议改用\textcolor{<color>}{<text>}
。它还有一个额外的优势,即它具有叠加感知功能,因此如果你想让一些文本在幻灯片之间切换颜色,你可以这样做\textcolor<2>{green}{test}
。
如果您想保留颜色命令,则在组内使用它将{ \color{red} text }
防止颜色“泄漏”到下面的文本。
\documentclass[20pt, xcolor={usenames, dvipsnames}]{beamer}
\usepackage[overlay,absolute]{textpos}
\begin{document}
\begin{frame}
\begin{center}
\begin{textblock}{1}(0.5,0.5)\textcolor{Gray}{n°1}\end{textblock}
$ \text{5}\times \text{9} $ = \textcolor{BrickRed}{?}
\end{center}
\end{frame}
\begin{frame}
\begin{center}
Answers!
\end{center}
\end{frame}
\begin{frame}
\begin{center}
\begin{textblock}{1}(0.5,0.5)\textcolor{Gray}{n°1}\end{textblock}
\only<1>{$ \text{5}\times \text{9} $ = \textcolor{BrickRed}{?}}
\only<2>{$ \text{5}\times \text{9} $ = \textcolor{OliveGreen}{\text{45}}}
\end{center}
\end{frame}
\end{document}