在 expl3 中重新定义活动字符 `~`

在 expl3 中重新定义活动字符 `~`

有没有办法重新定义~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}

相关内容