![使用 unicode-math 的量词间距](https://linux22.com/image/276217/%E4%BD%BF%E7%94%A8%20unicode-math%20%E7%9A%84%E9%87%8F%E8%AF%8D%E9%97%B4%E8%B7%9D.png)
在数学公式中使用连续量化时,量词周围没有足够的间距。例如:
\documentclass{article}
\usepackage[colon=literal]{unicode-math}
\setmainfont{STIXGeneral}
\setmathfont{XITS Math}
\begin{document}
\[∀{δ>0}∃{ε>0}∀{x: |x-x_0| < ε ⇒ |f(x)-f(x_0)| < δ}\]
\[∀\,{δ>0}\;∃\,{ε>0}\;∀\,x: |x-x_0| < ε ⇒ |f(x)-f(x_0)| < δ\]
\end{document}
我使用的是 TeXLive 2012 和 XeLaTeX。输出是
现在我当然不想手动在所有量词周围添加空格。我尝试使用
\usepackage{newunicodechar}
\makeatletter
\newcommand\@quantifierspacing[1]{\,#1\@ifnextchar∃{\;}{\@ifnextchar∀{\;}{}}}
\newunicodechar{∀}{∀\@quantifierspacing}
\newunicodechar{∃}{∃\@quantifierspacing}
\makeatother
但这并没有增加前面的间距。我还考虑过
\newunicodechar{∀}{\;∀\,}
虽然我认为这并不明智,因为这样在第一个量词前面也会添加额外的空格。 有没有更好的方法?
答案1
我认为量词应该与其量化的变量紧密相关;所以你有几个选择:
量词前面有一个小空格
\newunicodechar{∀}{\mathop{}\!∀} \newunicodechar{∃}{\mathop{}\!∃}
量词前有一个粗空格
\newunicodechar{∀}{\mathrel{}\mskip-\thickmuskip ∀} \newunicodechar{∃}{\mathrel{}\mskip-\thickmuskip ∃}
这是一份展示两种可能性的文档
\documentclass{article}
\usepackage[colon=literal]{unicode-math}
\usepackage{newunicodechar}
\setmainfont{STIXGeneral}
\setmathfont{XITS Math}
\newunicodechar{∀}{\WHAT ∀}
\newunicodechar{∃}{\WHAT ∃}
\begin{document}
\def\WHAT{\mathop{}\!}
Thin space
X$
∀δ>0 ∃ε>0 ∀x: |x-x_0| < ε ⇒ |f(x)-f(x_0)| < δ
$X
\def\WHAT{\mathrel{}\mskip-\thickmuskip}
Thick space
X$
∀δ>0 ∃ε>0 ∀x: |x-x_0| < ε ⇒ |f(x)-f(x_0)| < δ
$X
\end{document}
诀窍\WHAT
就是更改文档中间的定义。X
公式前面的显示,如果量词位于开头,则不会添加额外的空格。