我想排版两个复合符号来定义。以下
\newcommand{\defeq}{\mathrel{\mathop:}=}
\newcommand{\eqdef}{\mathrel{\mathop=}:}
建议CTAN 符号列表在第 35 页的脚注中。(嗯,第一个是建议的,第二个是我编的。)除了包括 之外,有没有更好的方法可以做到这一点txfonts
?基本上,它总是看起来\defeq
左边的空间比右边多,反之亦然\eqdef
。
编辑 - 大多数答案都在讨论修复冒号垂直位置的包。好的,这很好,我很想听听。但让我重申一下我的问题。我想修复 \defeq 左右两侧明显的空间差异。要了解我的意思,请查看$a \defeq b$
Stefan 的答案中的排版方程。$a$
和$b$
与中心的距离相等。但是因为冒号是一个较浅的符号,所以看起来$a$
距离更远。这有道理吗?
答案1
我建议使用垂直居中的冒号,它与等号更匹配,\vcentcolon
例如mathtools
包。您也可以通过 将其一般更改为垂直\mathtoolsset{centercolon}
。
比较标准 :=
垂直居中:
所以你的定义可以变成
\usepackage{mathtools}
\newcommand{\defeq}{\vcentcolon=}
\newcommand{\eqdef}{=\vcentcolon}
间距更紧密。而且由于两个符号都已经是关系符号,正如 egreg 所说,我们甚至可以省略\mathrel
。
您还可以通过mathtools
提供的命令更轻松地完成此操作:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
$a\coloneqq b \qquad b\eqqcolon a$
\end{document}
答案2
该mathtools
软件包为您提供了centercolon = true|false
选项,以及包括垂直居中冒号在内的各种预定义符号:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\[
a \coloneqq b \quad c \Colonapprox d \quad e \dblcolon f
\]
\mathtoolsset{centercolon}
\[
a := b
\]
\end{document}
答案3
据我所知,这是最好的解决方案(与数学工具为其\vcentcolon
命令)。然而第二个定义应该是
\newcommand{\eqdef}{=\mathrel{\mathop:}}
否则,两个符号相对于另一个符号就会出现错误位置,结果无论如何都会很糟糕。
笔记
作为一名数学家,我从未觉得需要一个定义相等的符号,几个世纪以来,许多人都这么认为。但这有可能成为另一场宗教战争的根源。:)
答案4
查看命令代码时\defeq
,我注意到指令范围存在不对称\mathrel
。以下命令可避免符号周围间距的这种不对称:
\newcommand{\defeq}{\mathrel{:\mkern-0.25mu=}}
\newcommand{\eqdef}{\mathrel{=\mkern-0.25mu:}}
我利用了\mkern
("math-kern") 命令来缩小两个组成符号之间的间距(很小)。mkern 指令的值是通过目测法确定的。
这种方法的缺点是冒号相对于等号没有垂直居中。这可以通过再摆弄一下来解决,但我认为最好使用预定义的宏。实际上,对于“冒号等号”符号,人们几乎感到尴尬:
- 包
mathabx
、MnSymbol
和mtpro2
:\coloneq
- 包
txfonts
、pxfonts
和mathtools
:\coloneqq
- 包装
colonequals
:(\colonequals
还有什么?!)
请注意,该mtpro2
软件包(“MathTime Pro 2”的缩写)有“精简版”(免费)和“专业版”(非免费)两种版本。 和mtpro2
将txfonts
使用 Times-Roman 字体样式,并将pxfonts
使用 Palatino 字体;这可能会或可能不会被您接受,具体取决于您使用的文本字体。软件包中的版本\mathabx
有一个有趣的特点,即其“等号”符号的长度比正常长度短,并且其命令的结果宽度\coloneq
与正常等号的宽度相同。
对于反向符号的预定义版本,即“equals-colon”,您可以使用包\eqcolon
的命令mtpro2
(如果您已经拥有该包,这可能是最简单的方法)或包\equalscolon
的命令colonequals
。此外,您可以随时将您喜欢的冒号-等号符号形式旋转 180 度,以使用包\rotatebox
的命令生成反向graphicx
符号。只需记住,您需要告诉 TeX 新符号的“类型”,应该是“mathrel”。以下 MWE 解释了如何实现此效果。
\documentclass{article}
\usepackage{MnSymbol, graphicx}
\newcommand{\eqcolon}{\mathrel{\rotatebox[units=360]{180}{\ensuremath{\coloneq}}}}
\begin{document}
$a \coloneq b$ and $c \eqcolon d$.
\end{document}
TeXing 快乐!