# Line in set definition

I'm trying a simple definition of a set.

My try: $M=\{x\,|\,1\le x\le p-2\}$

Is there a more comfortable way of getting a little space before and after the |? I'm thinking of something like the \mod which does the spacing on its own.

-
The correct command to use is \mid: \{x\mid 1\le x\le p-2\}. Many people add thin spaces (that is, \,) after \{ and before \} when using \mid. –  egreg Sep 5 '13 at 8:48
quite like \mod in fact: \mid :-) –  David Carlisle Sep 5 '13 at 8:48

The vertical bar is usually produced by using \mid, which prints the same symbol as | (or \vert, which is a synonym).

The difference is that \mid is treated as a relation symbol, so it will have thick spaces on its sides:

$M = \{ x \mid 1 \le x \le p-2 \}$


Many people (including Knuth) recommend adding thin spaces in order to detach the braces when using a condition with \mid:

$M = \{\, x \mid 1 \le x \le p-2 \,\}$


but

$X = \{1,2,3,4\}  when listing elements. Take your pick. For a small number of set denotations in the document this should not be a problem; but when there are many of them it's better to add a command, in order to ensure uniformity: \newcommand{\Set}[2]{% \{\, #1 \mid #2 \, \}% }  (the % aren't really necessary in this case) so you can call $M = \Set{x}{1\le x\le p-2}$ and forget about the details. You'll also have the advantage that, if a fussy copy editor says they want colons and not vertical bars, it will be just a matter of changing \mid into : in the definition of \Set. In a paper I was fine tuning for publication in a conference proceedings volume, sets were denoted in three different ways: sometimes the separation was with the bar, sometimes with a colon, sometimes with a semicolon. Being consistent in notation is a necessity, not an option. - add comment An interesting option for you may be to load the braket package and use its commands \set and \Set. The lowercase-spelled version, \set, uses fixed-size (small) curly braces and central vertical bars; the uppercase-spelled version lets the "fence" symbols grow automatically with the material they enclose. You could thus enter an expression such as $M=\set{x|1\le x\le p-2}\$


and let the package do the job of formatting the expression properly.

-