对于我的讲座,我喜欢给方程中的符号上色,以便更容易理解正在发生的事情 - 有点像语法突出显示。因此,所有向量空间都是一种颜色,所有集合都是另一种颜色,e
采用罗马字体,等等。目前,我通过为每个符号定义新的宏来实现这一点,因此典型的一行内容如下:
Define \(\tyz^\tyw \coloneqq \tye^{\tyw \ty\ln(\tyz)}\)
我真的很想能够直接打字
Define \(z^w \coloneqq e^{w \ln(z)}\)
为此,我需要能够告诉 TeX,数学符号(比如说,“e”)不是“e”,而是罗马字体且具有特定颜色的“e”。
有人知道如何做到这一点吗?
答案1
在常规 latex 中,你可以为不同的符号选择不同的字体,但不能选择不同的颜色。但是,如果你不介意使用 xelatex 或 lualatex,你可以尝试我的新包“Unicode-math”,它确实允许你做这种事情。界面还不是很好,但总体思路是
\setmathfont{XITS Math}
\setmathfont[range= <Unicode slot for char you want>, Color=red]
{XITS Math}
恐怕目前您可以使用的字体数量有限。
更新:这是一个实际的例子:
\documentclass{文章} \usepackage{unicode-math} \开始{文档} \setmathfont{XITS 数学} \setmathfont[range="65,math-style=upright,Colour=FF0000]{XITS 数学} $def$ \结束{文档}
Colour
如果将 放在之前,它不起作用math-style
,但我现在无法解释为什么会这样。我也无法解释为什么你需要使用"65
而不是"1D452
。似乎我的代码已经有了自己的生命:)
答案2
显而易见的想法是使用类似
\catcode\`\x=13 \def x{something}`
但只需在公式中执行即可。也许可以尝试重新定义\(
以包括\bgroup\catcode...
。
x
但它会破坏其名称中的任何命令......
答案3
这是大胆的猜测,但您可以定义一个新的数学环境,首先扫描输入中的标记,用相应的“彩色”版本替换一些预定义的符号集,其他一切保持不变。最后,您确实让 LaTeX 评估生成的标记列表。
不过,我不确定这会破坏多少东西。而且深入其中{}
可能也会很棘手。
真的对此一无所知,但也许这就是你可以用 LuaTeX 做的事情?