新人再见,我有一个情况需要解决,波浪号有两种不同的行为。第一种看起来很正常,在常规文本中,类似于:
... some text $\sim$A then some text ...
但在方程模式下(甚至在文本内的方程式美元符号内),波浪号和字母之间有一个空格(见下面的截图):
... some text $\sim{A}$ then some text ...
在方程模式中,有没有办法消除该空格?
我需要它用于方程模式:
\[ \sim{A} = ... \]
如果相关,在序言中我会使用该包lmodern
来使用 CM10 字体,再加上一些处理方程式的包:mathptmx, amssymb, amsmath, mathspec
并使用 xelatex 解析文本。
答案1
的默认“数学类型”\sim
是mathrel
,即关系运算符。(另一个类型的运算符示例mathrel
是=
。)字母的默认数学类型A
是(“数学普通”)。正如您所“发现的”,TeX 会自动在和类型的元素之间分别mathord
插入一些空格(数量为)。\thickmuskip
mathrel
mathord
如果你不是希望在\sim
和之间获得空格A
,只需写
{\sim}A
此设置将的数学类型更改为\sim
,mathord
并且 TeX 确实不是在类型的元素之间插入额外的空格mathord
。
答案2
通常\sim
是像这样的关系=
。因此需要空间:
\documentclass{article}
\usepackage{lmodern}
\usepackage{amsmath}
\begin{document}
\[ A = B \]
\[ A \sim B \]
\end{document}
但你也可以将其定义为普通符号:
\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}