
У меня есть таблица для регрессии, которая состоит из двух основных частей («Иммигранты» и «Местные»). Я хотел бы поместить небольшую линию под «Иммигранты», которая идет от начала первой модели («Инвалидность») до конца последней модели («Уровень»), и еще одну линию такой же длины под «Местные». Я намерен лучше разделить две части таблицы. Возможно ли это? Как это сделать? Я добавляю свой код и скриншот. Большое спасибо!
\begin{table}[H]\centering
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\caption{Health}
\begin{tabular}{l*{5}{c}}
\toprule
&\multicolumn{2}{c}{Immigrants} & & \multicolumn{2}{c}{Locals} \\
\addlinespace
&\multicolumn{1}{c}{Disability}&\multicolumn{1}{c}{Offspring survival rate}& & \multicolumn{1}{c}{Disability}&\multicolumn{1}{c}{Offspring survival rate}\\
\midrule
Low & -0.00190 & -0.00525 & & 0.00185 & -0.00186 \\
& (-0.43) & (-0.40) & & (0.83) & (-0.36) \\
\addlinespace
High & -0.00865 & 0.00429 & & -0.00413 & -0.0207\sym{*} \\
& (-1.21) & (0.20) & & (-1.01) & (-2.24) \\
(также, как вы можете заметить, у меня есть дополнительный пустой столбец между ними, чтобы создать больше места)
решение1
Используйте \cline
эквивалент, предложенныйbooktabs
:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}
\centering
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}%
\begin{tabular}{l*{4}{c}}
\toprule
& \multicolumn{2}{c}{Immigrants} & \multicolumn{2}{c}{Non-immigrants} \\
\cmidrule(lr){2-3}\cmidrule(lr){4-5}
& \multicolumn{1}{c}{Disability} & \multicolumn{1}{c}{Offspring survival rate} &
\multicolumn{1}{c}{Disability} & \multicolumn{1}{c}{Offspring survival rate} \\
\midrule
Low & -0.00190 & -0.00525 & 0.00185 & -0.00186 \\
& (-0.43) & (-0.40) & (0.83) & (-0.36) \\
\addlinespace
High & -0.00865 & 0.00429 & -0.00413 & -0.0207\sym{*} \\
& (-1.21) & (0.20) & (-1.01) & (-2.24) \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Theнеобязательный (lr)
аргумент за \cmidrule
обрезку строки с l
левой и r
правой стороны, чтобы они были разделены между третьим и четвертым столбцами.
решение2
Добавьте \cline
команду вместо \midrule
или после первой строки таблицы (в зависимости от того, что вам на самом деле нужно). Например
& \multicolumn{2}{c}{Immigrants} & & \multicolumn{2}{c}{Locals} \\ \cline{2-3} \cline{5-6}
Цифры i-j
в \cline{i-j}
команде указывают столбцы, которые следует «подчеркнуть», т. е. строка начинается со столбца i
и заканчивается столбцом j
.
Редактировать:
Если вы используете booktabs
пакет, используйте эквивалентную команду \cmidrule
, как предлагает @Werner. Однако обратите внимание, что пакет booktabs
изменяет внешний вид таблицы по умолчанию, и некоторые функции исходных таблиц больше не дают удовлетворительных результатов (например, вертикальные правила таблиц). При этом использование booktabs
обычно является лучшим выбором.
решение3
Помимо использования некоторых макросов рисования линий пакета booktabs
для придания таблице «открытого» вида, вам также следует
сделать так, чтобы таблица не превышала ширину текстового блока; это можно сделать, используя
tabularx
среду для вставки переноса строки в строкиOffspring survival rate
выровняйте числовые данные по соответствующим им десятичным маркерам и используйте соответствующие
-
знаки (минус) вместо тире для отрицательных чисел; это можно сделать, загрузивdcolumn
пакет и используяD
типы столбцов.
\documentclass{article}
\usepackage{booktabs,tabularx,dcolumn}
\newcolumntype{d}[1]{D..{#1}}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\mc[1]{\multicolumn{1}{C}{#1}} % shortcut macro
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\begin{document}
\begin{table}
\caption{Health}
\begin{tabularx}{\textwidth}{ l *{4}{d{2.5}} }
\toprule
& \multicolumn{2}{c}{Immigrants} & \multicolumn{2}{c}{Non-immigrants} \\
\cmidrule(lr){2-3}\cmidrule(l){4-5}
& \mc{Disability} & \mc{Offspring survival rate}
& \mc{Disability} & \mc{Offspring survival rate} \\
\midrule
Low &-0.00190 & -0.00525 & 0.00185 & -0.00186 \\
& (-0.43) & (-0.40) & (0.83) & (-0.36) \\
\addlinespace
High & -0.00865 & 0.00429 & -0.00413 & -0.0207\sym{*} \\
& (-1.21) & (0.20) & (-1.01) & (-2.24) \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}