Ячейки, охватывающие строки или столбцы

multicolumn, multirow, cmidrule под сгруппированными заголовками.

Ячейки, охватывающие строки или столбцы

В реальных таблицах часто требуются объединенные ячейки. Заголовок типа «Оценки», расположенный над двумя столбцами показателей, охватывает столбцы, а имя модели, которое применяется к двум строкам результатов, охватывает строки. LaTeX обрабатывает два направления с помощью разных инструментов: \multicolumn встроен, а \multirow взят из одноименного пакета. Вот компактная таблица, в которой используются оба правила, а также частичное правило из booktabs:

\usepackage{multirow,booktabs}
\begin{tabular}{lcc}
\toprule
& \multicolumn{2}{c}{Scores} \\
\cmidrule(lr){2-3}
Model & Acc & F1 \\
\midrule
\multirow{2}{*}{Ours} & 0.9 & 0.88 \\
& 0.91 & 0.89 \\
\bottomrule
\end{tabular}

Объединение столбцов

\multicolumn{2}{c}{Scores} заменяет две обычные ячейки одной. Первый аргумент — это количество столбцов, которые необходимо поглотить, второй — это спецификация столбца только для этой ячейки, здесь «c» означает центрирование, а третий — это содержимое. Обратите внимание на одинокий & перед ним: первый столбец этой строки намеренно пуст, поэтому “Оценки” начинаются со столбца 2 и охватывают столбцы 2 и 3. Поскольку второй аргумент локально переопределяет тип столбца, \multicolumn{1}{c}{...} также является стандартным приемом для центрирования одной ячейки заголовка над столбцом с выравниванием по левому краю.

Частичное правило

\cmidrule(lr){2-3} рисует горизонтальную линейку только под столбцами со 2 по 3, что визуально связывает сгруппированный заголовок с его столбцами. Опция (lr) слегка обрезает правило на левом и правом концах, поэтому соседние \cmidrule не соприкасаются и не читаются как отдельные маркеры группы. Это команда booktabs, и обрезка — одна из деталей, благодаря которой эти таблицы выглядят как напечатанные, а не нарисованные. Полный стиль трех правил описан в таблицах трех правил.

Объединение строк

\multirow{2}{*}{Ours} печатает слово «Ours» вертикально по центру двух строк. Первый аргумент — это количество строк, второй — ширина ячейки, где * означает естественную ширину содержимого, а третий — само содержимое. Команда резервирует только визуальное пространство, поэтому вторая строка по-прежнему должна содержать пустую первую ячейку, поэтому следующая строка начинается с пустого &. Забывая, что пустая ячейка смещает каждое значение в строке на один столбец влево, а сообщение об ошибке несовпадения указывает на неверную строку, поэтому сначала проверьте строку после \multirow.

Практический предел

Объединенные ячейки лучше всего хранить в заголовках и коротких группах строк. Таблицу, в которой ячейки данных располагаются в обоих направлениях, трудно читать и сложнее поддерживать, поскольку каждая добавленная строка заставляет пересчитывать интервалы. Если вы обнаружите, что вкладываете \multirow внутрь \multicolumn, рассмотрите возможность реструктуризации таблицы.

Вернуться к Флоат-хирургия