
Tengo \somecmd
que actúa sobre una serie de argumentos entre llaves: \somecmd{{arg1},{arg2}}
.
Me gustaría crear un \myargs
comando que se expanda {args1},{args2}
y use \somecmd{\myargs}
.
Respuesta1
Quizás lo que buscas es
\newcommand\somecmd[2]{...}
\newcommand\myargs{{arg1}{arg2}}
\expandafter\somecmd\myargs
que primero expandirá la macro \myargs
una vez, dejando los argumentos entre llaves en el flujo de entrada, y luego se expandirá \somecmd
para que pueda usar los argumentos. Asegúrese de no tener comas en la lista de argumentos, solo los grupos entre llaves.
Respuesta2
Quizás estés buscando \@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}
Esto también funciona:
\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}