带参数和限制的运算符

带参数和限制的运算符

我想定义一个\E可以精确使用的命令,如下所示:它应该翻译

\E{f(x)}
\E_x{f(x)}

进入

\mathbb{E}(f(x))
\mathbb{E}_x(f(x))

具体来说,目标是将它们渲染为

截屏

分别。

但请注意,它们_x都没有可选参数的语法,也没有强制参数的语法。

这可能吗?如果可以,我该怎么做?

答案1

是的,这是可能的,通过将其与结合起来\DeclarePairedDelimiter

新答案(2021 年 1 月)

这也允许上限。

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

\NewDocumentCommand{\E}{e{^_}}{%
  \operatorname{\mathbb{E}}%
  \IfValueT{#1}{^{#1}}%
  \IfValueT{#2}{_{#2}}%
  \parens
}
\DeclarePairedDelimiter{\parens}{(}{)}

\begin{document}

$\E{f(x)}$

$\E[\big]{f(x)}$

$\E[\Bigg]{f(x)}$

$\E*{\dfrac{1}{2}}$

$\E_x{f(x)}$

$\E_x[\big]{f(x)}$

$\E_x[\Bigg]{f(x)}$

$\E_x*{\dfrac{1}{2}}$

$\E^x{f(x)}$ $\E_x^y[\big]{f(x)}$

\end{document}

在此处输入图片描述

如果只需要下限,则可以将定义简化为

\NewDocumentCommand{\E}{e{_}}{%
  \operatorname{\mathbb{E}}%
  \IfValueT{#1}{_{#1}}%
  \parens
}
\DeclarePairedDelimiter{\parens}{(}{)}

旧答案

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

\makeatletter
\DeclareRobustCommand{\E}{\operatorname{\mathbb{E}}\@ifnextchar_{\m@Es}{\m@Epd}}
\newcommand{\m@Es}[2]{_{#2}\m@Epd}
\DeclarePairedDelimiter{\m@Epd}{(}{)}
\makeatother

\begin{document}
$\E{f(x)}$

$\E[\big]{f(x)}$

$\E[\Bigg]{f(x)}$

$\E*{\dfrac{1}{2}}$

$\E_x{f(x)}$

$\E_x[\big]{f(x)}$

$\E_x[\Bigg]{f(x)}$

$\E_x*{\dfrac{1}{2}}$
\end{document}

在此处输入图片描述

相关内容