MathJax中\color声明颜色溢出,后续文本染色问题咨询
为什么MathJax中
\color会持续影响后续文本,而\textcolor不会? 问题描述
我在Markdown和HTML文件中分别测试了\color和\textcolor命令,发现只有后者能将颜色作用范围限定在参数内;使用\color时,表达式里剩余的所有内容都会一直保持红色。
测试代码:
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.min.js"></script> $$\color{red}{red} black$$ $$\textcolor{red}{red} black$$
原因解释
这是两个命令的设计逻辑差异导致的:
\color是声明式状态切换命令:它的作用是修改当前数学环境的全局颜色状态,大括号仅用来传递颜色参数,不是作用域边界。一旦执行\color{red},后续所有未被其他颜色命令覆盖的内容都会继承红色,直到当前数学块(比如$$包裹的范围)结束。\textcolor是带局部作用域的函数式命令:它需要同时传入颜色和目标内容两个参数,只会对第二个参数内的内容应用指定颜色,执行完成后会自动恢复之前的颜色状态,不会影响后续文本。
直白点说,\color相当于"打开红色模式后就不关闭",而\textcolor是"只给指定片段染红色,染完立刻切回原来的颜色"。
内容的提问来源于stack exchange,提问作者Joy
相关产品推荐
相关产品推荐

