Я хочу написать небольшой фрагмент кода для TeX, который создаст функцию, принимающую входные данные A и B и выводящую
$
\mathbb{E}\left[A \middle| B\right].
$
По сути, мне нужна "динамическая" \newcommand
функция. Возможно ли это? Если да, то как это сделать?
решение1
Вы можете очень просто определить такую команду с помощью \DeclarePairedDelimiterXPP
from mathtools
. У этой команды есть версия со звездочкой, которая эквивалентна паре неявных \left…\right
и \middle
, и версия без звездочки, которая принимает необязательный аргумент для точной настройки размера: \big, \Big,\bigg
и \Bigg
.
\documentclass{article}
\usepackage[utf8]{inputenc}%
\usepackage{mathtools, nccmath}
\providecommand\given{}
\DeclarePairedDelimiterXPP\EV[1]{E}[]{}{
\renewcommand\given{\nonscript\;\delimsize\vert\nonscript\;:}
#1}
\begin{document}
\[ \EV*{Z\given\frac{X}{Y}}\quad \EV[\Bigg]{Z\given\frac{X}{Y}} \quad \EV[\Big]{Z\given\mfrac{X}{Y}}\]%
\end{document}
решение2
решение3
Вот решение, использующее рекомендации самого Кнута (см. стр. 174 TeXbook) относительно горизонтального интервала, который следует использовать в выражениях, содержащих вертикальные черты для обозначения событий обусловливания.
\documentclass{article}
\usepackage{amsfonts} % for '\mathbb' macro
\usepackage{amsmath} % for '\DeclareMathOperator' macro
\usepackage{mleftright} % for '\mleft' and '\mright' macros
\DeclareMathOperator{\E}{\mathbb{E}} % uncond'l expectation operator
\newcommand\coex[2]{\E\mleft[\,#1\;\middle|\;#2\,\mright]}
\begin{document}
$\coex{Y}{X}$, $\coex{W}{\dfrac{U}{V}}$
\end{document}