有条件配置水平空间(如 \mathop{})

有条件配置水平空间(如 \mathop{})

要排版积分/微分 d,通常将其定义为\mathop{}\!d。这是一个巧妙的技巧,如果前面是“常规的东西”,就像您在被积函数中所期望的那样,它会添加一个细空格,但如果它在开头,例如在 + 或 ( 之后,则不会添加。

现在我想要同样的条件空间行为,但具有不同的(稍大一些的)、理想情况下可配置的大小。

我尝试使用 mathbin 和 mathrel,但它们表现出不同的不良行为。

如何做呢?

编辑:MWE:

\documentclass{article}
\usepackage{amsmath}
\parindent 0pt
\begin{document}
\renewcommand*{\sp}{\mathop{}\!} %\, works
Test: $a \sp a(\sp a + \sp a$. \newline
\renewcommand*{\sp}{\mathbin{}\negmedspace} %\: doesn't
Test: $a \sp a(\sp a + \sp a$. \newline
\renewcommand*{\sp}{\mathrel{}\negthickspace} %\; doesn't
Test: $a \sp a(\sp a + \sp a$. \newline
\renewcommand*{\sp}{\mathbin{}} %\:\: works, too big
Test: $a \sp a(\sp a + \sp a$. \newline
\end{document}

输出

答案1

amsmath 命令\mspace可以更广泛地用于在数学环境中更好地控制水平空间。请注意,该命令取决于数学字体大小。相反,\hspace无论数学字体大小如何,该命令都会产生相同数量的空间。

回想一下,一个数学单位 (mu) 是 em 的 1/18。例如,在下面的代码块示例中的第一个示例(参考)中,负空间\!等于 3 mu。当然,两个命令的方括号内的值\mspace\hspace可以随意微调。

\documentclass{article}
\usepackage{amsmath}
\parindent 0pt
\begin{document}

\renewcommand*{\sp}{\mathop{}\!} %\ The Reference
Test: $a \sp a(\sp a + \sp a$. \newline

\renewcommand*{\sp}{\mathop{}\hspace{-0.05em}} %\ 0.9 mu
Test: $a \sp a(\sp a + \sp a$. \newline

\renewcommand*{\sp}{\mathop{}\hspace{-0.15em}} %\ 2.7 mu
Test: $a \sp a(\sp a + \sp a$. \newline

\renewcommand*{\sp}{\mathop{}\hspace{-0.2em}} %\ 3.6 mu, slightly larger than the Reference
Test: $a \sp a(\sp a + \sp a$. \newline

\renewcommand*{\sp}{\mathop{}\hspace{-0.3em}} %\ 5.4 mu
Test: $a \sp a(\sp a + \sp a$. \newline



\renewcommand*{\sp}{\mathop{}\mspace{-3mu}} %\
Test: $a \sp a(\sp a + \sp a$. \newline

\renewcommand*{\sp}{\mathop{}\mspace{-3.5mu}} %\ Slightly larger than the Reference
Test: $a \sp a(\sp a + \sp a$. \newline


\renewcommand*{\sp}{\mathop{}\mspace{-4mu}} %\
Test: $a \sp a(\sp a + \sp a$. \newline

\end{document}

相关内容