我希望实现使用该命令的结果\scell{111}
,并使结果输出$1\times 1\times 1$
看起来像 1x1x1,但 x 是 \times 符号。
我编写了基本命令\newcommand{\scell}[3]{${#1}\times {#2}\times {#3}$}
,显然必须将其输入为\scell{1}{1}{1}
。始终有 3 个数字个位参数,有没有办法通过简单地输入来使命令起作用\scell{111}
?
答案1
将参数传递给三参数宏:
\documentclass{article}
\newcommand{\scell}[1]{\doscell#1}
\newcommand{\doscell}[3]{$#1\times#2\times#3$}
\begin{document}
\scell{111}
\scell{1{29}3}
\end{document}
这是一个概括:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\scell}{m}
{
\seq_set_split:Nnn \l_tmpa_seq { } { #1 }
$\seq_use:Nn \l_tmpa_seq { \times }$
}
\ExplSyntaxOff
\begin{document}
\scell{111}
\scell{1{29}3}
\scell{3}
\scell{12}
\scell{12345}
\end{document}
答案2
根据您现有的定义,您可以使用
\scell 1 1 1
甚至
\scell111
一般来说,{}
可以省略单个标记参数。