Перенос строки в уравнении LaTeX: split, aligned, align и multline
Чтобы перенести уравнение LaTeX на новую строку, подключите amsmath и выберите многострочное окружение. Для одной формулы с выравниванием и общим номером используйте equation со split, для отдельных номеров строк — align, для длинной формулы без общей точки выравнивания — multline. Один лишь \\ в обычном equation не создаёт нужную многострочную запись.
Код подходит для локальных TeX Live и MiKTeX и для EasyLaTeX. В примерах используются article, pdfLaTeX и английский текст, поэтому настройка кириллицы не требуется. В существующей статье сохраните её класс и движок, перенося только нужные фрагменты формул.
Полный пример для компиляции
Сохраните документ как main.tex. Квадратичная ошибка и два регуляризационных слагаемых размещены на двух строках с одним номером.
\documentclass[a4paper,11pt]{article}\usepackage{amsmath}\begin{document}\begin{equation}\begin{split}J(w) &= \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2 \\ &\quad + \lambda w^2 + \mu(w-w_0)^2.\end{split}\label{eq:objective}\end{equation}See Equation~\eqref{eq:objective}.\end{document}Здесь n — положительное целое число; w, w_0, x_i, y_i — вещественные; \lambda и \mu неотрицательны. Вторая строка продолжает сложение. & задаёт точку выравнивания, \\ разделяет строки. Обычный перевод строки в исходнике сам по себе не переносит формулу в PDF.
Выбор по выравниванию и нумерации
Схема выбора: сначала определите число номеров, затем необходимость выравнивания. Линии обозначают математическое содержимое.
| Задача | Окружение | Нумерация и размещение |
|---|---|---|
| Одна длинная формула с выравниванием | equation + split | Один номер от внешнего окружения |
| Блок выравнивания внутри большого выражения | aligned | В математическом режиме; номер задаётся снаружи |
| Отдельные номера у формул или шагов | align | По умолчанию номер каждой строки; самостоятельное окружение |
| Длинная формула без общей точки выравнивания | multline | Один номер; самостоятельное окружение |
| Без номеров | align*, multline* или aligned внутри \[...\] | По нужному способу выравнивания |
В этих примерах split использует один & на строку и занимает всю выключную формулу. aligned поддерживает несколько пар столбцов и сочетание с внешними скобками. Оба окружения требуют явно выбрать места переноса.
split и aligned: один номер на блок
Полный пример использует split. Та же целевая функция с aligned выглядит так. Последующие фрагменты вставляются в тело существующего документа.
\begin{equation}\begin{aligned}J(w) &= \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2 \\ &\quad + \lambda w^2 + \mu(w-w_0)^2.\end{aligned}\label{eq:aligned}\end{equation}Само aligned не нумерует формулы: внутри equation блок получает один номер, внутри \[...\] — ни одного. Нумерация определяется внешним окружением, без aligned* или split*.
Соответствие исходника и вёрстки. D(w) обозначает ошибку на данных, R(w) — сумму двух регуляризационных слагаемых; отмечены выравнивание и перенос.
\quad добавляет отступ. Чтобы сохранить интервал бинарного оператора у плюса в начале строки, можно написать &\quad {}+ .... Повторяющиеся пробелы в исходнике не выравнивают строки.
align: отдельные ссылки на функцию и производную
При дифференцировании по w величины x_i, y_i, w_0, \lambda, \mu считаются постоянными.
\begin{align}J(w) &= \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2 + \lambda w^2 + \mu(w-w_0)^2 \label{eq:loss} \\J'(w) &= \frac{2}{n}\sum_{i=1}^{n}x_i(w x_i-y_i) + 2\lambda w + 2\mu(w-w_0). \label{eq:gradient}\end{align}Ссылайтесь через \eqref{eq:loss} и \eqref{eq:gradient}. Здесь каждая строка — отдельное равенство. Не добавляйте знак равенства перед строкой, которая лишь продолжает сумму.
align* убирает все номера. Для отдельных ненумеруемых строк используйте \notag:
\begin{align}(x+1)^2 &= x^2+2x+1 \notag \\ &= x(x+2)+1. \label{eq:expansion}\end{align}Метка относится к строке с номером. Если ссылка показывает ??, локально повторите компиляцию и проверьте дублирующиеся метки. На платформе дождитесь завершения текущей задачи.
multline: перенос без точки выравнивания
Та же функция записывается без &:
\begin{multline}J(w) = \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2 \\ + \lambda w^2 + \mu(w-w_0)^2.\label{eq:multline}\end{multline}При стандартной правой нумерации этого примера первая строка смещена влево, последняя вправо, с небольшими отступами от краёв. Промежуточные строки центрируются, номер расположен в последней. Класс и параметры amsmath могут менять размещение. Для записи без номера используйте multline*; не вкладывайте его в equation или \[...\].
Если перенос не работает
| Симптом или сообщение | Что проверить |
|---|---|
Environment align undefined | Подключить amsmath в преамбуле главного файла, проверить локальную установку |
\\ не переносит строку в equation | Добавить split или aligned либо использовать самостоятельные align или multline |
Erroneous nesting of equation structures | Найти align внутри equation |
Misplaced alignment tab character & | Использовать & в окружении выравнивания, но не в multline |
Ошибка скобок или Missing \right. | Проверить, не разделены ли \left и \right переносом |
| PDF создан, но формула выходит за край | Изменить перенос, проверить Overfull \hbox и PDF |
Неверное вложение:
% Incorrect nesting\begin{equation}\begin{align}a &= b \\ &= c\end{align}\end{equation}Для одного номера исправьте его так:
\begin{equation}\begin{split}a &= b \\ &= c\end{split}\end{equation}Нельзя связывать \left( и \right) через границу строк выравнивания. Подойдут скобки фиксированного размера:
\[\begin{aligned}F(x) &= \Bigl(a+b+c \\ &\qquad +d+e\Bigr).\end{aligned}\]Здесь a–e — слагаемые. Не вставляйте пустые абзацы в математические окружения; в последней строке дополнительный \\ обычно не нужен.
Двухколоночная статья: сократите каждую строку
Доступная ширина равна ширине одной колонки. Отдельные обозначения для ошибки и регуляризации сохраняют целевую функцию и сокращают строки:
\begin{equation}\begin{split}J(w) &= D(w)+R(w), \\D(w) &= \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2, \\R(w) &= \lambda w^2+\mu(w-w_0)^2.\end{split}\label{eq:compact}\end{equation}Проверьте ширину, номера и скобки в настоящем шаблоне подачи. Предпочитайте осмысленные математические переносы уменьшению всей формулы через \resizebox. Для формул на две колонки соблюдайте инструкции издателя.
Проверка локально и в EasyLaTeX
Схема компиляции. Оба пути заканчиваются проверкой полей и номеров в актуальном PDF.
Локально сохраните полный пример как main.tex и выполните команду дважды в его каталоге, чтобы обновить ссылку. При сборке кнопкой редактора проверьте корневой файл и движок.
pdflatex -interaction=nonstopmode -halt-on-error main.texСначала исправьте первую ошибку в main.log, затем проверьте предупреждения о выходе за границы. В новом main.pdf должны быть две полные строки, один номер и ссылка в скобках без ??. При отличии от онлайн-результата сравните класс, движок, версии пакетов и ширину колонки.
В пустом тестовом проекте EasyLaTeX создайте main.tex, выберите его главным файлом в верхнем списке и укажите pdfLaTeX в настройках редактора. Запустите компиляцию и дождитесь текущей задачи. В существующей статье сохраните главный файл, движок и шаблон. Выбор компилятора хранится для каждого пользователя проекта отдельно, поэтому соавторам нужно проверить собственные настройки.
Проверьте PDF. При ошибках откройте Bug, затем Original Log. Кнопка AI Fix может запустить запрос к Agent. В Chat & Agent можно задать точные ограничения:
Разбей текущую целевую функцию на две строки с одним номером и прежней меткой. Сохрани все слагаемые, коэффициенты, скобки и знаки. Проверь главный файл и пакеты, измени только соответствующий блок формулы, скомпилируй и сообщи об оставшихся ошибках или выходах за границы.
Просмотрите изменения исходника и результат текущей компиляции. Видимый старый PDF не подтверждает успешность последней сборки. Сравните слагаемые с исходной формулой, затем скачайте PDF или LaTeX-проект для подачи или дальнейшей локальной работы.
См. также: многострочные формулы, нумерация и ссылки, начало работы в EasyLaTeX, ошибки компиляции.