我注意到,在许多文档中,你会遇到$f: X \to Y$
而不是$f \colon X \to Y$
。另一个例子是量化表达式:$\forall x: P (x)$
与 相比$\forall x \colon P(x)$
。我发现\colon
视觉上更令人愉悦,但是有时我觉得我似乎是唯一一个,因为绝大多数文档似乎都使用了:
。是否有经验法则来决定在哪里应该使用\colon
或:
?
答案1
:
和都\colon
排版为冒号,但是\colon
是标点符号,而:
被视为与间距相关的符号。
主要用于:
集合描述
\{\, x : x \notin x \,\}
(有人使用\mid
此方法,但简单的使用|
是错误的;Knuth 建议在\{
前后留出较窄的空间,使用时要保持一致,或者不要使用)。\}
反过来,\colon
应该用于映射
f\colon A \to B
但不幸的是,许多作家没有做出这种区分,而使用了:
,导致间距错误。
要遵循的规则是一样的:\colon
当它是“标点冒号”时使用,:
当它表示其左侧和右侧之间的关系时使用。在“for all x:”之类的情况下,我会将冒号视为标点,因此\forall x\colon
请注意,该amsmath
包改变了的定义,\colon
因此它与标点符号不完全相同:
\renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript
\mkern-\thinmuskip{:}\mskip6muplus1mu\relax}
这会在冒号前添加一些空格,这似乎比简单的更正确\mathpunct
。
答案2
如果您尝试在类型理论中排版变量具有类型冒号,则需要{:}
或\mathord{:}
(它们显示相同)。例如,您将获得一个漂亮的 STLC 身份函数$\lambda x {:} A . x$
。
看这一页进行更普遍的讨论。
答案3
OpTeX:
在加载其 Unicode 数学时设置了不同的值。原因是 MathClass-15.txt 将 定义为标点符号。我们保留了普通 TeX 的关系:
设置,并保留了 Unicode 建议:。:
:
\mathpunct
后果:您可以输入,结果正常。当然,空格比$f: A → B$
LaTeX 的空格略小,但恕我直言,LaTeX 定义的空格比需要的要大(因为它在 Plain TeX 默认的关系和所需标点符号之间做出了糟糕的妥协)。OpTeX 没有任何妥协,是标点符号,您可以自然地输入它,而无需任何控制序列。\colon
amsmath
\colon
:
:
另一方面,在某些情况下$x \mathbin: y$
您需要使用 TeX 原始控制序列\mathbin
或\mathrel
获得良好的空间。
做出这一决定的原因是:在数学排版中, :
as的使用比在所有其他情况下$f: A → B$
的使用更为常见。: