据我所知,该命令\<space>
用于创建一个小的空白。但是,当你把它放在一行代码的末尾时,它似乎表现得很奇怪;有时空格是创造,有时它不是。 进一步来说,
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
有时有空格,有时没有,而
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
从来没有。请参见以下代码:
\documentclass[12pt]{article}
\setlength{\parindent}{0pt}
\begin{document}
\hrule
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
\hrule
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
\hrule
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
\hrule
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
\hrule
\hrule
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
\hrule
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
\hrule
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
\hrule
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p
\
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p\
\hrule
\end{document}
由此产生了如下图片:
显然,字母每次的对齐方式并不相同,并且有时似乎会出现多余的空白。
我想知道为什么会发生这种情况以及何时发生。谢谢。
答案1
空间的折叠发生在早期扫描人物因为它们是在标记化之前从文件中读取的。它不适用于标记(这就是为什么您经常需要%
在宏中防止多余的空白标记)。因此,\
在排版过程中添加了一个与空格标记非常相似的标记。比较
\documentclass{article}
\begin{document}
a b
a \ b
a { }b
\end{document}
第一行只有一个空格标记(因为第二个空格字符从未被标记过)。第二行有一个空格标记和一个\
原始 csname 标记。第三行有两个空格标记。
\<space>
您的示例的另一个方面是,您在示例中没有任何标记,在标记化之前删除了行尾的空格\<newlinechar>
,因此您有\<character 10>
LaTeX 实际上定义了
\def\^^M{\ }
因此\<endofline>
行末的扩展只需一步\<space>
即可产生相同的输出,但如果你以不同的方式定义它,那么你会看到
\documentclass{article}
\let\ =S
\let\^^M=L
\begin{document}
a\ b
\
a\ b\
a b
\
a b%
\
\end{document}
这会产生一个空格标记 a\<space>
并\<newline>
分别显示为空格 S 和 L,并且您可以看到所显示的形式在行尾有两个标记。