表格布局问题

表格布局问题

我在 LaTeX 中创建 OLS 回归时遇到了一些问题,我真心希望你们中的一些人能够帮助我。我有三个问题:

1) 如何使“Growth 91-92”和“Growth92-93”之间有空格,这样我才能看到它是“Growth”类别的一部分。2) 如何使所有模型(1-5)的列长度相同?3) 如何使第一列比模型列大?

我想创建一个表,如下所示:

在此处输入图片描述 我的序言如下:

\documentclass[a4paper,12pt,oneside]{article}
\usepackage[english]{babel}
\usepackage{tikz}
\usepackage{pgf}
\usetikzlibrary{shapes,arrows,positioning,calc,threeparttable} 
\usepackage{tabu}
\usepackage{hyperref}
\usepackage{longtable}
\usepackage{array}
\usepackage{multirow,tabularx,booktabs}
\begin{document}
\begin{table}[H]
\begin{threeparttable}
\renewcommand\arraystretch{1.0}
\medskip
\renewcommand\tabcolsep{1pt}  
\begin{tabular*}{\textwidth}{ @{} p{2.4cm} 
     @{\extracolsep{\fill}}   
     *{10}{S[table-format=2.6]} @{}}
\toprule
& {Model I} & {Model II} & {Model III} & {Model IV} & {Model V} \\
\emph{Afh.\ var.}
& {All partys} & {All partys} & {Social Democrat} & {Liberal} & {Conservative} \\
\midrule
\emph{Uafh.\ var.} \\
Nationalpol. effects & 
\multicolumn{1}{c}{0,11\sym{***}} & 
\multicolumn{1}{c}{0,22\sym{*}} &  
\multicolumn{1}{c}{0,33\sym{***}} &  
\multicolumn{1}{c}{0,44\sym{*}} &  
\multicolumn{1}{c}{0,55\sym{***}} &   \\
& 
\multicolumn{1}{c}{(0,11)} & 
\multicolumn{1}{c}{(0,22)} & 
\multicolumn{1}{c}{(0,33)} & 
\multicolumn{1}{c}{(0,44)} & 
\multicolumn{1}{c}{(0,55)} &  \\
Economic growth & 
\multicolumn{1}{c}{0,11} & 
\multicolumn{1}{c}{0,22} & 
\multicolumn{1}{c}{0,33\sym{***}} & 
\multicolumn{1}{c}{0,44} & 
\multicolumn{1}{c}{0,55\sym{**}} & \\
&
\multicolumn{1}{c}{(0,11)} & 
\multicolumn{1}{c}{(0,22)} & 
\multicolumn{1}{c}{(0,33)} & 
\multicolumn{1}{c}{(0,44)} & 
\multicolumn{1}{c}{(0,55)} & \\
\cmidrule{1-1}
Adjusted R\textsuperscript{2} & 
\multicolumn{1}{c}{0,11} & 
\multicolumn{1}{c}{0,22} & 
\multicolumn{1}{c}{0,33} & 
\multicolumn{1}{c}{0,44} & 
\multicolumn{1}{c}{0,55} &   \\
N & 
\multicolumn{1}{c}{111} & 
\multicolumn{1}{c}{222} & 
\multicolumn{1}{c}{333} & 
\multicolumn{1}{c}{444} & 
\multicolumn{1}{c}{555} &  \\
\bottomrule
\end{tabular*}
\end{threeparttable}
\end{table}

答案1

我建议您对您的代码做一些修改。

  • 最重要的是,不要将每个数字单元格都放入\multicolumn{1}{c}{...}包装器中。这样做不仅没有必要,而且适得其反:包装器会覆盖您选择的基本列类型的预期格式效果,结果您无法获得任何预期的格式。

  • 看起来您siunitx主要(专门?)使用该包的S表列类型,可能是为了实现小数点标记上的数字对齐。如果这种印象是正确的,我建议您实际使用D该包提供的其他列类型: dcolumn。使用D列类型,处理数字列中出现的括号和符号所需的开销较少。

  • 为了避免回归系数和标准误差线之间出现差距,您可能需要将回归量的名称(在第一列)放在一个小包装器中,以隐藏回归量名称与周围环境相隔两行的事实tabular。在下面的代码中,我为此目的创建了一个宏\narrowtab;您可以随意将其重命名为其他名称。

  • 为了使五个数据列看起来大致等宽,似乎有必要缩写模型 III 和 V 的标签。

恐怕我无法回答您的第一个问题,因为您的示例代码没有提及此事。

在此处输入图片描述

\documentclass[a4paper,12pt,oneside]{article}
\usepackage{threeparttable,dcolumn,caption,amsmath,array,booktabs}
\newcommand{\sym}[1]{{}^{#1}} % correct?
\newcommand\mc[1]{\multicolumn{1}{@{}c@{}}{#1}} % handy shortcut macro
\newcommand\narrowtab[2]{%  %% macro to hide depth of its argument from outer tabular
 \ensuremath{\smash{\begin{tabular}[t]{@{}>{\raggedright\arraybackslash}p{#1}@{}}%
     #2 \end{tabular}}}}
\begin{document}
\begin{table}
\caption{Regression results}
\begin{threeparttable}
%\renewcommand\tabcolsep{1pt}  
\begin{tabular*}{\textwidth}{@{} p{1in} @{\extracolsep{\fill}} *{5}{D{,}{,}{2.4}} @{}}
\toprule
& \mc{Model I} & \mc{Model II} & \mc{Model III} & \mc{Model IV} & \mc{Model V} \\
\emph{Afh.\ var.}
& \mc{All partys} & \mc{All partys} & \mc{Soc.\ Dem.} & \mc{Liberal} & \mc{Cons.} \\
\midrule
\emph{Uafh.\ var.} \\
\narrowtab{1in}{Nationalpol.\ effects} & 
0,11\sym{***} & 0,22\sym{*} & 0,33\sym{***} & 0,44\sym{*} & 0,55\sym{***} \\
& (0,11) & (0,22) & (0,33) & (0,44) & (0,55) \\
\addlinespace
\narrowtab{1in}{Economic growth} & 
0,11 & 0,22 & 0,33\sym{***} & 0,44 & 0,55\sym{**}\\
& (0,11) & (0,22) & (0,33) & (0,44) & (0,55) \\
\cmidrule{1-1}
Adjusted R\textsuperscript{2} & 
0,11 & 0,22 & 0,33 & 0,44 & 0,55  \\
N & \mc{111} & \mc{222} & \mc{333} & \mc{444} & \mc{555} \\
\bottomrule
\end{tabular*}
\end{threeparttable}
\end{table}

\end{document}

相关内容