Таблица Booktabs, многоколоночный заголовок, подчеркивание

Таблица Booktabs, многоколоночный заголовок, подчеркивание

У меня есть таблица для регрессии, которая состоит из двух основных частей («Иммигранты» и «Местные»). Я хотел бы поместить небольшую линию под «Иммигранты», которая идет от начала первой модели («Инвалидность») до конца последней модели («Уровень»), и еще одну линию такой же длины под «Местные». Я намерен лучше разделить две части таблицы. Возможно ли это? Как это сделать? Я добавляю свой код и скриншот. Большое спасибо!

    \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}

Связанный контент