我知道反斜杠会在句点后产生正常大小的空格i.e.\ like this
,并且我知道波浪号会产生不间断的空格,就像 一样Figure~1
。
如果我想在句子中间的缩写句号后添加一个不间断的空格,例如 when ,该怎么办referring to Eq.\~1
?
到目前为止,我只是在这种情况下使用~
,但我注意到偶尔在等式和 1 之间存在句间空格。
答案1
这表明,问题不在于句号看起来像句子的结尾,而在于~
虽然没有中断,但却是可拉伸。如果您不想让它拉伸,可以将其放在 中\mbox
,或者改用\kern
。当然,从 中删除拉伸~
只会使线条其余部分的对齐变得更加困难。
在第一个例子中,~
略微压缩。在第二个例子中,它被完全扩展。在第三个例子中,我使用 来\kern
防止拉伸,在第四个例子中,我使用 来\mbox
防止拉伸。
\documentclass{article}
\textwidth1in
\begin{document}
xxxxxx Fig.~1 xxxxxxx
\sloppy
xxxx Fig.~1 xxxxxxx
xxxx Fig.\kern.75ex1 xxxxxxx
xxxx \mbox{Fig.~1} xxxxxxx
\end{document}
另一个选择是重新定义~
为不同的延伸,例如\renewcommand~{\nobreak\hspace{.75ex minus .5ex}}
。在这种情况下,经过这种改变的上述 MWE 变为
补充
为了回答 OP 关于该序列是否.~
可以产生句末间距或仅仅是可拉伸空间的评论,此 MWE 表明它是后者。请注意,\@
克服了.
我们看到,其行为与后面跟一个空格.~
相同。.\@~
.
\documentclass{article}
\begin{document}
x. z
x.~z
x.\@~z
\end{document}
答案2
本质上,~
是的简写\nobreakspace{}
,\nobreakspace
定义为
% latex.ltx, line 1614:
\DeclareRobustCommand{\nobreakspace}{%
\leavevmode\nobreak\ }
反过来,\nobreak
与\penalty10000
;相同,\leavevmode
用于确保惩罚以水平模式发出,从而阻止在该位置发生任何换行。 由\␣
(反斜杠空格) 插入的粘连(空格)不能用作换行点,因为它前面有一个惩罚,而惩罚是可丢弃的。
TeXbook 第 285 页规定
\␣
。控制空间命令将粘连附加到当前列表,使用的空间量与空间因子为 1000 时 ⟨space token⟩ 插入的空间量相同。
因此,不会插入任何额外的空格,与前一个字符的空格因子代码无关。
因此,就插入空格量而言和是等效的;后者不允许在和之间Eq.\ 1
换行。Eq.~1
Eq.
1
然而,单词间的粘连通常是灵活的(可拉伸和收缩),并且会按照与同一行中所有其他空格相同的系数进行调整以进行对齐。