使用 amsmath、NewTX 或 TeX Gyre Termes Math 时,\colon 总是在 : 周围插入额外空格有什么意义?

使用 amsmath、NewTX 或 TeX Gyre Termes Math 时,\colon 总是在 : 周围插入额外空格有什么意义?

当看着https://tex.stackexchange.com/a/64435,在我看来\mathpunct{:}\colon应该可以互换。但是对于 amsmath、NewTX 或 unicode-math + TeX Gyre Termes Math,它们不能互换。unicode-math 的文档说\colon使用 amsmath。为什么要有额外的空格?有什么意义?

输出的第二行

\documentclass{article}
\pagestyle{empty}
\usepackage{iftex}
\ifTUTeX
\usepackage[math-style=ISO]{unicode-math}
\setmainfont{TeX Gyre Termes}
\setmathfont{TeX Gyre Termes Math}
\else
\usepackage{newtxtext,newtxmath}
% \usepackage{amsmath}%%% alternative
\fi
\begin{document}
\noindent
A$\mathpunct{:}$B\\
A$\colon$B\\
$A\mathpunct{:}B$\\
$A\colon B$
\end{document}

无论A : B我们使用 pdflatex 还是 lualatex 进行编译:

输出

(尽管您可能希望或不希望在第 4 行留有空格。)特别是,当\colon恰好结束该行时,例如\colon\\,它与右边距之间会留有空格。我看不出这有什么意义。

顺便问一下,\colon前后插入多少空格: 确切地

答案1

一旦您加载,它们就不能互换amsmath

事实上,的内核定义\colon

\DeclareMathSymbol{\colon}{\mathpunct}{operators}{"3A}

amsmath将其重新定义为

\DeclareRobustCommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript
  \mkern-\thinmuskip{:}\mskip6muplus1mu\relax}

AMS 的这个决定是否正确,还有待商榷。另一方面,TeXbook\colon只在几个地方使用了

  • 第 134 页,其中f:A\to Bf\colon A\to B被比较
  • 第 438 页,再次提到了函数符号,但也提到了人为的例子L(a,b;c\colon x,y;z)

AMS 的内部风格是函数符号的冒号的间距不同:特别是它左边应该有一些空格,而右边的标点符号应该有更多的空格。

如果你想要一个“标点冒号”,定义你自己的命令,比如

\DeclareMathSymbol{\pcolon}{\mathpunct}{operators}{"3A}

或者(但我不建议这样做)amsmath使用以下方法恢复定义

\let\colon\relax
\DeclareMathSymbol{\colon}{\mathpunct}{operators}{"3A}

如果你愿意的话。或者

\DeclareRobustCommand{\colon}{\mathpunct:}

相关内容