LaTeX3 Regex 使用控制序列

LaTeX3 Regex 使用控制序列

我想使用 l3regex 在任意变量上替换一些单词/字符。

不要这样做

\tl_set:Nn \l_myname_tl {Hello}
\regex_replace_all:nnN {(\w+)} {\1 World!} \l_myname_tl

哪个有效,我想做类似的事情

\def\myname{tmpname}
\cs_new_protected:cpn { l_\myname _tl } {Hello}
\regex_replace_all:nnN {(\w+)} {\1 World!} \use:c {l_\myname _tl}

我收到一条错误消息,说我多了一个括号 }。我对 LaTeX3 不是很熟悉,但如果我理解得好,问题就出在它\use:c {l_myname _tl}没有像预期的那样被视为单个标记(没有括号):nnN

该怎么做呢?

提前致谢。

答案1

您可以定义一个变体:

\cs_generate_variant:Nn \regex_replace_all:nnN { nnc }

所以你可以打电话

\tl_set:cn { l_ \myname _tl } {Hello}
\regex_replace_all:nnc {(\w+)} {\1 World!} {l_ \myname _tl}

相关内容