Argumente in Klammern werden durch einen Befehl ersetzt

Argumente in Klammern werden durch einen Befehl ersetzt

Ich habe \somecmddas, was auf eine bestimmte Anzahl von Argumenten in Klammern einwirkt: \somecmd{{arg1},{arg2}}.

Ich möchte einen \myargsBefehl erstellen, der erweitert wird {args1},{args2}und verwendet \somecmd{\myargs}.

Antwort1

Vielleicht suchen Sie

\newcommand\somecmd[2]{...}
\newcommand\myargs{{arg1}{arg2}}
\expandafter\somecmd\myargs

Dadurch wird das Makro zunächst einmal erweitert \myargs , wobei die geschweiften Argumente im Eingabestrom verbleiben, und dann erweitert, \somecmddamit die Argumente verwendet werden können. Stellen Sie sicher, dass die Argumentliste keine Kommas enthält, sondern nur die geschweiften Gruppen.

Antwort2

Möglicherweise suchen Sie nach \@for.

\documentclass{article}
\makeatletter
\newcommand{\DoWhatever}[1]{I do something with #1\par}
\newcommand{\MultiArg}[1]{\@for\next:=#1\do{\DoWhatever{\next}}}
\makeatother
\begin{document}
\MultiArg{{arg1},{arg2}}
\end{document}

Bildbeschreibung hier eingeben

Das funktioniert auch:

\documentclass{article}
\makeatletter
\newcommand{\DoWhatever}[1]{I do something with #1\par}
\newcommand{\MultiArg}[1]{\@for\next:=#1\do{\DoWhatever{\next}}}
\makeatother
\begin{document}
\newcommand\myargs{{arg1},{arg2}}
\MultiArg{\myargs}
\end{document}

verwandte Informationen