![如何保持文本连贯](https://linux22.com/image/303539/%E5%A6%82%E4%BD%95%E4%BF%9D%E6%8C%81%E6%96%87%E6%9C%AC%E8%BF%9E%E8%B4%AF.png)
我目前正在创建各种宏来格式化文本。现在我想将某些信息放在一起。似乎有两种方法可以实现这一点:
- 使用如下的框
mbox
- 使用
~
将事物放在一起
应该优先选择哪种方法?
答案1
这取决于您的应用程序。
如果您使用
\mbox
,则禁止使用连字符,并且单词间距是固定的,可能与周围文本不同。如果您将其用于单个单词,则间距没有差异,但使用多个单词,则可能会有差异(可能不可见,但仍然如此)。如果使用
~
,则单词间距不会改变且灵活,并且单词可能会在连字点处断开,但不会出现在单词间距处。
让我们看一些例子(当然很极端,但仍然如此)。文本的各部分都已用颜色编码以突出显示任何更改:
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\noindent\textbf{Default paragraph:}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at ultrices
quam, condimentum varius leo. Morbi dignissim ut felis id molestie. Pellentesque
\textcolor{green}{convallis quam lacus, sit amet sodales mauris posuere nec}. Fusce \textcolor{red}{something}
porttitor vehicula. Pellentesque maximus nunc fermentum eleifend fermentum.
Phasellus dolor nisl, suscipit vitae leo a, iaculis sollicitudin diam.
Curabitur a consectetur libero. Duis laoreet lacus turpis, ac
\textcolor{blue}{pharetra justo venenatis} quis.
\bigskip
\noindent{\bfseries \verb|\mbox| paragraph:}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at ultrices
quam, condimentum varius leo. Morbi dignissim ut felis id molestie. Pellentesque
\mbox{\textcolor{green}{convallis quam lacus, sit amet sodales mauris posuere nec}}. Fusce \textcolor{red}{something}
porttitor vehicula. Pellentesque maximus nunc fermentum eleifend fermentum.
Phasellus dolor nisl, suscipit vitae leo a, iaculis sollicitudin diam.
Curabitur a consectetur libero. Duis laoreet lacus turpis, ac
\mbox{\textcolor{blue}{pharetra justo venenatis}} quis.
\bigskip
\noindent{\bfseries \verb|~| paragraph:}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at ultrices
quam, condimentum varius leo. Morbi dignissim ut felis id molestie. Pellentesque
\textcolor{green}{convallis~quam~lacus,~sit~amet~sodales~mauris~posuere~nec}. Fusce \textcolor{red}{something}
porttitor vehicula. Pellentesque maximus nunc fermentum eleifend fermentum.
Phasellus dolor nisl, suscipit vitae leo a, iaculis sollicitudin diam.
Curabitur a consectetur libero. Duis laoreet lacus turpis, ac
\textcolor{blue}{pharetra~justo~venenatis} quis.
\end{document}
something
在默认的和段落中, (红色) 是未断开的(未使用连字符)~
,因为换行算法认为这样做是最佳的。然而,在段落中\mbox
, (绿色) 的间距convallis ... nec
改变了段落布局,使得断开 成为“更理想的做法” some-thing
。单词间距无法扩大,无法something
滚动到下一行。此外,它无法缩小到足以使其适合同一行(如果可能的话)。
pharetra ... venenatis
(蓝色)在使用 时允许在单词中间断行~
,但\mbox
严格避免这种情况。在这两种情况下,您都可能遇到行过满(或行不足)的问题,因为您禁止了某种形式的自然断行。这就是示例中发生的情况,因为段落\mbox
可以将单词间空间扩展得足够宽,使pharetra ... venenatis
滚动到下一行。对于~
段落,唯一最佳的断行点是ve-nenatis
,但它仍然溢出到边距中。
答案2
我想说,这得看情况。
我~
经常使用它来指导多行标题和标题中的换行,以及类似的参考fig.~1
(它也会产生常规的单词间空间而不是句末空间)。但它不能防止单词的连字符,也不能防止空间拉伸或收缩。
如果我有一个短语,其中必须防止使用连字符,并且“默认”间距很重要,那么就需要一个框。