是否可以创建一个接受文本或数学参数的命令,然后打印或输入其unicode十六进制数?
例如,
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\begin{document}
\noindent
Suppose the desired command is \verb|\getunicode|\\
\verb|\getunicode{$\leq$}| should print 2264\\
\verb|\getunicode{ℝ}| should print 211D\\
\verb|\getunicode{≥}| should print 2265\\
\verb|\getunicode{α}| should print 3B1\\
\verb|\getunicode{\beta}| should print 3B2
\end{document}
答案1
这个问题有点模糊,但可以使用类似
\ExplSyntaxOn
\cs_new:Npn \diaa_getunicode:n #1
{ \exp_args:Ne \__diaa_getunicode:n {#1} }
\cs_new_eq:NN \getunicode \diaa_getunicode:n
\cs_new:Npn \__diaa_getunicode:n #1
{ \tl_map_function:nN {#1} \__diaa_getunicode_auxi:n }
\cs_new:Npn \__diaa_getunicode_auxi:n #1
{
\bool_lazy_or:nnT
{ \token_if_letter_p:N #1 }
{ \token_if_other_p:N #1 }
{ \exp_args:Ne \__diaa_getunicode_auxii:n { \__text_token_to_explicit:N #1 } }
}
\cs_new:Npn \__diaa_getunicode_auxii:n #1 { \int_to_Hex:n { `#1 } }
\ExplSyntaxOff
使用最新的expl3
。我不得不使用text
模块中的(当前)内部函数:可以“写出”或使用简化版本。
一个问题\beta
是不是 3B2
:后者是“文本测试版”,而\beta
在数学模式下扩展为的是一个数学斜体测试版1D6FD
。