Einzelnes Argument in mehrere Teile aufteilen

Einzelnes Argument in mehrere Teile aufteilen

Ich möchte den Befehl A\!\!_B\!Cim Mathematikmodus als Makro definieren und verwende Folgendes:

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

Leider erhalte ich die Fehlermeldung, dass etwas {}fehlt. Für jeden Hinweis bin ich dankbar.

Gibt es eine Möglichkeit, eine Mathematica-ähnliche Syntax mit nur einem Argument zu erhalten, indem man es durch ein Komma trennt?

Antwort1

Zum Beispiel:

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

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

Aber ich verstehe nicht, wozu du diesen hässlichen Buchstabenhaufen brauchst.

Antwort2

Denken Sie daran, Ihrem ursprünglichen Befehl drei Argumente anzugeben.

Mit package xparsekönnen Sie ein Argument an einem bestimmten Symbol (hier das Komma) teilen und so bei der Syntax bleiben, die Sie von Mathematica kennen.

Die Ausgabe sieht zwar etwas seltsam aus, aber das ist eine andere Sache.

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

verwandte Informationen