Dividir un solo argumento en varias partes

Dividir un solo argumento en varias partes

Me gustaría definir el comando A\!\!_B\!Cen modo matemático como macros y estoy usando lo siguiente:

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

Desafortunadamente me sale un error que faltan {}. Se agradece cualquier pista.

¿Existe alguna posibilidad de obtener una sintaxis similar a Mathematica con un solo argumento, dividiéndolo por coma?

Respuesta1

Por ejemplo:

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

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

Pero no entiendo por qué necesitas ese feo montón de letras.

Respuesta2

Con tu comando original debes recordar darle tres argumentos.

Con el paquete xparsepuede dividir un argumento en un símbolo determinado (aquí la coma) y, por lo tanto, seguir con la sintaxis que conoce de Mathematica.

Sin embargo, el resultado parece un poco extraño, pero este es un asunto 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}

información relacionada