看起来基本语法
(x_{i})_{i\in I}
导致索引位置不同于
\left(x_{i}\right)_{i\in I}
具体来说,上一个示例中的下部索引具有更大的垂直偏移。这似乎与括号之间的内容无关,因为在更简单的示例中也出现了相同的效果
(x)_{i\in I}
\left(x\right)_{i\in I}
这种行为的原因或理由是什么?由于我可能会在文档中意外混合两种语法,因此确保索引统一对齐的最佳做法是什么?
答案1
你实际上问的是两个不同的问题。
这种行为的原因是什么?
考虑以下稍微复杂一点的例子,其中涉及数学分隔符,例如)
和]
,以及相邻的下标和上标项。
\documentclass{article}
\begin{document}
$()_I$ ${()}_I$ $\left(\right)_I$ ${\left(\right)}_I$
$()^2$ ${()}^2$ $\left(\right)^2$ ${\left(\right)}^2$
$[]_u^v$ ${[]}_u^v$
\end{document}
此屏幕截图中需要注意的两件事是:
在给定行中,圆括号和方括号都具有相同的高度和深度。给定行中的下标和上标术语也是如此。
在给定行中,第一种情况下的下标和上标项放置得更紧凑,即垂直偏移量比后续情况更小。
那么,在给定的一行中,第一种情况与后续情况有何区别?以第二行为例。
^
在第一种情况下,紧接在标记(TeX 的上标材料启动器)之前的“数学原子”是)
,其 TeX 状态为“math-close”。在第二种到第四种情况下,标记前面的“数学原子”——或者应该是“数学分子”?——分别
^
是{()}^2
、\left(\right)^2
和{\left(\right)}^2
。这些数学原子有什么共同点?它们的 TeX 状态都是“数学普通”。另外:将任何数学原子括在花括号中都会将其状态更改为数学普通。而且,整个\left(\right)
数学原子的状态也是数学普通。
现在,TeX 的上标和下标放置规则在应用的垂直偏移方面有重要区别,这取决于紧接在^
and_
标记之前的材料是否具有状态 math-open/math-close。特别是,您(重新)发现的是,如果前面的数学原子具有状态 math-close,则放置会比其状态为 math-ordinary 时更紧密。
这种行为的理由是什么?
_
我的印象是,如果紧接在and^
标记之前的数学原子具有数学打开/关闭状态,则TeX 应用较小偏移量有两个不同的原因。
$(a+b)^2 = a^2+2ab+b^2$
比较和的输出$\left(a+b\right)^2 = a^2+2ab+b^2$
。在前一种情况下,所有三个实例
2
都放置在相同的高度,我认为这看起来自然而和谐。在后一种情况下,第一个实例的2
位置明显高于其他两个实例;对我来说,这似乎是不自然的、不必要的,而且在视觉上分散了注意力。(旁白:我使用 TeX 和 LaTeX 已有 30 多年,在这件事上我的看法可能有点偏见……)在行内数学上下文中,对可能存在的任何下标和上标项应用较小的垂直偏移量会显著提高整个段落排版时行间距均匀的可能性。在精细排版中,段落中行间距均匀被认为是非常理想。
最后,你问,
由于我可能会在文档中意外混合两种语法,那么确保索引统一对齐的最佳做法是什么?
其实很简单:不要使用\left
和\right
自动调整大小指令除非这样做有明显的正当目的。将这一限制应用于前面的一些材料表明,没有正当理由使用\left
和\right
……$\left(a+b\right)^2=a^2+2ab+b^2$
答案2
答案3
虽然没有完全回答这个问题,但关于如何完成这一技术实现的说明并不适合评论:
决定性因素并不是数学课(除了特殊的 mathop),而是强调的对象。
每当数学字体中的一个字符被重音时,它的高度和深度就会被完全忽略,而是将脚本设置为附加到空列表。
以下面的纯 TeX 文档为例,它将脚本附加到不同数学类别的大括号中:
$$
)_a
\mathchar"0321_a % This is a math ordinary
\mathchar"5321_a % This is a math close
{}_a % an empty list to compare
$$
\bye
您可以看到它们都将下标附加在完全相同的高度:
如果脚本附加到除单个字符以外的任何其他字符,则不会触发此特殊情况,并且会考虑字符的高度和深度。通常,当仅用 包围某些数学原子时,这种情况已经发生。{}
但作为另一个例外,在{}
已经是数学普通字符的单个字符周围添加内容是多余的,因此在许多情况下会进行优化,因此再次适用单个字符规则:
$$
{)}_a % A math close character in braces
{x\mathchar"0321}_a % This are multiple math ordinary in braces
{\mathchar"0321}_a % This is one math ordinary character in braces so the braces are ignored
{\mathchar"5321}_a % This is a math close character in braces
{}_a % an empty list for comparision
$$
\bye
这里下标向下移动以适应字符的深度,除非括号是多余的并因此被删除:
这样做的原因是单个字符通常都具有大致相同的大小(除非你故意使用奇怪的字符,例如\mathchar
我用于测试的字符)。因此,一个高度在所有字符旁边看起来都是合理的,并且看起来比每个字符都有不同的脚本高度要一致得多。所有比单个字符更复杂的字符都不能指望有通常的大小,因此必须使用更通用的放置方式。
答案4
\left...\right
Mico 和 egreg 说服我,除非有理由使用它,否则最好避免使用它。
Mico 说:“... 对可能存在的任何下标和上标项应用较小的垂直偏移量,可显著提高整个段落排版时行距均匀的可能性。在精细排版中,段落中行距均匀被认为是非常理想的。”
因此,行为)_
是经过设计的。
如何完成了吗?为什么\left(...\right)_I
在和的情况下行为会发生变化吗{)}_I
?我认为答案如下:
更新:稍后会有回答下面更好地解释发生了什么。
特殊行为内置于字符的字体参数中)
。在数学字体中,每个字符大约有22 个参数其中一些与索引有关:
s13 sup1 (alternative superscript position)
s14 sup2 (alternative superscript position)
s15 sup3 (alternative superscript position)
s16 sub1 (alternative subscript position)
s17 sub2 (alternative subscript position)
s18 sup-drop (further control of superscript positioning)
s19 sub-drop (further control of subscript positioning)
或这个参数是没有问题的{(}
,\left...\right
因为前面_
,没有更多的特点字体处于静止状态。更新:或者恰恰相反,正如回答我已经提到过。