如何防止 LaTeX 断行?

如何防止 LaTeX 断行?

如何防止 LaTeX 在短语中添加换行符?

我可以用"~以及带有不间断空格的空格,但我正在寻找一种更通用的解决方案,以防我需要此类短语中的其他字符。

答案1

告诉 TeX 不要在长短语中换行几乎肯定会产生不好的换行,导致行数过满或不足。不过,这里有一个可行的办法。

\usepackage[italian]{babel}

\def\phrase{\begin{otherlanguage*}{nohyphenation}%
  \dononbreakablespace
  \dononbreakablehyphen
  \dophrase}
\def\dophrase#1{#1\end{otherlanguage*}}

{\catcode`\ =\active
\gdef\dononbreakablespace{\catcode`\ =\active\def {\nobreakspace}}}
{\catcode`\-=\active
\gdef\dononbreakablehyphen{\catcode`-=\active\def-{\nobreakhyphen}}}
\def\nobreakhyphen{\hbox{-}\nobreak}

以下是一个例子:

Testo per vedere se gli spazi sono uniformi \phrase{anche in una %
\emph{phrase} che non deve essere spezzata neanche dove-si-potrebbe %
ma solo dopo}, quando finisce.

如果你还需要短破折号或长破折号,那就更复杂了。巴别塔我们可以使用它的nohyphenation功能。它很方便但不是必需的,因为可以用不同的方式达到相同的效果。

定义如下。

  1. 该宏\phrase将仅具有一个“用户级参数”,它实际上是的参数\dophrase;的目的\phrase是打开一个组并进行一些初始化,特别是抑制连字符。

  2. \dophrase读取参数并关闭otherlanguage*环境,这样所有其他任务也将被撤消。

  3. \donobreakablespace激活空格并将其转换为\nobreakspace。请参阅下面的注释。

  4. \donobreakablehyphen激活连字符,以便排版一个“被屏蔽”的连字符,并且不会成为允许的断点。

\phrase注意。在(实际上是\dophrase)连续空间的论证中将不会简化为一个,将不会在输入行的开头被忽略。此外,输入中的换行符将是 TeX 可接受的断点。使用%(以空格开头) 屏蔽它们。

如果使用巴别塔不是一个选择,人们可以做一些改变

\def\phrase{\begingroup\phrasenohyphen
  \dononbreakablespace
  \dononbreakablehyphen
  \dophrase}
\makeatletter
\def\phrasenohyphen{%
  \language\@ifundefined{l@nohyphenation}{\@cclv}{\l@nohyphenation}}
\makeatother
\def\dophrase#1{#1\endgroup}

其他宏可以相同。“无连字符”功能可通过明确选择“无连字符”伪语言获得,或者,如果未定义(在某些旧发行版中可能如此),则选择\language255可能未定义(因此 TeX 将使用一组空的连字符规则)。

答案2

\mbox命令完成该工作。

相关内容