括号内的参数被命令替换

括号内的参数被命令替换

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

相关内容