Как поставить разрыв строки в математике - PullRequest
15 голосов
/ 10 ноября 2009

Я хотел бы выразить следующее предложение (source_location также выделено курсивом, оно неправильно отображается):

Каждая запись имеет список кортежей: <<em> source_location , R / W , trip_counter , вхождение , kill (поясняется позже)>

Мой текущий способ решения этой проблемы:

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

Я использую 2-колоночную бумагу. Это <..> слишком длинное, но без перевода строки, потому что это математика. Как автоматически (или вручную) поставить разрыв строки в таком случае? Кажется, что \left\langle и \right\rangle должны быть в одной математике. Таким образом, трудно разбить на несколько математику.

$<$ и $>$ будет альтернативой, но мне это не нравится.

Ответы [ 5 ]

21 голосов
/ 10 ноября 2009

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
5 голосов
/ 10 ноября 2009

Почему бы не определить новую команду:

\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}

1 голос
/ 10 ноября 2009

Похоже, есть пакет , который решает эту проблему и называется breqn. Вы можете попробовать это и сообщить нам (я не использовал это).

0 голосов
/ 29 ноября 2010

Используйте \ linebreak внутри математического выражения везде, где вы хотите новую строку даже между 2 скобками. Это приведет к разрыву линии.

0 голосов
/ 10 ноября 2009

Я бы использовал окружение * от AMSmath. Кроме того, вы можете просто добавить "\", чтобы разбить строки? Должен работать и в математической среде. В качестве альтернативы вы можете разделить уравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...