Аргументы в фигурных скобках заменены командой

Аргументы в фигурных скобках заменены командой

У меня есть \somecmd, который действует на некоторое количество аргументов в фигурных скобках: \somecmd{{arg1},{arg2}}.

Я хотел бы создать \myargsкоманду, которая расширяется до {args1},{args2}и использует \somecmd{\myargs}.

решение1

Возможно, то, что вы ищете, это

\newcommand\somecmd[2]{...}
\newcommand\myargs{{arg1}{arg2}}
\expandafter\somecmd\myargs

который сначала расширит макрос \myargs один раз, оставив аргументы в фигурных скобках во входном потоке, а затем расширит \somecmdтак, чтобы он мог использовать аргументы. Убедитесь, что в списке аргументов нет запятых, только группы в фигурных скобках.

решение2

Возможно, вы ищете \@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}

введите описание изображения здесь

Это также работает:

\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}

Связанный контент