我可以永久改变字母的字体和颜色吗?

我可以永久改变字母的字体和颜色吗?

对于我的讲座,我喜欢给方程中的符号上色,以便更容易理解正在发生的事情 - 有点像语法突出显示。因此,所有向量空间都是一种颜色,所有集合都是另一种颜色,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 做的事情?

相关内容