Math Sets (ConTeXt port of braket.sty)
Hi, I find myself writing a lot of probability expressions where I want the delimiters to scale automatically, and | (conditional sign) to scale automatically, and the spacing around | to be correct. In LaTeX, I used to use braket package to do this. Since moving to ConTeXt, I was doing this by hand, but wring a lot of \EXP\left\{ ... \,\middle\, ...\right\} and \Pr( ... \mid ...) soon became a pain to read and write. So (thanks to Taco's first hand knowledge of why TeX is Turing complete), I have written the following macros: \unprotect \definesystemvariable {ms} % Math Set \def\mathsetmiddle{\,\middle\mathsetparameter\c!middle\,} \let\currentmathset\empty \def\mathsetparameter#1% {\executeifdefined{\??ms\currentmathset#1}{\executeifdefined{\??ms#1}\empty}} \def\definemathset {\dodoubleargument\dodefinemathset} \def\dodefinemathset[#1][#2]% {\getparameters[\??ms#1] [\c!text=,\c!left={\{},\c!right={\}},\c!middle=\vert,#2] \setvalue{#1}{\dododefinemathset[#1]}} \def\dododefinemathset[#1]#2#% {\begingroup \def\currentmathset{#1} \mathcode`\|32768 \let|\mathsetmiddle \def\mathsetarguments{#2} \dodododefinemathset} \def\dodododefinemathset#1% {\doifsomething{\mathsetparameter\c!text} {\mathop{\mathsetparameter\c!text\mathsetarguments}} \left\mathsetparameter\c!left#1\right\mathsetparameter\c!right \endgroup} \protect which allows me to do \definemathset[EXP][text={\mfunction{E}}] \definemathset[PR][text={\mfunction{Pr}},left=(,right=)] \starttext Correct spacing around the vertical bar. \startformula \EXP{f(X) | Y} = \sum_{x} f(x) \PR{x|Y} \stopformula Correct scaling of delimiters (as correct as left and right give you) \startformula \EXP{\sum_z f(X,z) | Y} = \sum_{x,z} f(x,z) \PR{x,z|Y} \stopformula Correct handling of sub|/|super scripts \startformula \EXP_X{f(X) | Y} = \sum_{x} f(x) \PR{x|Y} \stopformula Is there anyone else interested in this kind of stuff? I have not ported all the features of braket.sty, but only those that I needed. Other should not be too difficult to port. Hans and Taco: Does it make sense to add these to the core? If so, I can polish the macros a bit (add a \setupmathsets command). Aditya
participants (1)
-
Aditya Mahajan