I would say

```
\newcommand{\x}[1]{%
{}$% get out of math
\kern-2\mathsurround % in case it's non zero
$% reenter math
\binoppenalty10000 \relpenalty10000 #1% typeset the subformula
{}$% get out of math
\kern-2\mathsurround % in case it's non zero
$% reenter math for the rest of the formula
}
```

TeX breaks formulas only after binary operators or relation symbols, the desirability of such breaks is measured by the two mentioned parameters. However the values used the penalties are those valid at the end of the formula, so simply enclosing `#1`

in `\begingroup...\endgroup`

and setting the values wouldn't do anything.

Of course this can work only if used in suitable places of the formula, for example `$a+\x{b+c}$`

would have the right spacing after the first `+`

(because of the empty subformula); the last empty subformula does nothing.

My opinion is still that bad breaks must be solved with suitably placed `\nobreak`

commands.

Some examples:

```
\documentclass[a4paper,draft]{book}
\newcommand{\x}[1]{{}$\kern-2\mathsurround${}
\binoppenalty10000 \relpenalty10000 #1{}$\kern-2\mathsurround${}}
\begin{document}
\parbox{5cm}{
A formula \(a+\x{c+d}\)\break showing that spaces are right
A new formula \(a+\x{c+d}\) showing that spaces are right
A brand new formula x \(a+\x{c+d}\) showing that spaces are right
A brand new formula xx \(a+\x{c+d}\) showing that spaces are right
A brand new formula xxx \(a+\x{c+d}\) showing that spaces are right
A brand new formula xxxx \(a+\x{c+d}\) showing that spaces are right
Another brand new formula \(a+\x{c+d}\) showing that spaces are right
Right: $\sin(\x{a+b})$
Wrong: $\sin\x{(a+b)}$
\mathsurround=30pt
A formula xxxxxxx \(a+\x{c+d}\) showing mathsurround
A formula xxxxxxx \(a+c+d\) showing mathsurround
}
\end{document}
```

**Addition about usage**

The `\x`

macro (possibly with a more descriptive name) should be used in specific places. Its contents must

(1) start with an ordinary symbol or be preceded by an ordinary symbol;

(2) end with an ordinary symbol or be followed by one.

It doesn't support the style declarations `\displaystyle`

, `\textstyle`

, `\scriptstyle`

, or `\scriptscriptstyle`

; it may make sense to carry a `\displaystyle`

declaration, this might be done with a *-variant.

It doesn't support `\left`

or `\right`

: it's not allowed something like

```
$...\left(\x{a+b}\right)...$
```

but this is not a problem, as no formula can be split at relation or operation symbols between `\left`

and `\right`

and the spaces around these symbols never participates to stretching or shrinking.

If your formular is not too long for a line in the first place, you can use

```
\sloppy
```

in the begining of your paragraph:

```
The lineshape of the imaginary part of the susceptibility
(e.g. $\mathrm{\mathfrak{Im}}\left(\left.\chi_{\phi\phi}\left(\omega\right)\right|_{B=B_{0}}\right)$
or $\mathfrak{Im}\left(\left.\chi_{\phi\phi}\left(B\right)\right|_{\omega=\omega_{0}}\right)$)
for sufficiently small damping and a symmetric excitation measurement
projection ...
```

Produces

Whereas

```
\sloppy The lineshape of the imaginary part of the susceptibility
(e.g. $\mathrm{\mathfrak{Im}}\left(\left.\chi_{\phi\phi}\left(\omega\right)\right|_{B=B_{0}}\right)$
or $\mathfrak{Im}\left(\left.\chi_{\phi\phi}\left(B\right)\right|_{\omega=\omega_{0}}\right)$)
for sufficiently small damping and a symmetric excitation measurement
projection ...
```

Produces

If your formula is too long to fit in a line there are several ways of introducing `\newline`

s within formulas. For instance Allowing line break at ',' in inline math mode?

## Best Answer

Increase the penalty for line breaks at relation symbols and binary operators:

If you simply include these commands in your preamble (between

`\documentclass{...}`

and`\begin{document}`

), it will prevent line breaks in most cases, but in extreme situations, they can still be broken. If you setequations will

neverbe broken - this may, however, destroy your layout!