
Ich habe \somecmd
das, was auf eine bestimmte Anzahl von Argumenten in Klammern einwirkt: \somecmd{{arg1},{arg2}}
.
Ich möchte einen \myargs
Befehl 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, \somecmd
damit 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}
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}