將單一參數拆分為多個部分

將單一參數拆分為多個部分

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

相關內容