如何将字符转换为数值?

如何将字符转换为数值?

现在我已经得到了威尔·罗伯逊的优秀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

相关内容