139

I noticed that in many documents you encounter $f: X \to Y$ instead of $f \colon X \to Y$. Another example are quantified expressions: $\forall x: P (x)$ versus $\forall x \colon P(x)$. I find the \colon visually more pleasing, however I sometimes think I seem to be the only one, given the overwhelming amount of documents that seem to use :. Is there a rule of thumb to decide where you should use either \colon or :?

3

3 Answers 3

159

Both : and \colon typeset a colon, but \colon is a punctuation symbol, while : is considered as a relation symbol as regards to spacing.

The main use of : is in set descriptions

\{\, x : x \notin x \,\}

(somebody uses \mid for this, where a simple | would be wrong; thin spaces after \{ and before \} are recommended by Knuth, be consistent in using them or not).

Conversely, \colon should be used for mappings

f\colon A \to B

but unfortunately many writers don't make this distinction and use :, getting a wrong spacing.

The rule to follow is just the same: use \colon when it's a "punctuation colon", use : when it represents a relation between what's at its left and at its right. In something like "for all x:" I would consider the colon as punctuation, so \forall x\colon

Note that the amsmath package changes the definition of \colon so that it's not exactly the same as a punctuation symbol:

\renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript
  \mkern-\thinmuskip{:}\mskip6muplus1mu\relax}

This adds a bit of space before the colon, which seems more right than with a simple \mathpunct.

12
  • 9
    And use : for ratios. e.g. $x:y:z = 3:4:5$.
    – Leo Liu
    Commented Dec 10, 2011 at 11:25
  • 12
    @LeoLiu Alternatively, \mathbin{:} could be used. Which one is a matter of personal taste. Most important is consistency across the document.
    – egreg
    Commented Dec 10, 2011 at 11:32
  • 37
    How does one distinguish between "punctuation" and "relation"? The notation f\colon A\to B does denote a relation between f and A\to B, namely the relation "has type". And I don't see in what sense the colon in \{\, x : x\notin x \,\} denotes a "relation" between x and x\notin x. Commented Apr 11, 2012 at 10:29
  • 5
    @MikeShulman It's a matter of conventions; usually the colon for maps is considered as punctuation, the one in set descriptions as a relation symbol. Be coherent in your document.
    – egreg
    Commented Apr 11, 2012 at 12:30
  • 12
    Just for clarity, the usual recommendation to use \, after \{ and before the matching \} is only in case the set involves a set descriptor (with the colon). By contrast, use \{a, b, c\} without the thin spaces in case of an explicit enumeration of elements.
    – murray
    Commented Jun 27, 2012 at 21:00
17

If you're trying to typeset a variable-has-type colon in type theory, you want {:} or \mathord{:} (they display the same). For example, you'll get a nice looking STLC identity function with $\lambda x {:} A . x$.

See this page for a more general discussion.

0
1

OpTeX sets the : differently when its Unicode math is loaded. The reason is that MathClass-15.txt defines the : as punctuation mark. We left the plain TeX setting of : as relation and keep Unicode recommendation: : is \mathpunct.

Consequences: you can type $f: A → B$ and the result is OK. Of course, there is slightly smaller spaces than LaTeX's \colon from amsmath does, but IMHO LaTeX defines \colon with bigger spaces than needed (because it is a bad compromise between Plain TeX default : as relation and desired punctuation). OpTeX is without compromises, the : is punctuation and you can type it naturally without any control sequences.

On the other hand, in cases like $x \mathbin: y$ you need to use a TeX primitive control sequence \mathbin or \mathrel to get good spaces.

The reason of this decision is: the usage of : as $f: A → B$ is much more common in math typesetting than usage of : in all other situations.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .