包含命令的字符串的正则表达式

包含命令的字符串的正则表达式

我已成功创建了一个命令,该命令接受一个参数并使用 l3regex 对其进行替换。但是,如果参数本身包含命令,则命令名称会像字符串一样打印在输出中。

\documentclass{article}
\usepackage{l3regex}
\ExplSyntaxOn
\newcommand\mycommand[1]{
  \str_set:Nn \l_temp_str {#1}
  \regex_replace_all:nnN {[abc]} {\c{textbf}\cB\{\0\cE\}} \l_temp_str
  {\l_temp_str}
}
\ExplSyntaxOff

\begin{document}
\mycommand{wax\textit{b}ycz}
\end{document}

我应该如何修正代码以便参数字符串可以包含任何命令?

答案1

尝试使用标记列表而不是字符串:

\documentclass{article}
\usepackage{xparse,l3regex}

\ExplSyntaxOn
\NewDocumentCommand{\mycommand}{m}
 {
  \tl_set:Nn \l_tmpa_tl { #1 }
  %\str_set:Nn \l_temp_str {#1}
  \regex_replace_all:nnN {[abc]} {\c{textbf}\cB\{\0\cE\}} \l_tmpa_tl
  \tl_use:N \l_tmpa_tl
 }
\ExplSyntaxOff

\begin{document}
\mycommand{wax\textit{b}ycz}
\end{document}

这应该将命令视为命令。

在此处输入图片描述

相关内容