Проблема в том, что в LaTeX автоматическую замену
на
при переносе можно сделать только для текста, но не для формул. В пакете rmathbr есть команда \cdott, которая именно так и работает: выходит из математического режима, делает "правильный" перенос, и начинает математический режим заново. Очевидно, что с выделенными формулами такой трюк не сработает.
Можно использовать команду \*, которая обозначает "пустое" умножение, которое при переносе заменяется на
. Для большинства физико-математических текстов этого достаточно
Я тут еще немного поигрался с breqn и пришел к такому коду:
\makeatletter
\exhyphenpenalty=\relpenalty
\relpenalty=13131
\binoppenalty=14141
\def\rel@break#1#2#3{%
#1#2{#3}%
\penalty-\@M%
\mkern\eq@binoffset%
#1#2{#3}
}
\def\bin@break#1#2#3{%
\ifnum\lastpenalty=\z@%
\discretionary{\hbox{$\m@th\displaystyle#1#2{#3}$}}{}{}%
\penalty\binoppenalty%
\fi%
\EQ@prebin@space%
#1#2{#3}%
}
\def\*{%
\setbox\z@
\hbox{\mathsurround\z@$\mkern\eq@binoffset$}
\mathchoice{%
\discretionary{\hbox{$\m@th\displaystyle\times$}}{\hbox{\kern\the\wd\z@$\m@th\displaystyle\times$}}{}%
}{%
\discretionary{\hbox{$\m@th\textstyle\times$}}{\hbox{$\m@th\textstyle\times$}}{}%
}{%
\discretionary{\hbox{$\m@th\scriptstyle\times$}}{\hbox{$\m@th\scriptstyle\times$}}{}%
}{%
\discretionary{\hbox{$\m@th\scriptscriptstyle\times$}}{\hbox{$\m@th\scriptscriptstyle\times$}}{}%
}%
\thinspace%
\penalty\binoppenalty%
}
\makeatother
Т.е. отношения всегда разбивают формулу на строки, а бинарные операции - "по ситуации". Не идеально, но это, видимо, лучшее, чего можно достичь.