尝试复制学术论文中的表格

尝试复制学术论文中的表格

我有这张表:

在此处输入图片描述

我正在尝试复制类似下表的内容:

在此处输入图片描述

我希望复制的主要内容是(i)如何将文本非常整齐地附加到表格的顶部和底部(ii)表格的宽度与页面上的文本完全相同(iii)列的宽度(列之间的空间)似乎已自动加宽以填满页面宽度。

我的表格代码如下:

\documentclass[a4paper,11pt]{article}
\begin{document}

\begin{table}[h]
\begin{center} {\footnotesize
\begin{tabular}{lccc}
\hline
 & \multicolumn{3}{c}{AFC Window 1}  \\
 & \multicolumn{1}{c}{gmt} & \multicolumn{1}{c}{jfk} & \multicolumn{1}{c}{fbi}\\
\hline
& $0.025^*$ & -0.002 & $1.155^*$ \\[-2ex]
\raisebox{2ex}{Constant} & (1.22) & (2.22) & (0.56)\\[0ex]
& $0.025^*$ & -0.002 & $1.155^*$ \\[-2ex]
\raisebox{2ex}{Constant} & (1.22) & (2.22) & (0.56)\\[0ex]
& $0.025^*$ & -0.002 & $1.155^*$ \\[-2ex]
\raisebox{2ex}{Log(assets)$^a$} & (1.22) & (2.22) & (0.56)\\[0ex]
\hline
\end{tabular} }
\end{center}
\caption{\footnotesize Number of turns and distance between top and bottom.}
\label{turns}
\end{table}

\end{document}

我真的不知道该怎么办。

答案1

如何将文本非常整齐地附加到表格的顶部和底部?

可能是通过将表的内容放置在minipage宽度的环境中\textwidth

表格的宽度与页面上的文本宽度完全相同

可能使用tabular*环境,并将其第一个参数设置为\textwidth

列宽(列之间的空间)似乎已自动加宽以填满页面宽度。

该论证的第二个论点tabular*大概是这样设置的:

@{}l@{\extracolsep{\fill}}...@{}  
% the @{} items suppress whitespace before first and after the last column
% the @{\extracolsep{\fill}} item inserts "\fill" between columns

将这两个元素放在一起,你可以发出命令

