我正在尝试定义以下新命令:
\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
给出的命令定义\kernel
是ok
,但是调用是错误的。[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}