有没有办法重新定义~
expl3 语法中的波浪号 ( ) 活动字符?在 expl2 中,我只需执行类似 的操作\let~\relax
,但由于 expl3 中的 解释~
,这是不可能的。
答案1
为活动角色分配含义是通过
\char_set_active_eq:NN
或者
\char_set_active_eq:nN
您不能使用第一个,它需要精确的字符作为其第一个参数。但第二个需要字符的 ASCII/Unicode 代码,并且适用 TeX 的常规约定,因此您可以在字母常量的上下文中使用反斜杠转义字符。
\documentclass{article}
\ExplSyntaxOn
\char_set_active_eq:nN { `\~ } \scan_stop:
\ExplSyntaxOff
\begin{document}
Some text~some more text
\end{document}
一般来说,你可以定义自己的命令并使用它来代替\scan_stop:
(又名 \relax
)。
答案2
您希望\char_set_active_eq:NN
而且需要~
在“处理”它时,将其变成空间以外的东西。
\documentclass{article}
\ExplSyntaxOn
\char_set_catcode_other:N \~
\cs_new_protected:Npn \noldorin_demo: { !!! }
\char_set_active_eq:NN ~ \noldorin_demo:
\ExplSyntaxOff
\begin{document}
Some text~some more text
\end{document}