上标和下标的垂直定位因分组(`{ }`)而异:为什么?注意事项?解决方法?

上标和下标的垂直定位因分组(`{ }`)而异:为什么?注意事项?解决方法?

{(x+y)}^2关于vs 的这个问题(x+y)^2让我注意到这些表达式的上标和下标的垂直定位略有不同。比较(x+y)^8_8(左)和{(x+y)}^8_8(右)[数学模式下的所有表达式]:

上标和下标的垂直定位不同

\documentclass{article}
\begin{document} \((x+y)^8_8\), \({(x+y)}^8_8\) \end{document}

(这个最小的示例代码几乎不值得发布。)

这让我产生了一些疑问:

  • 为什么两种表达方式的垂直定位不同?
  • LaTeX 用户应该注意什么才能使这种垂直定位“正确”(假设这种差异背后有更深层次的理由)?
  • 有没有一种简单的方法可以让这样的表达式始终具有相同的上标和下标定位?

上述链接问题的答案建议不要使用带有的版本{ },因此我认为任何垂直定位差异的理由都需要不同的示例项。

答案1

为什么两种表达方式的垂直定位不同?

因为在第一种情况下,您要在括号中添加下标和上标,而在第二种情况下,整个子公式是添加了上标和下标字段的数学原子的核心。

LaTeX 用户应该注意什么才能使这种垂直定位“正确”(假设这种差异背后有更深层次的理由)?

最好不要将子表达式括在括号中;括起来通常是错误的。将指数添加到括号中是表示括号表达式的幂的传统方法。

有没有一种简单的方法可以让这样的表达式始终具有相同的上标和下标定位?

不。它们本质上是不同的,因为后者使用全部用括号内的子公式来确定上标的基线。

只需$)^2$${)}^2$即可显示差异。在前一种情况下,原子具有原子核),在后一种情况下,原子核为,{)}并且附录 G 的规则适用不同:在第二种情况下,数学列表转换为一个框,它不包含与单个符号相同的信息。这是一个视觉演示:

$bb^2 {bb}^2 bb_2^2 {bb}_2^2$

生产

在此处输入图片描述


还必须提到另一个问题:当你书写${(a+b)}$(带下标/上标或不带下标)+时,冻结保持其自然宽度,因此在对齐时不会参与空间的拉伸或收缩。这可能会造成外观不佳,例如标志${(a+b)}+c$周围的空间+可能会有所不同。

答案2

我认为你的问题主要关于目的(或目的)根据紧接在前的材料是(a)右括号(在 TeX 术语中,恰好是“math-close”类型的“原子”)还是(b)结束数学“组”的右花括号,对上标和下标的排版有不同的规则。(正如@egreg 在他的回答中所指出的,对为什么TeXbook 的附录 G 给出了:TeX 使用不同的规则,这取决于它是否可以“检查”紧接在下标/上标材料之前的材料。花括号中的数学材料会创建一个新的“核心”或盒子;一旦材料被放入盒子中,TeX 就会知道盒子的宽度、高度和深度,但仅此而已。)

为了理解目的除了这些不同的规则之外,重要的是要记住,TeX 的设计很大程度上是为了以美观的方式排版数学表达式,无论是显示样式(即偏移方程式)还是文本样式(即连续文本)。对于连续文本,常用的排版美观标准是制服文本块的颜色(如果您喜欢,可以选择灰色)。为了实现此目标,如果

  • 同一页面内和跨页面的不同段落的颜色量大致相同不管段落中的内容,以及
  • 同一段落内各行文本的间距均等。

对于许多适合连续文本的罗马字体(在德语中,我相信它们被称为“Antiqua”字体),连续“单倍行距”行之间的距离通常设置为比标称字体大小大 20%。例如,10pt 字体在10/12单倍行距文本中被赋予 12pt 的行间间距(简称)。(相比之下,黑体字通常可以设置为“实心”,例如10/10。)为了使这种行间间距设置有机会在颜色方面产生所需的结果,重要的是不要让任何东西过多地突出到行间空白中。

您可能会问,这一切与您的问题有什么关系,即与定位下标和上标的算法不同的原因有什么关系?

请考虑以下两个段落,它们都设置为10/12。第一段的特点是,lipsum 填充文本和 形式的表达式的组合$(x+y)^8_8$;第二段有相同的填充句子加上 形式的表达式${(x+y)}^8_8$

在此处输入图片描述

第一段中的所有行都是等距的,而第二段并非如此。从构造上讲,这两个段落之间的差异在于数学表达式的上标和下标的位置。如果不使用花括号括住术语(x+y),TeX 会注意到上标和下标之前的术语是);在这种情况下,TeX 使用专门的算法将上标和下标定位得非常紧密:请注意,下标没有低于符号),而上标刚刚高于括号。上标和下标的紧密定位对整个段落外观的影响是,不需要调整默认的行间距,从而得到漂亮均匀的颜色。

相反,如果花括号使用时,TeX 并不知道括号内的表达式以圆括号结尾,因此选择了一种不同的、更通用的算法来放置下标和上标项。事实证明,这会导致项更明显地突出到行间空白处,迫使 TeX 稍微扩大行间空白处。结果是行距不均匀在同一段落中——丑陋的!!

总而言之,确实有很好的理由不是不必要地使用{}:这样做可能会影响 TeX 排版段落的能力。:-)

\documentclass{article}
\newcommand\lipsi{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. }
\newcommand\lipsii{Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. } 
\newcommand\lipsiii{Curabitur~dictum gravida mauris. } 
\newcommand\lipsiv{Nam libero, nonummy eget, consectetuer id, vulputate a, magna. }
\newcommand\withoutbraces{$(x+y)^8_8$ }
\newcommand\withbraces{${(x+y)}^8_8$ }
\hyphenation{purus dictum vulputate}
\begin{document} 
\lipsi \withoutbraces \lipsii \withoutbraces \lipsiii \withoutbraces \lipsiv \lipsi \lipsii \lipsiii \lipsiii

\medskip
\lipsi \withbraces \lipsii \withbraces \lipsiii \withbraces \lipsiv \lipsi \lipsii \lipsiii \lipsiii
\end{document}

附录:可以通过将第二段的行距设置为10/13(即增加一个“行距”)来恢复统一的行距。但这仍然不能产生完全令人满意的结果,因为现在不包含下标和/或上标内容的行开始看起来与相邻行隔离。简而言之,如果10/12被认为可以排版连续文本,则应启用排版引擎来排版任何数学对象(当然,假设它们不是太大以至于值得在一行上单独排版偏移!),这样就不会干扰将文本保持在10/12

相关内容