根据背景颜色设置文本颜色

根据背景颜色设置文本颜色

我为我的学生制作讲义/幻灯片。我喜欢制作这些讲义/幻灯片的三个不同版本

  • 解决方案模式 - 包含我的解决方案(通常为蓝色)。
  • 学生模式- 解决方案被隐藏。
  • 暗模式-类似于学生模式,但背景是深色的,文字是浅色的(对于缩放课程来说更容易看清)

我处理这个问题的方式是在序言中调用 \solutionsversion、\studentversion 或 \darkmodeversion,这会设置事物的颜色(所有宏都整理到我编写的样式文件中)。我有一个命令 \answer{...},我将它放在被视为答案的内容周围。如果调用 \solutionsversion,此命令会将文本颜色设置为蓝色,如果调用其他版本之一,它会将文本颜色设置为与背景颜色相同,因此文本被隐藏。

这种方法效果很好,直到我想要的答案存在于颜色与标准背景颜色不同的东西中,例如在投影仪块环境中。

我发现的一个部分解决方法是更改​​ \answer 的定义,使文本暂时透明,定义如下

\newcommand{\answer}[1]{\pgfsetfillopacity{0} #1 \pgfsetfillopacity{1}}

然而,我发现使用 \frac{}{} 的分数分界线以及回答这个问题不要变得透明。

有谁知道我如何使用一个命令将内容的颜色设置为与当前背景颜色相同,或者我是否应该停止尝试使用一个宏来完成所有操作。

固定的:我最初使用 pgfplots 包中的 \pgfsetfillopacity 使文本透明。我发现 transparent 包中的 \texttransparent{0}{...} 也能获得 pgfplots 缺少的部分。

答案1

正如图示建议:

您可以将答案代码命令制作成变量(宏),并\renew...根据需要使用它们。

问答

平均能量损失

\documentclass{article}
\usepackage{xcolor}

\begin{document}

\verb|>>Q: aaa A: \mybox{\mymode{\myanswer}}<<\par|

\bigskip
\newcommand\yyy{yyy}
\newcommand\mybox{\makebox[0pt]}
\newcommand\mymode{\hphantom}
\newcommand\myanswer{\yyy}
>>Q: aaa A: \mybox{\mymode{\myanswer}}<<\par

\renewcommand\mybox{\mbox}
\renewcommand\mymode{\color{blue}}
>>Q: aaa A: \mybox{\mymode{\myanswer}}<<\par

\renewcommand\mymode{\colorbox{black}}
\renewcommand\myanswer{{\sffamily\bfseries\color{blue!12}\yyy}}
>>Q: aaa A: \mybox{\mymode{\myanswer}}<<\par

\end{document}

相关内容