现在我已经得到了威尔·罗伯逊的优秀unicode 数学包工作来改变我的数学字母的颜色和样式(相信我,有是原因)得益于他的回答我之前的问题,我想弄清楚如何正确实现这一点。
关键步骤似乎是更改字母显示方式的命令需要字母的 unicode 数值。Will 给出的示例是:
\setmathfont[range="66,math-style=upright,Colour=FF0000]{xits-math.otf}
(根据 Will 对该问题的评论,字体名称已更改为与 xelatex 配合使用),这会更改字母e
。但我想要一个可以调用的命令\type{constR}{e}
(应将其声明e
为常量实数)。所以我需要转换e
为它的 unicode 值。
现在似乎可能没有通用的“字符转 unicode”命令,因此如果我可以将标准字母转换为某个数字,我会很满意,因为我最常使用它的字符是字母数字。因此:
将字母数字字符转换为字母表中的位置的最佳方法是什么?
答案1
有一种将字符转换为其字符编号(相当于其在 unicode 中的 unicode 字形槽)的通用方法,但不幸的是它在 fontspec/unicode-math 的选项中效果不佳(我知道这是一个问题)。通常您可以使用类似这样的方法:
\newcount\foo
\foo=`\e
将“e”的字符编号分配给 \foo;这种“反引号转义”语法适用于 TeX 需要数字的情况。但是,它没有如果首先扩展参数,则可以工作,这就是 fontspec 和 unicode-math 中发生的情况。
现在,你不需要实际上需要上述代码中的反斜杠;这也可以起作用:
\foo=`e
不同之处在于,这不能用于诸如%
和 之类的“困难”字符#
。如果您只是使用字母,那么这不会有问题。
因此在 unicode-math 中你应该可以写
range={`e,`j,...}
或者使用您需要的任何字母。
答案2
(我本来想将此添加为评论,但我还没有足够的声誉点来发表评论。)
除了 Will Robertson 的回答之外,对于您有一个\newcommand\mychar{}
扩展为字符的宏(在 LaTeX 中以形式定义),可以通过执行来获取扩展宏的代码\makeatletter\foo=\expandafter`\mychara \relax\makeatother
。