我正在用西班牙语写一篇文章,我在破折号(作用类似于括号)之间写了一个短语。问题是,如果“开头”的破折号太靠近行尾,那么可能会发生这种情况:破折号仍留在该行中,但下一个单词会落到下一行:
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
。此后,连字符类位置(由-
或--
或生成的)---
将无法被破坏。
优点:只需在文档开始时进行一次设置。您无需更改文档的标记。
缺点:紧随其后的单词---
没有连字符。如果这带来问题,您可以通过 在该单词中明确插入连字符点\-
。