\newcommand 错误

\newcommand 错误

我正在尝试定义以下新命令:

\newcommand{\kernel}[2]{k\left( #1, #2 \right)}

当通过以下方式实现时

$\kernel{\cdot}{Y}$

得出 k(.,Y) (不确定如何在这里重现 \cdot)

它可以工作,但是我想将第一个参数的默认值设置为 \cdot,并且我尝试通过以下方式进行操作:

\newcommand{\kernel}[2][\cdot]{k\left( #1, #2 \right)}

但是如果我通过以下方式实现它

$\kernel{}{Y}$

它给了k(.,)Y而不是k(.,Y)

这似乎是一个奇怪的错误,我想知道是否有人知道如何修复它,我尝试使用xparse来定义命令,但遇到了同样的错误。提前致谢!

答案1

给出的命令定义\kernelok,但是调用是错误的。[2][\cdot]表示第一个参数是可选的,必须用来调用\kernel[foo]{Y},即[...]表示可选参数。

在下面的代码中,我展示了一个xparse版本,也k用运算符(扩展为 k)替换并删除该\left(...\right)对。

\documentclass{article}

\usepackage{xparse}
\usepackage{mathtools}
\DeclareMathOperator{\kernelop}{k}

\NewDocumentCommand{\kernel}{O{\cdot}m}{\kernelop(#1,#2)}


\begin{document}


$\kernel{Y}$

$\kernel[\oplus]{X}$

\end{document}

在此处输入图片描述

相关内容