因为空格是解析宏名称时的分隔符,所以我习惯在运行的文本中用{}
in 这样的符号来结束宏text \foobar{} text
,因为我发现转义的空格 intext \foobar\ text
很烦人。有时这种习惯会蔓延到数学模式中。显然
\[
\sum{}^{...}
\]
无法按预期工作
\[
\sum^{...}
\]
是什么意思。它们是如何解析的,有什么区别?
编辑:我的意思是\foo\
解决方案,而不是双倍空格。
答案1
TeX 创建的数学列表(粗略地说)是原子序列,每个原子都有原子核+下标+上标。原子的每个部分都可以为空。\hboxes
在扫描数学模式材料的第二遍中,原子序列被转换为确定的(升高或降低)。
第一个例子\sum{}^a
创建了第一个原子,其原子核为:和字符,下标和上标为空。接下来是第二个原子,其原子核为空,下标为空,上标为a
。
第二个示例\sum^a
仅创建一个原子,其原子核和上标中均带有和字符a
。下标为空。
可见输出的差异是由对两个原子与一个原子在第二次通过数学材料时的解释差异引起的。上标的位置取决于原子核的大小和原子的类型。
答案2
技术原因是,在数学模式下,{}
是一个数学原子,而不是被丢弃的东西。
通常,定义宏来代表文本不是一个好主意,因为这会降低代码的可读性,但在某些情况下必须使用一些不带参数的宏。典型的例子是命令\LaTeX
。
无论如何,如果您有文本命令,其后面不需要带括号中的参数,则用 终止它{}
是保留后续空格的一个好策略。
在数学上,这是灾难性的,正如你所见证的。只需留一个空格:如果你想输入X, 做\sin x
。绝不用于{}
在数学模式下终止命令名称:比较
\sin(x+y)
\sin{}(x+y)
看看原因:
在标准数学排版中,“sin”和括号之间不应该有空格。空原子{}
属于“普通”类型,将触发空格,如 中所示\sin x
。
会发生什么情况\sum{}_x^y
?下标和上标指向 所代表的(空)原子{}
:\sum
原子已经走了。