当看着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 B
和f\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:}