当命令参数包含带括号的数学公式时,会出现编译错误]

当命令参数包含带括号的数学公式时,会出现编译错误]

当我尝试编译以下文档时:

\documentclass{article}

\newenvironment{modelDefinitions}{%
  \begin{description}
}{%
  \end{description}
}
\newcommand{\modelDef}[2]{\item[#1] \hfill \\ #2}

\begin{document}
\begin{modelDefinitions}
  \modelDef{$test[a, b]$}{tmp}
\end{modelDefinitions}
\end{document}

我收到一个编译错误:

! Extra }, or forgotten $.
\sbox ...hbox {\color@setgroup #2\color@endgroup }

l.12   \modelDef{$test[a, b]$}{tmp}

]但是,如果我从 的第一个参数中删除\modelDef,那么它就可以正常工作。问题是什么?我该如何修复它?

答案1

问题是由于立即抓取了[]中的整个部分而引起的\item。 在你的情况下,它将$test[a, b作为参数抓取,之后留下一个未完成的$和一个浮动的$。 因此你需要告诉LaTeX什么属于哪里。

您可以通过添加这样的组来规避此问题

\newcommand{\modelDef}[2]{\item[{#1}] \hfill \\ #2}

那么它就不会抱怨了。

相关内容