我的设置:web2cTeX (TeX Live)。
考虑这两个文件,它们应该产生相同的输出。---
file1.tex---
\centerline{ab}\ %
cd
\bye
--- 文件2.tex ---
\centerline{ab} %
cd
\bye
两个文件的“dvitype”输出有何不同:
...
[ab]
134: pop
level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
-135: y3 786432 v:=655360+786432=1441792, vv:=91
-139: y0 786432 v:=1441792+786432=2228224, vv:=141
-140: push
-level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
-141: right3 1310720 h:=0+1310720=1310720, hh:=83
-145: setchar99 h:=1310720+291271=1601991, hh:=101
-146: setchar100 h:=1601991+364090=1966081, hh:=124
+135: down3 786432 v:=655360+786432=1441792, vv:=91
+139: push
+level 1:(h=0,v=1441792,w=0,x=0,y=0,z=0,hh=0,vv=91)
+140: right3 1310720 h:=0+1310720=1310720, hh:=83
+144: setchar99 h:=1310720+291271=1601991, hh:=101
+145: setchar100 h:=1601991+364090=1966081, hh:=124
[ cd]
...
两个 dvi 文件的大小相同 - 224 字节。
据我所知,块后的空格不应被忽略,但显然它被忽略了(在这种特定情况下)。我不明白为什么。
答案1
这两个输入肯定不是应该会产生同样的结果。
由于\centerline{ab}
扩展到\hbox to \hsize{\hss #1\hss}
它并不会使您脱离垂直模式(ab
在受限的水平模式下排版之后)。
该命令\⍽
(控制空格)是一个水平命令,因此它以一个段落开始,该段落以空白行结束;粘连将被删除\par
。
因此我们有(忽略细节)
<centered box with ab>
<parskip glue>
<indent box>
<parskip glue>
<indent box>cd
在第二个例子中,后面的空格标记\centerline{ab}
出现在垂直模式下,而垂直模式下的空格标记会被忽略。所以我们有
<centered box with ab>
<parskip glue>
<indent box>cd
因为它只是c
一个段落的开头。