首页 > 解决方案 > 仅对乳胶中的某些列进行分组

问题描述

我想做这样的事情:

在此处输入图像描述

它有两个标题:我已经完成了上面的标题,但现在我只想为某些列添加一个较低的标题。有没有办法在乳胶中添加这样的标题?

我的尝试:

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

标签: latex

解决方案


下面使用eqparbox来设置每个数字的整数和小数部分包裹在一个\fmtnum

在此处输入图像描述

\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 列)。

上面的代码需要至少 2 次编译,每次更改数字的整数或小数部分的最大宽度。


您可以使用以下方法简化输入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}

推荐阅读