如何正确排版$:=$?

如何正确排版$:=$?

我喜欢使用$:=$“定义为等于”来表示,但这种排版方式从来都不是人们所希望的对称排版方式,因为冒号相对于等号来说总是太低。有什么方法可以让它正确显示吗?

答案1

查看mathtools\coloneq包,它为此目的提供了宏。

\documentclass{standalone}
\usepackage{mathtools}
\begin{document}
\( b := 10 \) \emph{versus} \( b \coloneq 10 \).
\end{document}

产量

上述文件的预览

点击图片或就在这儿以完整尺寸查看(1600×133)

请注意,左侧的冒号稍微太低,但右侧的冒号垂直居中。


编辑:截至 2022 年,\coloneq替换旧版 \coloneqq(仍然受支持,但现在在 mathtools 文档的冒号符号列表中标记为“旧版重复名称”)

答案2

这个答案是为了让马修高兴,他不喜欢结肠中的点相距太远。(@Matthew:我确实知道你不喜欢它。)

\makeatletter
\newcommand*{\defeq}{\mathrel{\rlap{%
                     \raisebox{0.3ex}{$\m@th\cdot$}}%
                     \raisebox{-0.3ex}{$\m@th\cdot$}}%
                     =}
\makeatother

编辑:

为了让马修更高兴,我提供了另一个答案,它使用了不同的方法(受 的定义启发\vdots),其中的点较小:

\newcommand*{\defeq}{\mathrel{\vcenter{\baselineskip0.5ex \lineskiplimit0pt
                     \hbox{\scriptsize.}\hbox{\scriptsize.}}}%
                     =}

答案3

我更喜欢 Donald Arseneau 的 hack,可以在TeX 常见问题解答(抱歉,此链接指向的是德语页面):

\mathchardef\ordinarycolon\mathcode`\:
\mathcode`\:=\string"8000
\begingroup \catcode`\:=\active
  \gdef:{\mathrel{\mathop\ordinarycolon}}
\endgroup

只需将此代码放入您的序言中。然后您可以:=照常使用,您将获得水平对称。\coloneqq在我看来,这比 更容易使用。

根据@Will Robertson的评论,还有一个特点mathtools改变数学模式下所有冒号的垂直对齐方式。

\mathtoolsset{centercolon}

答案4

Heiko Oberdiek 也提供了一个软件包:colonequals

有些字体有专门的字符来表示这些符号。不幸的是,存在与 相关的名称冲突\coloneq,这可能指的是:- 或者至 ≔ (U+2254, :=)。

相关内容