下标/上标中数学运算符周围的空格

下标/上标中数学运算符周围的空格

考虑以下:

\documentclass{article}

\begin{document}

What I have:
\[x^{1+1}\]

What I would like:
\[x^{1\,+\,1}\]

That is, I will like to have spacing around the operator as in `$1+1$'.\\[\baselineskip]
\textsf{Question:} How do I get the above throughout my document without having to add \verb|\,| on each side of the operator every time?

\end{document}

输出

答案1

在此处输入图片描述

Luatex 具有原语来控制每个数学样式中每个类之间添加的空间,因此要控制脚本样式中 mathord 和 mathbin 之间的空间:

\documentclass{article}

\begin{document}
$a+b x^{a+b}$

\Umathordbinspacing\scriptstyle=10mu
\Umathbinordspacing\scriptstyle=10mu

$a+b x^{a+b}$

\end{document}

对于经典的 TeX 引擎你可以这样做

在此处输入图片描述

\documentclass{article}
\DeclareMathSymbol{\realplus}{\mathbin}{operators}{"2B}
\begin{document}
$a+b x^{a+b} +cx^{+c}$

%\Umathordbinspacing\scriptstyle=10mu
%\Umathbinordspacing\scriptstyle=10mu


\def\z{{\mskip\medmuskip{\realplus}\mskip\medmuskip}}

$a\z b x^{a \z b} \z  cx^{\z c}$

\catcode`\+\active\let+\z
\catcode`\+12
\mathcode`\+="8000

$a+b x^{a+b} +cx^{+c}$

\end{document}

但这并不是很好,它总是添加空格,因此只有+用作两个原子之间的二元运算符时才有效。请注意,+c最后一项中的最后一个前缀会占用较宽的空间,这并不是您真正想要的,您需要一个单独的命令来访问前缀+

在通过评论链接的答案中,我建议使用一种\nonscript看起来更复杂的构造,但实际上我认为它有同样的缺陷。

egreg 使用建议的版本\text获得了正确的间距,但它需要更多的标记而不仅仅是添加空格(当然,您可以定义自己的变体\sp命令,使用此构造制作上标)。

答案2

不,你不需要它。Knuth 通过研究在很长一段时间内产生的多篇包含数学内容的文档,研究了数学空间的规则。

也许有些国家的印刷传统也会在上标和下标中使用空格操作和关系符号。这并不意味着这样做很好:那里的间距很紧总体来说还不错。偶尔出现的小失误可以手工修复:如果你想要一份漂亮的文件,你必须对其进行处理。米开朗基罗不仅仅是用锤子和凿子来制作他著名的圣母怜子图

这是卡尔·魏尔斯特拉斯 (Karl Weierstraß) 所著的《亚伯函数理论:最初的重量》 (1856 年) 中的一张图片 (在 Google 图书上查看

在此处输入图片描述

您可以看到上标中的总和是紧密设置的,而普通类型的总和则并非如此。


我记得芭芭拉·比顿 (Barbara Beeton) 曾使用过以下技巧:

\documentclass{article}
\usepackage{amsmath}

\catcode`^=12
\catcode`_=12

\begingroup\lccode`~=`^\lowercase{\endgroup\def~}{\SPACED\sp}
\begingroup\lccode`~=`_\lowercase{\endgroup\def~}{\SPACED\sb}
\AtBeginDocument{\mathcode`^="8000 \mathcode`_="8000 }

\makeatletter
\def\SPACED#1#2{#1{\text{$\m@th#2$}}}
\makeatother

\begin{document}
$\displaystyle x^{1+1}+\sum_{1\le k\le n}k^2$

The original: {\catcode`^=7 \catcode`_=8
  $\displaystyle x^{1+1}+\sum_{1\le k\le n}k^2$}
\end{document}

\displaystyle只是举例而已。

在此处输入图片描述

我对于我会选择什么版本毫不怀疑。

相关内容