Argumentos entre llaves reemplazados por un comando

Argumentos entre llaves reemplazados por un comando

Tengo \somecmdque actúa sobre una serie de argumentos entre llaves: \somecmd{{arg1},{arg2}}.

Me gustaría crear un \myargscomando 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á \somecmdpara 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}

ingrese la descripción de la imagen aquí

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}

información relacionada