我试图为期望定义一个新命令,该命令分别将垂直划线(在条件期望的情况下)和括号缩放到参数。此外,我希望有一个参数来指定我正在谈论的期望,即 $\mathbb{E}_{index}$,其中 index 是任意值。
我按照这篇文章中的说明进行操作[垂直线表示绝对值和条件期望。不幸的是,索引现在是期望的参数,反之亦然。当简单地将 #1 与 #2 交换时,我得到了一个缺失数字错误。
我正在使用的代码:
\newcommand{\expcti}[2]{\operatorname{\mathbb{E}}_{#2}\expectiarg#1}
\DeclarePairedDelimiterX{\expectiarg}[1]{[}{]}{%
\ifnum\currentgrouptype=16 \else\begingroup\fi
\activatebar#1
\ifnum\currentgrouptype=16 \else\endgroup\fi
}
\newcommand{\innermid}{\nonscript\;\delimsize\vert\nonscript\;}
\newcommand{\activatebar}{%
\begingroup\lccode`\~=`\|
\lowercase{\endgroup\let~}\innermid
\mathcode`|=\string"8000
}
我很高兴能得到任何帮助。非常感谢!
编辑:
我想要实现的是一个命令,它使用括号根据条件期望自动缩放垂直条,即左边是我简单使用\left[
和右边时得到的结果,\right]
右边是我真正想要的:
我想通过输入来实现 rhs 上的公式$$\expcti*{\frac{1}{2} | Y}{F}$$
答案1
这是一个解决方案,使用两个参数:索引和随机变量,用 分隔|
。如果您不需要索引,请使用空参数。如果没有条件部分,即如果您输入 no |
,则不会打印垂直线。如果您需要在公式中使用不应解释为分隔符的线,请使用{|}
:
\documentclass{article}
\usepackage{mathtools, amssymb, nccmath}
\usepackage{xparse}
\DeclarePairedDelimiterXPP\Expect[2]{\mathbb{E}_{#1}}[]{}{\setargs{#2}}%
\NewDocumentCommand{\setargs}{>{\SplitArgument{1}{|}}m}
{\setargsaux#1}
\NewDocumentCommand{\setargsaux}{mm}
{\IfNoValueTF{#2}{#1}{\nonscript\,#1\nonscript\;\delimsize\vert\nonscript\:\allowbreak #2\nonscript\,}}
\DeclarePairedDelimiterXPP\expectaux[3]{\mathbb{E}_{#1}}[]{}{#2\nonscript\:\delimsize\vert\nonscript\:#3}%
\begin{document}
\[ \Expect*{i}{\mfrac{1}{2}X | Y} \quad\Expect[\bigg]{k}{\mfrac{1}{2}X} \]%
\end{document}