答案1
如果行不是以多字母控制序列结尾,TeX 会在每个非空行的末尾放置空格(此类控制序列后面的空格始终会被忽略)。在垂直模式下,行尾的空格通常会被忽略。但您的情况并非如此,在您的示例中,TeX 处于水平模式。
第一行末尾有\\
。此处插入空格,因为它不是多字母控制序列。但宏\\
会扩展为\hfil\break
,并且空格在此之后被忽略为可丢弃项\break
。
第二行有一个\vrule
宽度为零的不可见项。该行以 结尾}
,即在不可见项后插入空格。这是您要删除的空格。典型的解决方案是%
在行尾添加 。
第三行与第一行类似,后面的空格\\
被删除,作为后面的可丢弃项\break
。第四行与第二行类似,插入不可见项后结束行的空格。