Неразрывный дефис в Plain TeX

Неразрывный дефис в Plain TeX

Я задаю тот же вопрос, что и в этом посте:

Как набрать неразрывный дефис (тире, символ «-») в научных или технических документах

но я не хочу использовать никакой пакет (просто чтобы понять, как это можно сделать в Plain TeX, используя только примитивы языка).

\mbox{non-linear}
non\mbox{-}linear

предотвратит переносы

Как насчет:

non-\nobreak linear

Я не знаю, как проверить возможные точки останова в TeX.

решение1

Ваше предлагаемое использование \nobreakне предотвращает разрыв, как можно увидеть


\vbox{\hsize=1pt
a
non-\nobreak linear
}

\bye

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

Первые два предложения \mboxне являются простым TeX, но если вы \hboxих используете, это предотвратит разрыв.


\vbox{\hsize=1pt
a
\hbox{non-linear}
non\hbox{-}linear
}

\bye

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

решение2

С помощью non-\nobreak linearвы не запрещаете перенос строки после дефиса, если только вы не укажете \exhyphenpenalty=10000и \nobreakэто излишне.

\vbox{\hsize=0pt \parindent=0pt
  \hskip0pt non-\nobreak linear
}
\vbox{\hsize=0pt \parindent=0pt \exhyphenpenalty=10000
  \hskip0pt non-linear
}
\bye

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

С другой стороны, установка \exhyphenpenaltyзначения 10000кажется слишком радикальной, и вы все равно не получите переносов в оставшейся части слова.

\def\nbh{%
  \leavevmode % one never knows
  \hbox{-}% this won't allow a line break
  \nobreak % no line break here
  \hskip0pt % allow hyphenation on the rest of the word
}

\vbox{\hsize=0pt \parindent=0pt
  \hskip0pt
  non\nbh linear
}

\bye

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

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