我想将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}