如何在数学中加入换行符

min*_*ang 15 latex

我想表达以下句子(source_location也是斜体,它没有正确呈现):

每个条目都具有元组的列表:< 源位置,R/W,trip_counter,发生,杀死(在后面说明)>

我目前的解决方法是:

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

我正在使用双柱纸.这个<..>太长了,但没有换行,因为它是一个数学.在这种情况下如何自动(或手动)设置换行符?看来,\left\langle\right\rangle应在单一的数学.所以,很难闯入多个数学.

$<$并且$>$会是另一种选择,但我不喜欢它.

Wil*_*son 21

LaTeX确实允许内联数学默认分解行,但是有许多限制.具体来说,在您的情况下,使用\left...\right将所有内容置于不可分解的数学组中,因此第一步是将它们替换为plain \langle...\rangle或者也许\bigl\langle...\bigr\rangle.

但是,这还不足以允许断线; 通常情况下,只有在关系或操作符之后才允许,而不是逗号等标点符号.(我认为这是正在发生的事情;我还没有停下来查看它.)所以你想通过\linebreak[1]在每个逗号后写一下来指出允许换行的位置.

根据您必须执行此操作的频率,最好编写一个命令将"元组"包装成一个很好的命令.为了在你的来源中写这个:

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

这里的定义\mytuple考虑了以上所有因素:

\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


Rob*_*man 5

为什么不定义一个新命令:

\newcommand{\tuple}[5]{$\langle$\textit{#1}, \textit{#2}, \textit{#3}, \textit{#4},
   \textit{#5} (explained in the latter)$\rangle$}
Run Code Online (Sandbox Code Playgroud)

然后用 \tuple{sourcelocation}{R/W}{tripcounter}{occurrence}{killed}