据说适用不同的标点符号规则,请参阅https://www.lcps.org/cms/lib/VA01000195/Centricity/Domain/1695/Punctuation%20Rules%20Table.pdf LaTeX 能自动帮我们处理这个问题吗,比如为不同的标点符号留出适当的空间?
答案1
TeX 有一种复杂的方法来处理这些实际上非常过时的建议,因为它们指的是打字机。在实际排版中,“两个空格”的概念并不适用,因为存在对齐问题。
无论如何,TeX 实现了“空间因子”。每个字符都有一个“空间因子代码”,TeX 以一种有趣的方式维护“当前空间因子”。当一个框被初始化时,当前空间因子从 1000 开始。
如果当前空间因子为F以及具有空间因素的字符G则当前空间因子将变为G除非F小于 1000,此时当前空间因子变为 1000。如果G为 0。
空间因子的标准设置为
- 小写字母为 1000
- 999 为大写字母
- 0 为
)
]
'
- 3000 为
.
?
!
- 2000 年
:
- 1500 为
;
- 1250 为
,
另一个重要规则是,\
(反斜杠空格)将空间因子重置为 1000。当前空间因子也可以手动设置\spacefactor=
X(在哪里X是 0 至 32767 之间的整数(包括 0 和 32767)。
这个空间因子是如何使用的?当 TeX 排版一行时,它会查看每个空格前面的空间因子。单词间空间有一个拉伸分量和一个收缩分量;然后拉伸分量乘以F/1000,并将收缩组件缩小 1000/F。 如果F(严格来说)大于 2000,则需要额外的空间(额外空间) 被添加。
间距大小取决于字体。对于 10pt 的标准 Computer Modern 字体,单词间距为3.33333pt plus 1.66666pt minus 1.11111pt
,并带有1.11111pt
额外间距。因此,如果一行不拉伸或收缩(不太可能,但这只是举例),则文本如
A. Uthor 写的论文很棒!她在她的领域很有名。够了。
除感叹号和第二句号,其值为 4.44444pt。这是因为第一个句号后的空间因子为 1000,A
空间因子代码为 999。
那类似的东西
一个著名的航天机构是 NASA。它很大。
句号后面的空格数“错误”了?使用 LaTeX,你只需输入
NASA\@.
因为\@
代表\spacefactor=1000
,也就是将当前空间因子代码设置为 1000 ,因此句号会将其后的空隙因子更新为 3000 。
这是否符合“两倍空格”的规定可能存在争议,但这些陈旧而不精确的建议肯定是有争议的。别担心:发布这些规则的人不知道如何查看排版页面(而不是打字页面)。
最后说明:如果您发出\frenchspacing
命令,那么所有空间因子代码都将设置为 1000(嗯,事实并非如此,但大致如此)。