创建一个命令来获取其文本/数学输入的 unicode 十六进制数

创建一个命令来获取其文本/数学输入的 unicode 十六进制数

是否可以创建一个接受文本或数学参数的命令,然后打印或输入其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

相关内容