
Eu tenho \somecmd
que atua em alguns argumentos entre colchetes: \somecmd{{arg1},{arg2}}
.
Gostaria de criar um \myargs
comando que se expanda {args1},{args2}
e use \somecmd{\myargs}
.
Responder1
Talvez o que você esteja procurando seja
\newcommand\somecmd[2]{...}
\newcommand\myargs{{arg1}{arg2}}
\expandafter\somecmd\myargs
que primeiro expandirá a macro \myargs
uma vez, deixando os argumentos entre chaves no fluxo de entrada e, em seguida, expandirá \somecmd
para poder usar os argumentos. Certifique-se de não ter vírgulas na lista de argumentos, apenas os grupos entre colchetes.
Responder2
Você pode estar procurando \@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}
Isso também 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}