Argumentos entre colchetes substituídos por um comando

Argumentos entre colchetes substituídos por um comando

Eu tenho \somecmdque atua em alguns argumentos entre colchetes: \somecmd{{arg1},{arg2}}.

Gostaria de criar um \myargscomando 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á \somecmdpara 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}

insira a descrição da imagem aqui

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}

informação relacionada