使用 unicode-math 的量词间距

使用 unicode-math 的量词间距

在数学公式中使用连续量化时,量词周围没有足够的间距。例如:

\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

我认为量词应该与其量化的变量紧密相关;所以你有几个选择:

  1. 量词前面有一个小空格

    \newunicodechar{∀}{\mathop{}\!∀}
    \newunicodechar{∃}{\mathop{}\!∃}
    
  2. 量词前有一个粗空格

    \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公式前面的显示,如果量词位于开头,则不会添加额外的空格。

在此处输入图片描述

相关内容