l3regex 用 cdot 替换乘法

l3regex 用 cdot 替换乘法

我正在尝试使用 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-\cdot2*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}

相关内容