How to make expanding middle delimitors like in the braket package

The braket package has convenient commands like \Braket and \Set, where | are automatically expanded vertically. This allows to easily typeset expressions like

\documentclass{minimal}
\usepackage{braket}
\begin{document}
$$\Braket{\psi |i\hbar\frac{\partial}{\partial t}|\phi}$$
\end{document}


I'd like to do the same thing with other delimiters, for example to typeset conditional probabilities like $P(A=\frac12|B)$.

Edit to clarify the question I'm interested to cases where I don't know which size of the |-sign is the biggest. An example could be $P(A=\frac12|B=2^{2^2})$.

• Remember to never use  in LaTeX documents. – egreg Nov 27 '11 at 21:01
• Why ? Because it is more difficult to balance than '[]' ? The latter involve 6-times more keystrokes on my (French) keyboard, so I'm wondering whether the reason is really compelling ? – Frédéric Grosshans Nov 28 '11 at 10:25
• – egreg Nov 28 '11 at 10:40

2 Answers

Use \middle|

$P\left( A = \frac{1}{2} \middle| B \right)$

• One should note that \middle| doesn't add space around the bar and so \;\middle|\; should be used. Even better, \nonscript\;\middle|\nonscript\; if this is used in a macro for something that can go into subscripts or superscripts. – egreg Nov 27 '11 at 20:21
• @egreg: I usually use \,\middle\, in macros, but \; is better. – Aditya Nov 27 '11 at 20:38
• isn't \middle e-tex specific ? If yes wouldn't that h-complicate the exchanges of documents with colleagues ? – Frédéric Grosshans Nov 28 '11 at 10:35
• @FrédéricGrosshans Only very old distributions don't use by default an e-TeX enabled engine for LaTeX – egreg Nov 28 '11 at 10:41
• OK. Then I'll try this and come back when I encounter an overconservative colleague :-) Thanks. – Frédéric Grosshans Nov 28 '11 at 10:50

One could also use \vert as an additional nested bracket like in:

$P\left( \left. A = \frac{1}{2} \,\right\vert B \right)$

• This would only work as expected if B in your example isn't awkwardly big. Otherwise \right\vert won't scale to the appropriate length. In such a case \right\vert and \right) won't have the same height. – Werner Aug 17 '16 at 0:21