Сгруппируйте только несколько столбцов в латексе - PullRequest
0 голосов
/ 25 мая 2020

Я хочу сделать что-то вроде этого:

enter image description here

У него два заголовка: верхний, с которым я закончил, но теперь я хочу добавляйте нижний заголовок только для некоторых столбцов. Есть ли способ добавить такой заголовок в латексе?

Моя попытка:

\begin{tabular}{lcccccccc}\hline \hline
 & Whole world & Base sample & Whole world & Base sample & Whole world & Base sample & Whole world & Base sample \\
 & (1) & (2) & (3) & (4) & (5) & (6) & (7) & (8) \\ \hline \\
 &  &  &  &  &  &  &  &  & \\
\multicolumn{6}{c}{Dependent variable is log GDP per capita in 1995 } \\
 &  &  &  &  &  &  &  &  \\

1 Ответ

1 голос
/ 25 мая 2020

В следующем примере используется пакет eqparbox для установки целой и десятичной части каждого числа, заключенного в \fmtnum

enter image description here

\documentclass{article}

\usepackage{booktabs,makecell,eqparbox}

\newcommand{\mc}{\multicolumn{1}{c}}

\makeatletter
\newcommand{\fmtnum}[1]{\@fmtnum#1\relax}
\def\@fmtnum#1.#2\relax{\eqmakebox[int][r]{$#1.$}\eqmakebox[dec][l]{$#2$}}
\makeatother

\begin{document}

\noindent
\begin{tabular}{ *{8}{c} }
  \toprule
  \makecell{Whole \\ world \\ (1)} &
    \makecell{Base \\ sample \\ (2)} &
    \makecell{Whole \\ world \\ (3)} &
    \makecell{Base \\ sample \\ (4)} &
    \makecell{Whole \\ world \\ (5)} &
    \makecell{Base \\ sample \\ (6)} &
    \makecell{Whole \\ world \\ (7)} &
    \makecell{Base \\ sample \\ (8)} \\
  \midrule
  \multicolumn{6}{c}{\small Dependent variable is log GDP per capita in 1995} &
    \multicolumn{2}{c}{\small \makecell[b]{Dependent variable \\ is log output per \\ worker in 1998}} \\
  \cmidrule(lr){1-6}\cmidrule{7-8}
  \fmtnum{ 0.54 } & \fmtnum{ 0.52 } & \fmtnum{ 0.47 } & \fmtnum{ 0.43 } & \fmtnum{ 0.47 } & \fmtnum{ 0.41 } & \fmtnum{ 0.45 } & \fmtnum{ 0.46 } \\
  \fmtnum{(0.04)} & \fmtnum{(0.06)} & \fmtnum{(0.06)} & \fmtnum{(0.05)} & \fmtnum{(0.06)} & \fmtnum{(0.06)} & \fmtnum{(0.04)} & \fmtnum{(0.06)} \\
  \addlinespace
                  &                 & \fmtnum{ 0.89 } & \fmtnum{ 0.37 } & \fmtnum{ 1.60 } & \fmtnum{ 0.92 }                                     \\
                  &                 & \fmtnum{(0.49)} & \fmtnum{(0.51)} & \fmtnum{(0.70)} & \fmtnum{(0.63)}                                     \\
                  &                 &                 & \fmtnum{-0.62 } &                 & \fmtnum{-0.60 }                                     \\
                  &                 &                 & \fmtnum{(0.19)} &                 & \fmtnum{(0.23)}                                     \\
                  &                 &                 & \fmtnum{-1.00 } &                 & \fmtnum{-0.90 }                                     \\
                  &                 &                 & \fmtnum{(0.15)} &                 & \fmtnum{(0.17)}                                     \\
                  &                 &                 & \fmtnum{-0.25 } &                 & \fmtnum{-0.04 }                                     \\
                  &                 &                 & \fmtnum{(0.20)} &                 & \fmtnum{(0.32)}                                     \\
  \fmtnum{ 0.62 } & \fmtnum{ 0.54 } & \fmtnum{ 0.63 } & \fmtnum{ 0.73 } & \fmtnum{ 0.56 } & \fmtnum{ 0.69 } & \fmtnum{ 0.55 } & \fmtnum{ 0.49 } \\
     \mc{110}     &     \mc{64}     &    \mc{110}     &    \mc{110}     &     \mc{64}     &     \mc{64}     &    \mc{108}     &    \mc{61}      \\
  \bottomrule
\end{tabular}

\end{document}

Хотя это немного громоздко, в таблице очень мало единообразия, со смесью десятичных значений, использующих круглые скобки и отрицательные числа, чисел без десятичных частей, а также более широких заголовков чем составляющие их столбцы (столбцы 7-8).

Приведенный выше код требует как минимум двух компиляций с каждым изменением максимальной ширины целой или десятичной части числа.


Вы можно немного упростить ввод, используя collcell:

\documentclass{article}

\usepackage{booktabs,makecell,eqparbox,collcell}

\newcommand{\mc}{\multicolumn{1}{c}}

\makeatletter
\newcommand{\fmtnum}[1]{\if\relax\detokenize{#1}\relax\else\@fmtnum#1\relax\fi}
\def\@fmtnum#1.#2\relax{\eqmakebox[int][r]{$#1.$}\eqmakebox[dec][l]{$#2$}}
\makeatother

\begin{document}

\noindent
\begin{tabular}{ *{8}{>{\collectcell\fmtnum}c<{\endcollectcell}} }
  \toprule
  \mc{\makecell{Whole \\ world \\ (1)}} &
    \mc{\makecell{Base \\ sample \\ (2)}} &
    \mc{\makecell{Whole \\ world \\ (3)}} &
    \mc{\makecell{Base \\ sample \\ (4)}} &
    \mc{\makecell{Whole \\ world \\ (5)}} &
    \mc{\makecell{Base \\ sample \\ (6)}} &
    \mc{\makecell{Whole \\ world \\ (7)}} &
    \mc{\makecell{Base \\ sample \\ (8)}} \\
  \midrule
  \multicolumn{6}{c}{\small Dependent variable is log GDP per capita in 1995} &
    \multicolumn{2}{c}{\small \makecell[b]{Dependent variable \\ is log output per \\ worker in 1998}} \\
  \cmidrule(lr){1-6}\cmidrule{7-8}
    0.54   &   0.52   &   0.47   &   0.43   &   0.47   &   0.41   &   0.45   &   0.46   \\
   (0.04)  &  (0.06)  &  (0.06)  &  (0.05)  &  (0.06)  &  (0.06)  &  (0.04)  &  (0.06)  \\
  \addlinespace
           &          &   0.89   &   0.37   &   1.60   &   0.92                         \\
           &          &  (0.49)  &  (0.51)  &  (0.70)  &  (0.63)                        \\
           &          &          &  -0.62   &          &  -0.60                         \\
           &          &          &  (0.19)  &          &  (0.23)                        \\
           &          &          &  -1.00   &          &  -0.90                         \\
           &          &          &  (0.15)  &          &  (0.17)                        \\
           &          &          &  -0.25   &          &  -0.04                         \\
           &          &          &  (0.20)  &          &  (0.32)                        \\
    0.62   &   0.54   &   0.63   &   0.73   &   0.56   &   0.69   &   0.55   &   0.49   \\
  \mc{110} &  \mc{64} & \mc{110} & \mc{110} &  \mc{64} &  \mc{64} & \mc{108} &  \mc{61} \\
  \bottomrule
\end{tabular}

\end{document}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...