我想表达以下句子(source_location也是斜体,它没有正确呈现):
每个条目都有一个元组列表:< 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 $
我正在使用双柱纸。这个< ..>太长了,但没有换行,因为它是一个数学。在这种情况下如何自动(或手动)设置换行符?似乎\left\langle
和\right\rangle
应该在一个数学中。所以,很难打破多个数学。
$<$
和$>$
可以替代,但我不喜欢它。
答案 0 :(得分:21)
LaTeX确实允许内联数学在默认情况下分解行,但是存在许多限制。具体来说,在您的情况下,使用\left...\right
将所有内容放在不可分解的数学组中,因此第一步是将它们替换为普通\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
答案 1 :(得分:5)
为什么不定义新命令:
\newcommand{\tuple}[5]{$\langle$\textit{#1}, \textit{#2}, \textit{#3}, \textit{#4},
\textit{#5} (explained in the latter)$\rangle$}
然后使用\tuple{sourcelocation}{R/W}{tripcounter}{occurrence}{killed}
答案 2 :(得分:1)
好像有package that addresses that problem, called breqn
。你可以尝试这个并告诉我们(我没有用过)。
答案 3 :(得分:0)
我将使用AMSmath的align *环境。此外你可以添加“\”来打破线条?也应该在数学环境中工作。或者,您可以将方程式分开。
答案 4 :(得分:-2)
在数学表达式中使用\ linebreak,无论您希望在2个括号之间有新行。这将强制破坏该行。