我有以下命令用于条件期望
\documentclass{article}
\newcommand{\E}[2]{E\left[ #1 \:|\: #2 \right]}
\begin{document}
\[ \E{\sum_{i=1}^N x_n}{Y} \]
\end{document}
问题是|
字符看起来很丑,因为它与周围的方括号的大小不匹配。\big
在这个特定情况下,我最好把它放在前面。我想知道是否有办法让文本的大小介于和之间\left
,并使用它来增加一定百分比\right
的大小。|
答案1
改编自文档mathtools
,§ 3.6,成对分隔符,第 25-29 页。(感谢@Bernard)。
\documentclass{article}
\usepackage{mathtools}
\makeatletter
\providecommand\given{}
\newcommand\@given[1][]{%
\nonscript\:#1\vert \allowbreak \nonscript\:\mathopen{}}
\DeclarePairedDelimiterXPP\E[1]{E}[]{}{%
\renewcommand\given[1][\delimsize]{\@given[##1]}#1}
\makeatother
\begin{document}
\[ \E*{\sum_{i=1}^N x_n \given Y} \]
\end{document}
答案2
这是另一个解决方案,也基于该mathtools
软件包,但现在利用\DeclarePairedDelimiterX
宏以及该软件包用户指南第 27 页上设置的宏\given
。\Set
下面代码中的主要用户宏称为\expect
。观察它在开始方括号的右侧和结束方括号的左侧插入了一半的细空格。
顺便说一句,我认为这个E
符号(“期望”,对吧?)应该排版为直立罗马字符,因为它代表数学运算符。
\documentclass{article}
\usepackage{mathtools}% for "\DeclarePairedDelimiterX" macro
% Expectation operator
\DeclareMathOperator{\E}{E}
%% Three auxiliary macros: \given, \SetSymbol, and \Set
\providecommand\given{}
\newcommand\SetSymbol[1][]{%
\nonscript\:#1\vert\allowbreak\nonscript\:\mathopen{}}
\DeclarePairedDelimiterX\Set[1]\lbrack\rbrack{%
\renewcommand\given{\SetSymbol[\delimsize]}#1}
%% Main user macro: \expect
\newcommand\expect[2][]{\E\Set[#1]{\mkern1.5mu#2\mkern1.5mu}}
\begin{document}
\[
\expect[\bigg]{\sum_{i=1}^N x_n\given Y}
\qquad
\expect[\Big]{\sum_{i=1}^N x_n}
\]
\end{document}
答案3
您可以简单地使用\middle
e-TeX 中的原语:
\def\E[#1|#2]{E\left[ #1 \>\middle|\> #2 \right]}
$$
\E [\sum_{i=1}^N x_n | Y]
$$
\bye
请注意,使用了更易读的语法。