\newcommand 和数学公式之间的空格

\newcommand 和数学公式之间的空格

如果我定义一个新命令,如:

\newcommand{\expect}[2]{\mathbb{E}_{#2}\left[#1\right]}

产生

\expect{x}{y^2}

在此处输入图片描述

我怎样才能摆脱期望和[]之间的小空间。

答案1

多余的空间有两个原因:

  1. 主要的是来自\left[
  2. 另一个空格来自于\scriptspace由于下标到\mathbb{E}

在分析解决方案之前,请考虑以下输出

\documentclass{article}
\begin{document}
\[
\left[(\hat{X}_0)^2\right] \quad [(\hat{X}_0)^2]
\]
\end{document}

并自行判断是否真的想要不加区别地\left申请\right

在此处输入图片描述

现在有一个可能的解决方案\DeclarePairedDelimiter。首先我们用下标排版运算符“E”,然后将其余部分委托给\expectvalue

由于可能缺少下标,我将相关参数设为可选。

\documentclass{article}
\usepackage{mathtools}
\usepackage{amssymb}

\NewDocumentCommand{\expec}{sO{}mo}{%
  \operatorname{\mathbb{E}}%
  \IfValueT{#4}{_{#4}\kern-\scriptspace}%
  \IfBooleanTF{#1}{\expectvalue*{#3}}{\expectvalue[#2]{#3}}%
}
\DeclarePairedDelimiter{\expectvalue}{[}{]}

\begin{document}
\[
\expec{x}[y^2] \quad
\expec{(X_0)^2}[y^2] \quad
\expec[\big]{(X_0)^2}[y^2] \quad
\expec[\big]{(\hat{X}_0)^2}[y^2] \quad
\expec*{(\hat{X}_0)^2}[y^2] % wrong!
\]

\[
\int_{[0,1]}\bigl|\expec{x_{1}^{K_y} -x_1} - \expec{x_2^{K_y}-x_2}\bigr|
\]

\end{document}

在此处输入图片描述

请参阅的手册mathtools以了解的功能\DeclarePairedDelimiter

相关内容