上标和左括号之间的间距

上标和左括号之间的间距

我想知道为什么 Latex 会在上标和左括号之间添加一个额外的空格,就像在这种情况下

\documentclass{article}
\usepackage{amsmath}
\let\originalleft\left
\let\originalright\right
\renewcommand{\left}{\mathopen{}\mathclose\bgroup\originalleft}
\renewcommand{\right}{\aftergroup\egroup\originalright}
\begin{document}
  $\mathscr{P}^{N}\left(\mathscr{K}\right)$
\end{document}

公式显示上标 N 和左括号之间有一个不必要的空格。我尝试了\left 和 \right 周围的间距,但在本例中不起作用。有什么想法吗?

答案1

正如一些评论中已经指出的那样,不要滥用\left\right

  • 如果你不是想要在自动调整大小的括号周围留出额外的空格,但由于某种原因,想要自动调整大小的括号,请加载包mleftright并使用\mleft\mright。(直接重新定义您所设想的类型的\left\right可能会导致非常奇怪的结果......)

  • \left(对于手头的示例,自动调整大小并不是一开始就需要的。请注意,由、\mleft(和产生的括号的大小(都是相同的。为什么要不必要地弄乱代码呢?

在此处输入图片描述

\documentclass{article}
\usepackage{mathrsfs}   % for \mathscr macro
\usepackage{mleftright} % for \mleft and \mright macros
\begin{document}
\obeylines % just for this example
$\mathscr{P}^{N}\left(\mathscr{K}\right)$
$\mathscr{P}^{N}\mleft(\mathscr{K}\mright)$
$\mathscr{P}^{N}(\mathscr{K})$

\medskip
$\mathcal{P}^{N}\left(\mathcal{K}\right)$
$\mathcal{P}^{N}\mleft(\mathcal{K}\mright)$
$\mathcal{P}^{N}(\mathcal{K})$
\end{document}

答案2

这与上标符号后的括号无关:

\documentclass{article}
\usepackage{amsmath}

\let\originalleft\left
\let\originalright\right
\renewcommand{\left}{\mathopen{}\mathclose\bgroup\originalleft}
\renewcommand{\right}{\aftergroup\egroup\originalright}

\begin{document}

$P^{N}\!\originalleft(K\originalright)$

$P^{N}\left(K\right)$

$P^{N}(K)$

$P^{N}K$

\end{document}

在此处输入图片描述

第一种情况下的\!是用于删除通常由 插入的细空格\left。您可以清楚地看到,这四种情况下的间距完全相同。这取决于功能\scriptspace:在下标或上标符号后,TeX 会添加 的水平间距\scriptspace,默认值为 0.5pt。

如果你还考虑到数学字母是倾斜的,并且左括号的左上角有一个“洞”,那么空间看起来会比实际更大。但这是有充分理由的。

您可以使用直立字符和没有侧边距的上标来进行更公平的比较:

\documentclass{article}

\newcommand{\thinbar}{{\vphantom{|}\vrule width .2pt}}

\begin{document}

$\mathrm{I}^{\thinbar}\thinbar\mathrm{I}$ $\mathrm{I}^{\mathrm{I}}\mathrm{I}$

\setlength{\scriptspace}{0pt}

$\mathrm{I}^{\thinbar}\thinbar\mathrm{I}$ $\mathrm{I}^{\mathrm{I}}\mathrm{I}$

\end{document}

在此处输入图片描述

在左栏中,您可以清楚地看到 的效果\scriptspace;在右栏中,您可以将效果与“真实”上标进行比较。 的目的\scriptspace正是稍微分离符号以便于阅读。

重要的提示

我保留了你对\left和的重新定义\right,但我无论如何都不推荐它。已经有一个包做得更好,mleftright

相关内容