5

I have a small section of text—no more than 15 or 30 characters—that is split up into a few words. I'd like to add a penalty to breaking in this section, but I don't want to completely bar it and risk a truly awful paragraph. How can I effect this?

I have some text and \DiscourageBreak{some text that \emph{shouldn't} be broken.}

I looked at a list of penalties available on this site, but I didn't see one that seemed appropriate.

7

Not robust, in the sense that it can't go in the argument to another command; the space is made active and defined to issue a high penalty and a space. A space following a penalty can't be taken as a line break point, only the penalty can, so this discourages breaks. Probably you want to disallow hyphenation, which can be easily done by adding \language=\l@nohyphenation in the definition of \DiscourageBreak.

\documentclass{article}

\makeatletter
\newcommand{\DiscourageBreak}{%
  \begingroup\obeyspaces\sean@penalizespace
  \sean@discouragebreak
}
\newcommand{\sean@discouragebreak}[1]{#1\endgroup}
\newcommand{\sean@penalizespace}{%
  \begingroup\lccode`\~=`\ %
  \lowercase{\endgroup\def~}{\penalty9000 \space}%
}
\makeatother

\begin{document}

I have some text and some other text and again.
I have some text and \DiscourageBreak{some text that \emph{shouldn't} be broken.}
What about the breaks?

I have some text and some other text and again.
I have some text and some text that \emph{shouldn't} be broken.
What about the breaks?

\end{document}

enter image description here

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.