Подавление переносов слов, которые уже содержат дефис

Подавление переносов слов, которые уже содержат дефис

Согласно принятому ответуэтот вопросTeX никогда не делает переносов в словах, которые уже содержат дефис. Тем не менее, в документе здесь я обнаружил, что слово «Modula-2» написано через дефис, как показано на следующем изображении (сгенерированном с помощьюэтот файлс использованием XeLaTeX, версия 3.1415926-2.4-0.9998 (MiKTeX 2.9 64-бит)).

\documentclass[10pt]{article}
\begin{document}
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum Modula-2
  nisi urna, congue sed congue id, iaculis et lacus.
\end{document}

Нежелательные переносы

Видимо, я не могу использовать, \hyphenationчтобы предотвратить это; но слово появляется несколько раз, поэтому я не хочу использовать \mboxни то, ни другое. Есть ли лучшее решение?

решение1

Под непереносом дефисных слов подразумевается не добавлениеболеедефисы. То, что вы хотите предотвратить, это разрыв строки на существующем дефисе, для которого вам просто нужно

   \exhyphenpenalty=10000

в преамбуле установить бесконечное наказание за разрыв в явном дефисе

введите описание изображения здесь

решение2

Ответ Дэвида показывает, как глобально подавить перенос после явного дефиса (т. е. для каждого слова с явным дефисом).

Часто требуется подавить взлом только в определенных случаях, и для этого есть два подхода:

\mbox{Modula-2}

работает без какого-либо пакета.

ngerman.sty или опция ngerman для пакета babel содержат изящную аббревиатуру для неразрывного дефиса:

Modula"~2

где "~ определяется как

\leavevmode\hbox{-}

Связанный контент