Wikibooks 的 LaTeX/高等数学文章有这个例子:
\begin{align}
f(x) &= x^4 + 7x^3 + 2x^2 \nonumber \\
&\qquad {} + 10x + 12
\end{align}
其中提到
我们需要
{}
在 + 号前插入双括号 ( ),否则 latex 将无法在 + 号后创建正确的空格。原因是如果没有括号,latex 会将 + 号解释为一元运算符,而不是实际的二元运算符。
我的问题:这是针对“旧”版本的 LaTeX 的吗?因为我尝试过带括号和不带括号的情况{}
,似乎看不出有什么区别。要么就是区别很小?
对于“现代 LaTeX”,我们需要这样做吗?
次要问题:\qquad{}
与 ? 相同\qquad {}
(注意空格)
答案1
关于你的第一个问题:通常,有必要遵循此建议并通过模拟第一个操作数{}
,以允许 TeX 区分一元和二元运算符。只是环境align
对运算符的处理不同;\qquad
不模拟操作数。所以如果你不知道其他情况,我会遵循建议。
以下文档演示了一对大括号的效果(或无效效果)。
\documentclass{article}
\usepackage[fleqn]{amsmath}
\begin{document}
$+10x$
${}+10x$
$\qquad+10x$
$\qquad{}+10x$
\begin{align*}
&+10x\\
&{}+10x\\
&\qquad+10x\\
&\qquad{}+10x
\end{align*}
\end{document}
答案2
您的来源不正确,但是补充一下{}
也无妨。
让我来解释一下发生了什么。align
环境会构建对齐的列对,数学模式下的单元格在奇数列中右对齐,在偶数列中左对齐。
偶数单元格中的每个单元格都以隐式的 开头{}
,从而形成一个空的 Ord 原子。
数学模式材料的处理相当复杂,但实际上并不是太复杂。
每个项目可以是数学原子或“其他”;间距命令属于“其他”类别。下标和上标附加到它们所属的数学原子上,因此这里不涉及它们。数学原子可以分为几种类型:
- Ord(普通符号)
- Op(运算符)
- Bin(二元运算符号)
- Rel(关系符号)
- Punct(标点符号)
- 打开(打开分隔符)
- 关闭(结束分隔符)
还有一些,但基本上都转化为了 Ord;为了简单起见,我就不分析它们了。
TeX 在处理该线时找到的公式& \qquad + 10x
是
{} \qquad + 1 0 x
(因为&
意味着它属于偶数列)翻译成以下原子和其他项目的序列(用“X”表示)
订单 X Bin 订单 订单 订单
数学原子的顺序决定了自动添加的间距。如果 Bin 原子前后都有 Ord 原子,TeX 会在其周围插入一个中等间距,独立中间有“其他项目”;Ord 原子之间没有插入空格。完整列表位于https://tex.stackexchange.com/a/240579/4427
处理自动插入的空格后,TeX 会构建一个包含项目的水平框,这次会考虑“其他项目”,因此你会得到
(空)
\qquad
(中等空间)+
(中等空间)1
0
x
(上面的空格仅用于分隔项目)
如果直线是& \qquad {} + 10x
,公式将变成{} \qquad {} + 10x
,原子和其他项目的序列将是
订单 X 订单 Bin 订单 订单 订单
这将添加空格,以便获得
(空)
\qquad
(空)(中等空间)+
1
0
x
结果将是相同的,因为空原子不会产生任何结果(除了可能触发自动插入空格)。
自从它发布以来,就一直存在这种行为amsmath
,甚至在它被称为的时候amslatex
,也就是 1992 年左右。
隐式空 Ord 原子的目的是在典型的中获得正确的间距align
:
\begin{align}
A &= B+C \\
D &= E+F
\end{align}
其中B+C
并不典型,但用作例子。处理第一行第二个单元格时的原子序列将来自
{} = B + C
所以翻译成
Ord Rel Ord Bin Ord
并且,由于 TeX 在 Ord-Rel 或 Rel-Ord 之间插入了一个空格,因此我们得到
(空) (粗间距)
=
B
(中等间距)+
(中等间距)C
A=B+C
这是为了使结果与自动插入间距的结果相同。
事实上,是需要注意的地方:如果偶数列中的单元格以Op
原子开头(例如\sum
或\log
),则会插入一个细小的空格,因为 TeX 会自动将其添加到 Ord 和 Op 之间。
\qquad{}
和之间有区别吗\qquad {}
?没有。控制字后的空格会被忽略。