消除公式中波浪号和字母之间的空格

消除公式中波浪号和字母之间的空格

新人再见,我有一个情况需要解决,波浪号有两种不同的行为。第一种看起来很正常,在常规文本中,类似于:

... some text $\sim$A then some text ...

但在方程模式下(甚至在文本内的方程式美元符号内),波浪号和字母之间有一个空格(见下面的截图):

... some text $\sim{A}$ then some text ...

在此处输入图片描述

在方程模式中,有没有办法消除该空格?

我需要它用于方程模式:

\[ \sim{A} = ... \]

如果相关,在序言中我会使用该包lmodern来使用 CM10 字体,再加上一些处理方程式的包:mathptmx, amssymb, amsmath, mathspec并使用 xelatex 解析文本。

答案1

的默认“数学类型”\simmathrel,即关系运算符。(另一个类型的运算符示例mathrel=。)字母的默认数学类型A是(“数学普通”)。正如您所“发现的”,TeX 会自动在和类型的元素之间分别mathord插入一些空格(数量为)。\thickmuskipmathrelmathord

如果你不是希望在\sim和之间获得空格A,只需写

{\sim}A

此设置将的数学类型更改为\simmathord并且 TeX 确实不是在类型的元素之间插入额外的空格mathord

答案2

通常\sim是像这样的关系=。因此需要空间:

\documentclass{article}

\usepackage{lmodern}
\usepackage{amsmath}

\begin{document}
\[ A = B \]
\[ A \sim B \]
\end{document}

\sim 关系

但你也可以将其定义为普通符号:

\documentclass{article}

\usepackage{lmodern}
\usepackage{amsmath}
\mathchardef\simsym"0218
\begin{document}
\[ A \sim B \]
\[ A \simsym B \]
\end{document}

普通模拟

有关数学课程的更多信息,请参见TeX 按主题分类第 38.3 和 23.3 节。

除了使用,\mathchardef您还可以使用

\newcommand*{\simsym}{\mathord\sim}

定义\simsym为的普通符号变体\sim

\documentclass{article}

\usepackage{lmodern}
\usepackage{amsmath}
\newcommand*{\simsym}{\mathord\sim}
\begin{document}
\[ A \sim B \]
\[ A \simsym B \]
\end{document}

结果与上面完全相同,并且与

\documentclass{article}

\usepackage{lmodern}
\usepackage{amsmath}
\newcommand*{\simsym}{{\sim}}% note the extra {…}
\begin{document}
\[ A \sim B \]
\[ A \simsym B \]
\end{document}

相关内容