Оформление многостраничных таблиц в LaTeX (пакет longtable)

Почему стандартное окружение tabular не переносится

Стандартное окружение \begin{table} ... \begin{tabular} в LaTeX является неделимым «плавающим объектом» (float). Если число строк в таблице превышает высоту печатного листа, таблица не разрывается, а просто срезается нижним краем страницы и уходит за пределы листа бумаги.

Для создания таблиц произвольной длины (на 2, 5 или 20 страниц) используется специализированный пакет longtable. Он не оборачивается в плавающее окружение table, а вставляется напрямую в текст документа.

Таблица на несколько страниц latex longtable: базовый шаблон

Подключите пакет: \usepackage{longtable}. Полноценная таблица на несколько страниц latex longtable разделяется на четыре служебные зоны заголовков и подвалов:

LaTeX
\begin{longtable}{|c|p{8cm}|r|}
    % 1. Шапка на САМОЙ ПЕРВОЙ странице
    \refstepcounter{table}\label{tab:measurements}
    \multicolumn{3}{l}{Таблица~\thetable{} --- Экспериментальные данные измерений} \\
    \hline
    \textbf{№} & \textbf{Наименование образца} & \textbf{Масса, г} \\
    \hline
    \endfirsthead

    % 2. Шапка на ВСЕХ ПОСЛЕДУЮЩИХ страницах (по ГОСТ)
    \multicolumn{3}{l}{\textit{Продолжение таблицы \ref{tab:measurements}}} \\
    \hline
    \textbf{№} & \textbf{Наименование образца} & \textbf{Масса, г} \\
    \hline
    \endhead

    % 3. Подвал на промежуточных страницах (необязательно: ГОСТ его не требует)
    \hline
    \multicolumn{3}{|r|}{\small Продолжение на следующей странице...} \\
    \hline
    \endfoot

    % 4. Завершающий подвал на последней странице
    \hline
    \endlastfoot

    % ТЕЛО ТАБЛИЦЫ
    1 & Образец кремниевой пластины марки А-1 & 14.52 \\ \hline
    2 & Образец кремниевой пластины марки А-2 & 14.88 \\ \hline
    % ... сотни строк данных ...
\end{longtable}

Специальные блоки шапок и подвалов longtable

Ключевая особенность синтаксиса longtable заключается в предварительном объявлении шапок перед строками данных:

  • \endfirsthead — фиксирует шапку, которая отобразится исключительно в начале таблицы на первом листе.
  • \endhead — дублирует шапку на каждом новом листе, куда продолжается таблица.
  • \endfoot — нижняя строка промежуточных листов.
  • \endlastfoot — финал таблицы (закрывающая горизонтальная черта \hline).

Перенос таблицы на следующий лист latex: подписи по ГОСТ

Российский ГОСТ 7.32-2017 строго регламентирует, как должен выглядеть перенос таблицы на следующий лист latex (подробный разбор правил смотрите в статье о переносе таблицы на следующий лист в дипломе):

  • На первом листе над таблицей пишется полное название: «Таблица 1 — Название».
  • На всех следующих листах перед повторной шапкой слева пишется надпись «Продолжение таблицы 1».
  • Использование связки \multicolumn{N}{l}{\textit{Продолжение таблицы \ref{...}}} в блоке \endhead закрывает строку «Продолжение таблицы». Первую подпись так же набирайте вручную: \caption даёт «Таблица 1:» с двоеточием, а не «Таблица 1 — Название».
  • Подвал «Продолжение на следующей странице…» ГОСТ не требует: добавляйте его, только если об этом просит методичка.

Ширина колонок и переносы строк внутри ячеек

Чтобы текст внутри ячеек автоматически переносился по словам, используйте колонки с фиксированной шириной p{ширина} (например, p{6cm}) вместо стандартных l, c, r (базовые приемы верстки описаны в руководстве по переносу таблиц по ГОСТ).

Для центрирования текста в таких ячейках используйте пакет array с модификатором >{\centering\arraybackslash}p{4cm}.

Практические советы

1

Двойная компиляция для расчета колонок

Движок LaTeX рассчитывает ширину столбцов longtable в два прохода. Если при первой сборке границы колонок «поплыли», запустите компиляцию повторно.

2

Принудительный разрыв страницы

Если нужно разорвать longtable в строго определенном месте до заполнения листа, вставьте команду \pagebreak прямо между строк данных.

Попробуйте прямо сейчас

Работайте со сложными таблицами в Labkeeper

Онлайн-редактор LaTeX с поддержкой longtable и сборкой многостраничных таблиц в PDF.

Другие статьи