How to put line break in a math

latex

I'd like to express the following sentence (source_location is also italic, it's not correctly rendered):

Each entry has a list of tuple: < source_location, R/W, trip_counter, occurrence, killed (explained in the later) >

My current workaround for this is:

$ \left\langle
\textit{source\_location}, \textit{R/W}, \textit{trip\_counter},
\textit{occurrence}, \textit{killed} \text{(explained in the later)}
\right\rangle $

I'm using 2-column paper. This < .. > is too long, but no line break because it is a math. How do I automatically (or manually) put line break in such case? It seems that \left\langle and \right\rangle should be in a single math. So, hard to break into multiple maths.

$<$ and $>$ would be an alternative, but I don't like it.

Best Answer

LaTeX does allow inline maths to break over lines by default, but there are a number of restrictions. Specifically, in your case, using \left...\right puts everything inside a non-breakable math group, so the first step is to replace them with either just plain \langle...\rangle or perhaps \bigl\langle...\bigr\rangle.

However, this still isn't enough to permit linebreaking; usually that's still only allowed after relations or operators, not punctuation such as the comma. (I think this is what's going on anyway; I haven't stopped to look this up.) So you want indicate where allowable line breaks may occur by writing \linebreak[1] after each comma.

Depending how often you have to do this, it may be preferable to write a command to wrap your "tuples" into a nice command. In order to write this in your source:

$ \mytuple{ source\_location, R/W, trip\_counter, occurrence,
    killed\upshape (explained in the later) } $

here's a definition of \mytuple that takes all of the above into account:

\makeatletter
\newcommand\mytuple[1]{%
  \@tempcnta=0
  \bigl\langle
  \@for\@ii:=#1\do{%
    \@insertbreakingcomma
    \textit{\@ii}
  }%
  \bigr\rangle
}
\def\@insertbreakingcomma{%
  \ifnum \@tempcnta = 0 \else\,,\ \linebreak[1] \fi
  \advance\@tempcnta\@ne
}
\makeatother