Ячейки, охватывающие строки или столбцы
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, рассмотрите возможность реструктуризации таблицы.