将单个参数拆分为多个部分

将单个参数拆分为多个部分

我想将A\!\!_B\!C数学模式中的命令定义为宏,并且我使用以下命令:

\newcommand{\cmp}[3]{#1\!\!_#2\!#3}

不幸的是,我收到一个错误,提示缺少内容{}。任何提示都非常感谢。

是否有可能只用一个参数获得类似 Mathematica 的语法,用逗号将其拆分?

答案1

例如:

\def\cmp#1{\cmpA#1,}
\def\cmpA#1,#2,#3,{{#1}\!\!_{#2}\!{#3}}

$a = \cmp{A,B,C}$

但我不明白,为什么需要这么丑陋的字母。

答案2

使用原始命令时,您必须记住为其提供三个参数。

使用包,xparse您可以在给定符号(这里是逗号)处拆分一个参数,从而坚持使用您从 Mathematica 了解的语法。

虽然输出看起来有点奇怪,但这是另一回事。

\documentclass{article}
\usepackage{xparse}
\newcommand{\cmp}[3]{#1\!\!_{#2}\!#3}
\NewDocumentCommand{\cmpA}{  >{\SplitArgument{2}{,}} m}
{\cmp#1}%<- feeding the three arguments to the original command

\begin{document}
\[ \cmp{A}{B}{C} \]
\[ \cmpA{A,B,C} \]
\end{document}

相关内容