# Allowing line break at ',' in inline math mode?

In the inline math mode ($...$), if the formula is too long, LaTeX will try to break it on operators, e.g.

very long text followed by a very long equation like $a+b+c+d+e+f+g+h+i+j+k+l$ etc


may be rendered as

very long text followed
by a very long equation
like a+b+c+d+e+f+g+h+i+
j+k+l etc


However, the break won't happen if they are separated by commas, e.g.

very long text followed by a very long equation like $a,b,c,d,e,f,g,h,i,j,k,l$ etc


will overflow the page like

very long text followed
by a very long equation
like a,b,c,d,e,f,g,h,i,j,k,l
etc


How to make LaTeX able to insert line breaks after a comma too?

-
I tried breqn but it uses "expl3.sty" which can not be found by Latex ALTHOUGH I downloaded it and put in the same folder where breqn.sty exists! – Ahmad Jan 8 '11 at 22:09
@Ahmad: If you've got a question, then you should ask it in a new post. Please do this with the "Ask Question" link. In your new question you could link to this one. – Hendrik Vogt Jan 8 '11 at 22:09
@Ahmad: Just a note to confirm Hendrik's comment, this ought to be reposted as a question for you to get the best chance of it being answered. – Loop Space Jan 8 '11 at 22:09

If the expression contains many commas then consider to break it into several math expressions, separated by commas. It reads like a list of math expressions. This way TeX can break the line.

To achieve line breaks after a comma, you could insert \allowbreak after the comma and before the next math symbol. If necessary, leave a blank after \allowbreak.

If you would like to have a document wide solution, you could redefine the comma. One solution, following the tip here would be:

\makeatletter
\def\old@comma{,}
\catcode\,=13
\def,{%
\ifmmode%
\old@comma\discretionary{}{}{}%
\else%
\old@comma%
\fi%
}
\makeatother

-
Thanks. My expression is actually a set with 48 elements, so splitting them into several expressions may not sound mathematically logical. I will try \allowbreak. – kennytm Aug 18 '10 at 15:50
+1, excellent answer! However, there's a complication: Please see tex.stackexchange.com/q/19094/1347. – M.S. Dousti May 26 '11 at 9:51
Note that the \allowbreak solution does not work if you have \left...\right delimiters that span the break in your equation – Mosby Jan 7 at 15:45

You could take a look at the breqn package, which is aimed at solving this problem in a general sense.

-
Wow, breqn allows \left and \right to work across line breaks! – Mark Meckes Aug 18 '10 at 17:13
Indeed, amongst other things. The late Michael Downes was a very clever guy! – Joseph Wright Aug 18 '10 at 18:02
For commas, this does not work with all types of atoms. See the discussion here. – Ruben Verborgh Apr 26 '15 at 12:47

Here is a solution that doesn't make the comma globally active:

\documentclass{article}

\newcommand{\splitatcommas}[1]{%
\begingroup
\begingroup\lccode~=, \lowercase{\endgroup
\edef~{\mathchar\the\mathcode, \penalty0 \noexpand\hspace{0pt plus 1em}}%
}\mathcode,="8000 #1%
\endgroup
}

\begin{document}

\setlength{\lineskiplimit}{2pt}\setlength{\lineskip}{3pt} % for this particular case

$\splitatcommas{ \frac{1}{2},\frac{3}{5},\frac{8}{13},\frac{21}{34},\frac{55}{89}, \frac{144}{233},\frac{377}{610},\frac{987}{1597},\frac{2584}{4181}, \frac{6765}{10946},\frac{17711}{28657},\frac{46368}{75025}, \frac{121393}{196418},\frac{317811}{514229},\frac{832040}{1346269}, \frac{2178309}{3524578},\frac{5702887}{9227465}, \frac{14930352}{24157817},\frac{39088169}{63245986},\frac{102334155}{165580141} }$

\end{document}


The setting of \lineskiplimit and \lineskip are for the particular case where fractions are needed in the argument.

-
@Nasser With breqn this is guaranteed not to work. Probably something can be done, I'll work on your problem later. – egreg May 14 at 16:59
Did you manage to find the workaround for breqn? – azetina Jul 13 at 13:51
@azetina I don't consider breqn a usable piece of software. – egreg Jul 13 at 14:15

If you can split the equation into several sub equation using $, and if you are using braces use \left. and \right. (with dot) to balance the braces. Example: $X = \left\{\right.a$,$b$,$c$,$d\left.\right\}\$


X = { a, b, c, d }

This should allow line breaks behind the commas.

-
You might as well just omit \left and \right. Putting the matching brace directly adjacent obviates any point to having scaling braces at all. – Kundor Mar 15 '14 at 18:36
disregarding the pointless \left and \right` commands, ;) it is a quick workaround. – loved.by.Jesus Jun 6 at 10:39