我已经\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}