
再見,我有一個情況需要解決,有兩種不同的波浪號行為。第一個看起來很正常,在常規文本中,類似於:
... 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
是mathord
(“普通數學”)。正如您「發現」的那樣,TeX 會自動在\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}