
У меня есть \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}