如果我定义以下两个命令:
\newcommand{\TestA}[1][]{a^{#1} aaa}
\newcommand{\TestB}[1][]{#1}
然后调用它
$\TestA[\TestB[111]]$
我收到错误:
"Argument of \\TestB has an extra }."
但是 $\TestB[111]$ 和 $\TestA[111]$ 可以工作...
这是一个错误还是我做错了什么?
答案1
您将 latex 与可选参数的方括号混淆了。当 latex 看到
\TestA[\TestB[111]]
它认为的可选参数\TestA
是\TestB[111
。现在它尝试评估这个表达式,但却感到困惑,因为\TestB
不符合语法。
要解决这个问题,你需要将可选参数括在括号中\TestA
:
\TestA[{\TestB[111]}]