当我尝试编译以下文档时:
\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}
那么它就不会抱怨了。