Як я можу мати перерви в рядках у своїх довгих рівняннях LaTeX?


135

Моє рівняння дуже довге. Як змусити його продовжувати роботу в наступному рядку, а не переходити зі сторінки?


Я б запитав, чи справді ти хочеш це зробити. Багаторядкові рівняння прочитати буде дуже важко. Чи можна розбити своє рівняння на кілька (коротших) рівнянь?
pkaeding

Відповіді:


135

Якщо ваше рівняння не вміщується в одному рядку, то multlineнавколишнє середовище, ймовірно, саме те, що вам потрібно:

\begin{multline}
    first part of the equation \\
    = second part of the equation
\end{multline}

Якщо вам також потрібне певне вирівнювання щодо першої частини, ви можете використовувати split:

\begin{equation}
    \begin{split}
        first part &= second part #1 \\
        &= second part #2
    \end{split}
\end{equation}

Для обох середовищ потрібен amsmathпакет.

Дивіться також, alignedяк зазначено у відповіді нижче .


На мій досвід, не може бути нового рядка в середовищі
багаторядкових

10

Не налаштовуючи математичне середовище на кліп, ви можете примусити новий рядок з двома зворотніми косою рисою в такій послідовності:

Bla Bla \\ Bla Bla in another line

Проблема в цьому полягає в тому, що вам потрібно буде визначити, де лінія, ймовірно, закінчиться, і змусити завжди там переривати лінію. З рівняннями, а не з текстом, я віддаю перевагу цьому ручному способу.

Ви також можете використати \\*для запобігання запуску нової сторінки.


5

Є кілька способів впоратися з цим. По-перше, і, мабуть, найкраще - переробити своє рівняння, щоб воно не так довго було; це, ймовірно, нечитабельно, якщо це так довго.

Якщо це так, перегляньте Посібник з короткої математики AMS, щоб ознайомитись із способами впоратися. (на другій сторінці)

Особисто я б використовував середовище вирівнювання, щоб можна було точно контролювати злам і вирівнювання. напр

\begin{align*}
   x&+y+\dots+\dots+x_100000000\\
   &+x_100000001+\dots+\dots
\end{align*}

який вирівнював би перші плюсові знаки кожного рядка ... але очевидно, ви можете встановити вирівнювання там, де вам подобається.


Для чого корисне середовище вирівнювання * щодо середовища вирівнювання (порівняно з зірочкою)?
Йоханнес

1
зірочка повідомляє йому опускати числа для рядків рівняння.
TJ Ellis

5

Ще не згаданий тут, ще одним вибором є оточення aligned, знову ж таки з пакету amsmath:

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\begin{equation}
  \begin{aligned}
    A & = B + C\\
      & = D + E + F\\
      & = G
  \end{aligned}
\end{equation}

\end{document}

4

Я думаю, що зазвичай я використовував eqnarray або щось подібне. Це дозволяє вам сказати

\begin{eqnarray*}
    x &=& blah blah blah \\ 
      & & more blah blah blah \\
      & & even more blah blah
\end{eqnarray*}

і це буде вирівняно & & ... Як згадував pkaeding, важко читати, але коли у вас так довго буде рівняння, важко буде читати незалежно від того, що ... (* робить це не мають рівняння рівня, IIRC)


3
fyi AMS рекомендує не використовувати середовища eqnarray, оскільки вони "створюють невідповідний інтервал знаків рівності і не роблять спроб запобігти надрукуванню тіла рівняння та числа рівняння". - насправді не застосовується тут, але добре знати; хороша обстановка може узгодити більшість таких обставин.
TJ Ellis

Чи є спосіб зробити це рівняння також рівнянням? Якщо я вставляю мітку, я можу посилатися на неї за номером, але вона не надрукована в правій частині рівняння.
henrikstroem


3

multlineнайкраще використовувати. Натомість ви можете використовувати dmath,split як добре.

Ось приклад:

\begin{multline}
  {\text {\bf \emph {T(u)}}} ={  \alpha *}{\frac{\sum_{i=1}^{\text{\bf \emph {I(u)}}}{{\text{\bf \emph {S(u,i)}}}* {\text {\bf \emph {Cr(P(u,i))}}} * {\text {\bf \emph {TF(u,i)}}}}}{\text {\bf \emph {I(u)}}}}  \\
   +{  \beta *}{\frac{\sum_{i=1}^{\text{\bf \emph {$I_h$(u)}}}{{\text{\bf \emph {S(u,i)}}}* {\text {\bf \emph {Cr(P(u,i))}}} * {\text {\bf \emph {TF(u,i)}}}}}{\text {\bf \emph {$I_h$(u)}}}}
\end{multline}

2

Використовуйте eqnarrayі\nonumber

приклад:

\begin{eqnarray}
    sample = R(s,\pi(s),s') + \gamma V^{\pi} (s') \nonumber \\
    \label{eq:temporal-difference}
     V^{\pi}_{k+1}(s) = (1-\alpha)V^{\pi}(s) - \alpha[sample]
\end{eqnarray}

2

Це працювало для мене під час використання mathtoolsпакету.

\documentclass{article}
\usepackage{mathtools}
\begin{document}
    \begin{equation}
        \begin{multlined}
            first term \\
            second term                 
        \end{multlined}
    \end{equation}
\end{document}

1

ПРОСТИЙ ВІДПОВІСТЬ ТУТ

\begin{equation}
\begin{split}

equation \\
here

\end{split}
\end{equation}

Це те, що працювало найкраще для мене. Ключовою була функція {split}.
Хізер Клакстон

0

Щоб вирішити цю проблему, я використав середовище масиву всередині середовища рівняння таким чином:

\begin{equation}
    \begin{array}{r c l}
       first Term&=&Second Term\\
                 &=&Third Term
    \end{array}
\end{equation}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.