LaTeX:如何防止一段文本中出现换行?

199
我该如何防止LaTeX在我的\texttt{...}\url{...}文本区域插入换行符?这些区域内没有空格可用~替换,它只会在符号处断开。 更新:我不想导致行溢出,我更希望LaTeX在这些区域之前插入换行符,而不是在里面插入。
5个回答

204

\mbox是最简单的方法。关于更新:

TeX宁愿在一行中添加过长的行而不是在单词之间添加太多空格;我认为这样做的想法是你会注意到延伸到边缘的行(以及它在这些行后插入的黑色框),并有机会修订内容,而如果有太多空间,你可能不会注意到它。

使用\sloppy\begin{sloppypar}...\end{sloppypar}来调整这种行为,至少可以稍微改善。另一种可能性是\raggedright(或\begin{raggedright}...\end{raggedright})。


103

将其用\mbox{}包围起来。


8
如果 LaTeX 检测到区域将溢出当前行,这会促使它在该区域前插入一个换行符吗? - rampion
3
不行。hypenat宏包中的\nohyphens{}命令也许可以做到。 - Michiel Buddingh
2
谢谢您的建议。我刚刚尝试了\nohyphens{\url{...}},但它仍然允许换行。 - rampion

40

此外,如果您在常规文本中有两个连续的单词,并且您想避免它们之间出现换行符,您可以使用~字符。

例如:

As we can see in Fig.~\ref{BlaBla}, there is nothing interesting to see. A~better place..

这可以确保您没有以数字编号(不包括“图”部分)或大写字母A开头的行。


18
请注意,~是一个非断行的“空格”字符,也就是说,它还会插入一个空格(有时候人们希望防止换行而不插入空格)。 - sdaau

31

18

定义 myurl 命令:


\def\myurl{\hfil\penalty 100 \hfilneg \hbox}

I don't want to cause line overflows, 
I'd just rather LaTeX insert linebreaks before 
\myurl{\tt https://dev59.com/PHNA5IYBdhLWcg3wUMDn 
regions rather than inside them.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接