避免在破折号和下一个单词之间换行

避免在破折号和下一个单词之间换行

我正在用西班牙语写一篇文章,我在破折号(作用类似于括号)之间写了一个短语。问题是,如果“开头”的破折号太靠近行尾,那么可能会发生这种情况:破折号仍留在该行中,但下一个单词会落到下一行:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam a leo quis 
libero ---accumsan vulputate---. Praesent pretium dapibus est interdum 
hendrerit.

糟糕的结果

在这个例子中,我需要让开头的破折号和它的下一个单词在同一行,如下所示:

好结果

我必须使用

\mbox{---accumsan}

有没有一种简单的方法可以让 LaTeX 不将开头的破折号与其下一个单词打断,也不将结尾的破折号与其前一个单词打断?

答案1

由于您用西班牙语写作,因此您肯定会使用spanish选项babel。如果是这种情况,那么您可以使用简写"+--来避免可能的换行。举个小例子:

\documentclass{article}
\usepackage[spanish]{babel}

\begin{document}

%wrong output:
\noindent Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam a leo quis 
 ---accumsan vulputate---. Praesent pretium dapibus est interdum 
hendrerit.

%right output:
\noindent Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam a leo quis 
 "+--accumsan vulputate"+--. Praesent pretium dapibus est interdum 
hendrerit.

\end{document}

在此处输入图片描述

另一个选项是使用包\nobreakdash实现的命令amsmath;此命令会抑制破折号(或连字符)后的任何换行符。当然,如果您要大量使用它,您可以定义一个新命令来简化书写。在下面的例子中,我使用定义了两个命令\nobreakdash:第一个变体将阻止破折号后面的单词的连字符;第二个变体将允许以下单词的正常连字符:

\documentclass{article}
\usepackage{amsmath}

\newcommand\RayaN{\nobreakdash---}
\newcommand\Rayan{\nobreakdash---\hspace{0pt}}

\begin{document}

\noindent Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam a leo quis 
 ---accumsan vulputate---. Praesent pretium dapibus est interdum 
hendrerit.

\noindent Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam a leo quis 
 \RayaN accumsan vulputate\RayaN. Praesent pretium dapibus est interdum 
hendrerit.

\noindent Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam a leo quis 
 \Rayan accumsan vulputate\Rayan. Praesent pretium dapibus est interdum 
hendrerit.

\end{document}​

在此处输入图片描述

答案2

您可以设置\exhyphenpenalty=10000。此后,连字符类位置(由---或生成的)---将无法被破坏。

优点:只需在文档开始时进行一次设置。您无需更改文档的标记。

缺点:紧随其后的单词---没有连字符。如果这带来问题,您可以通过 在该单词中明确插入连字符点\-

相关内容