\begin{tabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}...@{}`

启动tabular*环境。请注意,.此处使用的列类型需要通过加载dcolumn包并发出命令来定义

\newcolumntype{.}{D{.}{.}{-1}}

在序言中。-1指示dcolumn尝试自己提出最佳布局。要微调布局,通常最好通过定义名为的新列类型来明确指定小数位数(即小数点右边的位数)d

\newcolumntype{d}[1]{D{.}{.}{#1}}

该参数表示小数点后需要保留空间的位数。

最后,为了模拟表格标题的外观(在表格编号和标题文本之间有一个换行符),您可以加载包caption并发出命令

\captionsetup{labelsep=newline,singlelinecheck=false}

在您的文档的序言中。


附录:将所有这些放在一起会产生以下 MWE,它会生成您感兴趣的表。首先,请注意以下几点:

  • 没有必要\centering为此表指定类似的内容,因为表占据了文本块的整个宽度。

  • “十进制”列中的材料(即由基于 - 的说明符生成的材料)在 TeX 的数学模式中自动排版。这与排版凸起星号的宏dcolumn相关。\ast

  • 我已将 4 指定为三列d(“小数对齐”)的参数,因为星号占用了一个额外的空格。(因此,如果您有三位数和星号,您可以分配5给要留出的数字的数量dcolumn,等等)

  • 我还使用了包提供的\toprule\midrule和命令来代替命令;这些命令提供了更好的垂直间距。\bottomrulebooktabs\hline\...rule\hline

那么,这就是 MWE。

在此处输入图片描述

\documentclass[a4paper,11pt]{article}
\usepackage{booktabs,dcolumn,caption}
\captionsetup{labelsep=newline,
              singlelinecheck=false,
              skip=0.333\baselineskip}
\newcolumntype{d}[1]{D{.}{.}{#1}} % "decimal" column type
\renewcommand{\ast}{{}^{\textstyle *}} % for raised "asterisks"
\begin{document}
\begin{table}[h]
\setlength\tabcolsep{0pt} % let LaTeX figure out amount of inter-column whitespace
\caption{Number of turns and distance between top and bottom.}
\label{turns}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} l *{3}{d{2.4}} }
\toprule
 & \multicolumn{3}{c}{AFC Window 1} \\
 & \multicolumn{1}{c}{gmt} & \multicolumn{1}{c}{jfk} & \multicolumn{1}{c}{fbi}\\
\midrule
Constant      & 0.025\ast & -0.002 & 1.155\ast \\
              & (1.22)    & (2.22) & (0.56)\\
Constant      & 0.025\ast & -0.002 & 1.155\ast \\
              & (1.22)    & (2.22) & (0.56)\\
Log(assets)\textsuperscript{a} 
              & 0.025\ast & -0.002 & 1.155\ast \\
              & (1.22)    & (2.22) & (0.56)\\
\bottomrule
\end{tabular*}
\end{table}
\end{document}

答案2

除了@egreg建议使用booktabs和之外siunitx,您还可以使用tabu来替代tabular。我还会使用\centering而不是\begin{center},因为后者在其周围添加了垂直空白,这可能是不想要的。

tabu环境要求您使用一X列(会自动缩放以适应指定的宽度。由于S列类型只能是类型c,因此您可以使用David的\extracolsep来增加列前的空间S

编辑:对于表格下方的文本,您可以将其作为另一个multicolumn横跨整个表格的文本。在这种情况下,您不必使用来\bottomrule作为最后一行,而是必须使用 来\midrule减少\bottomrule其后的间距。要使其看起来像底线,您需要添加宽度\midrule[\heavyrulewidth]。也不是多列的定义,我在其中添加了@{}前后,这样文本的两侧就没有任何边距。

正如@Mico 所建议的,可以使用 caption 包来实现字幕样式

修改 2:之前输入括号内数字的版本略有缺陷。这个问题提供正确的方法。源代码和预览已更新。请注意,您可能需要较新版本的软件包siunitx才能使其工作。

编辑 3:我意识到,在定义列类型时,也可以使用语法来设置S要定义的列。这样就可以摆脱根据内容进行调整的问题。我为第一列的大小添加了一个 2 倍的系数,因为它更接近原始表格。不过需要注意的是,使用此方法,现在最右边的列右侧有填充。XX[c]{S[<siunitx option]}}Y@{\extracolsep[]}X

\documentclass[a4paper,11pt]{article}

\usepackage{tabu}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{caption}

\captionsetup{labelsep=newline,singlelinecheck=false}

\begin{document}

\begin{table}[h]
\centering
\footnotesize
\caption{\footnotesize Number of turns and distance between top and bottom.}
\label{turns}
\newcolumntype Y{X[c]{S[per-mode=symbol,
table-align-text-pre=false,
table-align-text-post=false,
input-symbols=,
input-open-uncertainty=,
input-close-uncertainty=,
detect-all
]}}
\tabucolumn Y
\begin{tabu} to \textwidth {@{}X[2,l]*3Y@{}}
\toprule
& \multicolumn{3}{c}{AFC Window 1}  \\
& {gmt} & {jfk} & {fbi} \\
\midrule
Constant & 0.025* & -0.002 & 1.155* \\
& (1.22) & (2.22) & (0.56)\\
Constant & 0.025* & -0.002 & 1.155* \\
& (1.22) & (2.22) & (0.56)\\
Log(assets)\textsuperscript{a} & 0.025* & -0.002 & 1.155* \\
& (1.22) & (2.22) & (0.56)\\
\midrule[\heavyrulewidth]
\multicolumn{4}{@{}p{\textwidth}@{}}{Dependent variables are the country-specific effects reported in Table 4 and obtained from the regressions reported in Table~3. Standard errors are in parentheses and are White adjested for the heteroscedasticity. *Significant at the 5\% level.}
\end{tabu}
\end{table}

\end{document}

在此处输入图片描述

相关内容