Разделить один аргумент на несколько частей

Разделить один аргумент на несколько частей

Я хотел бы определить команду 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}

Связанный контент