在哪里可以找到有关如何使用该\nolinebreak
命令的文档?
这LaTeX2e 作者指南在latex-project.org从未提及\nolinebreak
这源代码指南指出这\nolinebreak
是通过将其输入参数乘以penalty
(-1) 并将结果传递给 来实现的\nopagebreak
。
我还没有找到有关如何使用该命令的文档。
答案1
这LaTeX2e 源未能强调这一点,\linebreak
并\nolinebreak
处理水平的列出输出,而\pagebreak
和\nopagebreak
处理垂直的列表输出。只是提到了类似。
\linebreak
以下是来自的代码latex.ltx
:
\def\linebreak{\@testopt{\@no@lnbk-}4}
\def\nolinebreak{\@testopt\@no@lnbk4}
\def\@no@lnbk #1[#2]{%
\ifvmode
\@nolnerr
\else
\@tempskipa\lastskip
\unskip
\penalty #1\@getpen{#2}%
\ifdim\@tempskipa>\z@
\hskip\@tempskipa
\ignorespaces
\fi
\fi}
由此我们可以看出,\linebreak
和都是内部\nolinebreak
调用的。调用会导致的第一个参数为负数,而不会提供第一个参数(或将其留空)。实际上,相当于。\@no@lnbk
\linebreak
\@no@lnbk
-
\nolinebreak
\nolinebreak
\linebreak[4]
在内部\@no@lnbk
,我们会进行测试,以确保你不会v
垂直mode
(\ifvmode
)。如果您处于垂直模式,\linebreak
则会\nolinebreak
导致错误(\@nolnerr
或“这里没有结束的行。”)。以下示例复制了此失败:
\documentclass{article}
\begin{document}
Lorem ipsum
\linebreak
\end{document}
如果您未处于垂直模式,则会last
skip
存储、撤消(\unskip
)并\penalty
插入。惩罚可以增加或减少页面上设置的“不良程度”。插入负惩罚(使用时\linebreak
)会降低不良程度,从而鼓励出现断点,而正惩罚(使用时\nolinebreak
)会增加不良程度,从而阻止出现断点。
一旦插入了惩罚,原来的跳过将被替换(并且代码中插入的后续空格将被忽略(\ignorespaces
)。必须在跳过之前插入惩罚,以避免出现视觉上奇怪的断点。
\linebreak
相当于\linebreak[4]
,而
\linebreak[0]
插入\penalty -0
(非必需);\linebreak[1]
插入\penalty -\@lowpenalty
(\penalty -51
);\linebreak[2]
插入\penalty -\@medpenalty
(\penalty -151
);\linebreak[3]
插入\penalty -\@highpenalty
(\penalty -301
);和\linebreak[4]
插入\penalty -\@M
(\penalty -10000
)\nolinebreak
插入\penalty \@M
(\penalty 10000
)
答案2
参见第 9.8 节,texdoc latex2e
。在线版本latexref.xyz。如果你对这个主题感兴趣penalty
,你可以阅读 TeX 相关的书籍,例如TeXbook和TeX 按主题分类。
答案3
您可以在 LaTeX 手册或 LaTeX 配套软件中找到命令描述。
摘自 LaTeX 手册(第 95 页):
~
尽管通常使用和\mbox
命令(如第 2.1.1 节中所述)来防止不必要的换行,但 LaTeX 还提供了一个\nolinebreak
命令,禁止 TeX 在该位置换行。与命令一样\linebreak
,\nolinebreak
将数字从0
到4
作为可选参数,将禁止转换为建议,即此处不适合换行 - 数字越大,建议越强烈。命令\nolinebreak[0]
相当于\linebreak[0]
,并且\nolinebreak[4]
相当于\nolinebreak
。
在第213页:
\linebreak[
數量]
\nolinebreak[
數量]
该\linebreak
命令鼓励或\nolinebreak
阻止换行,具体数量取决于數量0
,这是一个从到 的数字4
。[…]