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 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
-
12@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 -
35How 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 -
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.– egregApr 11, 2012 at 12:30
-
12Just 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.
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.
f\colon a \to b
(rather thanf : a \to b
) and a general discussion of relation symbols.