我想创建一个给定参数的命令$g,n,d,X$
,生成输出$\overline{M}_{g,n,d}(X)$
。如果没有$g$
给出,我希望默认为0
。
我认为正确的写法是:
\newcommand{\modspace}[4][0]{\overline{M}_{#1,#2,#3}(#4)}
然而,由于某种原因,编译器对我很生气,我收到以下错误消息:
您不能在数学模式下使用“宏参数字符#”。
我应该怎么办?
答案1
显示的代码不会产生任何错误,可以看出
\documentclass{article}
\begin{document}
\newcommand{\modspace}[4][0]{\overline{M}_{#1,#2,#3}(#4)}
$\modspace{a}{b}{c}$
\end{document}
我猜你有一个空白行:
\documentclass{article}
\begin{document}
\newcommand{\modspace}[4][0]
{\overline{M}_{#1,#2,#3}(#4)}
\end{document}
生产
! Missing $ inserted.
<inserted text>
$
l.7 {\overline
{M}_{#1,#2,#3}(#4)}
?
! You can't use `macro parameter character #' in math mode.
l.7 {\overline{M}_{#
1,#2,#3}(#4)}
?
由于空白行被视为\par
并且是 的定义,\modspace
因此它会进行评估{\overline
并给出错误,这\overline
在数学中是必须的。如果您滚动过去,它会添加$
以从第一个错误中恢复,但随后#
在数学模式中看到 并生成第二个错误。