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 :
?
2 Answers
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
.
-
9
-
11@LeoLiu Alternatively,
\mathbin{:}
could be used. Which one is a matter of personal taste. Most important is consistency across the document.– egregDec 10, 2011 at 11:32 -
29How does one distinguish between "punctuation" and "relation"? The notation
f\colon A\to B
does denote a relation betweenf
andA\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" betweenx
andx\notin x
. Apr 11, 2012 at 10:29 -
4@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.– egregApr 11, 2012 at 12:30
-
11Just 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.– murrayJun 27, 2012 at 21:00
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.
f\colon a \to b
(rather thanf : a \to b
) and a general discussion of relation symbols.