Divida um único argumento em várias partes

Divida um único argumento em várias partes

Gostaria de definir o comando A\!\!_B\!Cem modo matemático como macros e estou usando o seguinte:

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

Infelizmente recebo um erro informando que está {}faltando. Qualquer dica é apreciada.

Existe alguma possibilidade de obter uma sintaxe semelhante ao Mathematica com apenas um argumento, dividindo-o por vírgula?

Responder1

Por exemplo:

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

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

Mas não entendo por que você precisa daquele amontoado feio de letras.

Responder2

Com o seu comando original, você deve se lembrar de fornecer três argumentos.

Com package xparsevocê pode dividir um argumento em um determinado símbolo (aqui a vírgula) e, portanto, manter a sintaxe que você conhece do Mathematica.

A saída parece um pouco estranha, mas isso é um assunto diferente.

\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}

informação relacionada