在数学模式下单独为符号着色(unicode-math 冲突)

在数学模式下单独为符号着色(unicode-math 冲突)

帖子中的解决方案https://tex.stackexchange.com/a/100625效率很高。遗憾的是,它不能与 unicode-math 一起使用,因为 unicode-math 会抹去个别符号的颜色。虽然 unicode-math 允许通过 单独着色符号\setmathfont,但如果太多符号以这种方式单独着色,源代码将无法编译。

有什么方法可以使\colorizemath代码(上面链接)与 unicode-math 兼容?

答案1

以下代码片段导致变量X在数学模式下显示蓝色,而不会影响其在文本模式下的外观。此外,它似乎与unicode-math相处得很好。(此代码片段可以扩展为独立着色许多符号,并且可以快速编译。)

\begingroup
\lccode`~=`x
\lowercase{\endgroup
    \def~{{\color{blue}\symnormal{x}}}%
 }%
\mathcode`x="8000

(代码修改自https://texfaq.org/FAQ-activechars

答案2

lcc 小写代码方法是一种查找。

可以使用 expl3 查找方法。

这里,有一个标记列表映射函数作为概念证明:

彩色数学

作为替代方案,还可以在 expl3 中使用键值属性列表。

需要很大的耐心才能设置每一个符号(和运算符)。

平均能量损失

\documentclass{article}
\usepackage{xcolor}
\usepackage{unicode-math}
\setmathfont{TexGyrePagella-Math}
\usepackage{xparse}


\ExplSyntaxOn

\cs_new:Npn \sym_to_col:n #1
{
    \tl_set:Nn \l_tmpb_tl { #1 }
        \str_case:VnTF 
            \l_tmpb_tl      
            {
                { 

相关内容