我正在尝试使用 Latex 和 Sage 的组合来为我的学生创建任务。因此,我必须替换两种不同类型的表达式
2*x
将成为2 x
和
x*3
将成为x\cdot 3
\documentclass[utf8,fleqn]{scrartcl}
\usepackage{l3regex}
\begin{document}
\ExplSyntaxOn
\tl_set:Nn \l_my_tl { 2*x-x*4 }
\regex_replace_all:nnN { [a-z]\*\d+ } { \1 \c{cdot} \2 } \l_my_tl
$\l_my_tl$
\end{document}
这让2*x-\cdot
我2*x-x\cdot 4
我的问题是,我如何引用找到的单独匹配项l3regex
?
答案1
您需要捕获匹配项:这是任何正则表达式的标准,而不仅仅是引擎的expl3
标准
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\tl_set:Nn \l_my_tl { 2*x-x*4 }
\regex_replace_all:nnN { ([a-z])\*(\d+) } { \1 \c{cdot} \2 } \l_my_tl
$\l_my_tl$
\end{document}
答案2
您可以将“字母 * ”转换为“字母\cdot
”,然后去掉剩余的星号。
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\tl_set:Nn \l_tmpa_tl { 2*x-x*4 }
\regex_replace_all:nnN { ([a-z])\*(\d+) } { \1 \c{cdot} \2 } \l_tmpa_tl
\regex_replace_all:nnN { \* } { } \l_tmpa_tl
$\l_tmpa_tl$
\end{document}