获取与 \chardef 控制序列关联的数字

获取与 \chardef 控制序列关联的数字

我希望通过提供控制序列来访问与框关联的数字。此控制序列通过\newbox使用来定义\chardef,因此“控制序列框”扩展为类似\char"1A。我想获取该十六进制1A。以下是我到目前为止所做的。

\documentclass{article}

\begin{document}
\newbox\mybox

\edef\temp{%
  \def\noexpand\stripchar\detokenize{\char"}##1\noexpand\endstripchar{##1}}
\temp

\def\printboxnumber#1{%
  \expandafter\stripchar\meaning#1\endstripchar}

\printboxnumber\mybox
\end{document}

\detokenize为了处理\catcode由于使用 而导致的变化\meaning\printboxnumber不幸的是,我得到了

! Use of \stripchar doesn't match its definition.
<inserted text> \char"
                      1A
l.13 \printboxnumber\mybox

怎么了?

答案1

\detokenize{\char"}结果是\char "(控制序列名称后有一个空格);你需要\string

\begingroup\edef\temp{\endgroup
  \def\noexpand\stripchar\string\char\string"##1\noexpand\endstripchar{##1}}
\temp

第二个\string巴别塔被使用。-\begingroup\endgroup为了避免遗漏\temp已定义。

只需通过 即可获得十进制表示形式\number\mybox

相关内容