引用 newcommand 中的参数在数学模式下不起作用

引用 newcommand 中的参数在数学模式下不起作用

我想创建一个给定参数的命令$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在数学中是必须的。如果您滚动过去,它会添加$以从第一个错误中恢复,但随后#在数学模式中看到 并生成第二个错误。

相关内容