我正在尝试实现一个包含多个subtable
s 的表格,但当我尝试 时,使用subcaption
不起作用tabularx
。这subtables
有不同的列数。使用以下代码,表格不是平等的宽度。
\begin{table}[ht]
\caption{Earnings Surprise and Cumulated Returns}
\resizebox{\textwidth}{!}{\begin{threeparttable}
\begin{tabular}{@{\extracolsep{4pt}}lcccccccccc@{}}
\hline\hline
& \multicolumn{3}{c}{N} & \multicolumn{3}{c}{mean} & \multicolumn{2}{c}{N} & \multicolumn{2}{c}{mean} \\
\cline{2-4} \cline{5-7} \cline{8-9} \cline{10-11}
& SUE1 & SUE2 & SUE3 & SUE1 & SUE2 & SUE3 & CASC & BHAR & CASC & BHAR \\ [1ex]
\hline
AAA & 731 & 731 & 613 & 0.0004 & 0.0004 & 0.0104 & 688 & 726 & 0.0002 & -0.0084 \\
A & 3865 & 3865 & 3455 & -0.0013 & -0.0007 & 0.0002 & 3424 & 3827 & 0.0003 & 0.0027 \\
BBB & 6308 & 6313 & 5711 & -0.0017 & -0.0009 & 0.0000 & 5512 & 6252 & 0.0003 & 0.0060 \\
NIG & 3166 & 3172 & 2825 & 0.0006 & 0.0019 & -0.0054 & 2685 & 3080 & 0.0000 & 0.0148 \\ [1ex]
All & 14070 & 14081 & 12604 & -0.0010 & -0.0001 & -0.0007 & 12309 & 13885 & 0.0002 & 0.0063 \\ [1ex]
Investment-Grade & 10904 & 10909 & 9779 & -0.0014 & -0.0007 & 0.0007 & 9624 & 10805 & 0.0003 & 0.0039 \\
Speculative-Grade & 3166 & 3172 & 2825 & 0.0006 & 0.0019 & -0.0054 & 2685 & 3080 & 0.0000 & 0.0148 \\ [1ex]
\hline
\end{tabular}
\bigskip
\begin{tabular}{@{\extracolsep{4pt}}lcccccccccc@{}}
\hline\hline
& \multicolumn{3}{c}{N} & \multicolumn{3}{c}{mean} & \multicolumn{2}{c}{N} & \multicolumn{2}{c}{mean} \\
\cline{2-4} \cline{5-7} \cline{8-9} \cline{10-11}
& SUE1 & SUE2 & SUE3 & SUE1 & SUE2 & SUE3 & CASC & BHAR & CASC & BHAR \\ [1ex]
\hline
2004 & 1747 & 1748 & 1487 & 0.0023 & 0.0031 & 0.0006 & 1342 & 1741 & -0.0003 & 0.0214 \\
2005 & 1727 & 1728 & 1513 & 0.0022 & 0.0009 & 0.0006 & 1420 & 1707 & -0.0002 & 0.0066 \\
2006 & 1646 & 1648 & 1473 & 0.0002 & 0.0015 & 0.0011 & 1431 & 1624 & 0.0002 & 0.0045 \\
2007 & 1594 & 1595 & 1427 & -0.0085 & -0.0075 & -0.0039 & 1329 & 1573 & 0.0014 & -0.0136 \\
2008 & 1545 & 1545 & 1414 & -0.0303 & -0.0163 & -0.0172 & 1429 & 1527 & 0.0042 & 0.0132 \\
2009 & 1492 & 1494 & 1384 & 0.0163 & 0.0064 & 0.0011 & 1400 & 1482 & -0.0049 & 0.0297 \\
2010 & 1471 & 1473 & 1357 & 0.0115 & 0.0112 & 0.0037 & 1332 & 1458 & 0.0005 & -0.0042 \\
2011 & 1445 & 1445 & 1303 & 0.0056 & 0.0059 & 0.0048 & 1326 & 1417 & 0.0024 & -0.0108 \\
2012 & 1403 & 1405 & 1246 & -0.0076 & -0.0062 & 0.0040 & 1300 & 1356 & -0.0010 & 0.0079 \\ [1ex]
All & 14070 & 14081 & 12604 & -0.0010 & -0.0001 & -0.0007 & 12309 & 13885 & 0.0002 & 0.0063 \\[1ex]
pre-crisis & 5120 & 5124 & 4473 & 0.0016 & 0.0019 & 0.0008 & 4193 & 5072 & -0.0001 & 0.0110 \\
crisis & 3139 & 3140 & 2841 & -0.0193 & -0.0118 & -0.0105 & 2758 & 3100 & 0.0028 & -0.0004 \\
post-crisis & 5811 & 5817 & 5290 & 0.0066 & 0.0044 & 0.0034 & 5358 & 5713 & -0.0008 & 0.0058 \\ [1ex]
\hline
\end{tabular}
\begin{tablenotes}
\footnotesize
\item This is where authors provide additional information about the data, including whatever notes are needed.
asdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
asdfasdfsfffffffffffffffffffffffffffffffffffffffffffff
asdffffffffffffffffffffffffffffffffffffffffffffffffff
asdfffffffffffffffffffffffffffffffffffffffffffffffffffff
asdffffffffffffffffffffffffffffffffffffffffffffffffffffff
asdfffffffffffffffffffffffffffffffffffffffffffffffffffffff
asdfffffffffffffffffffffffffffffffffffffffffffffffd
asdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
asdfasdfsfffffffffffffffffffffffffffffffffffffffffffff
asdffffffffffffffffffffffffffffffffffffffffffffffffff
asdfffffffffffffffffffffffffffffffffffffffffffffffffffff
asdffffffffffffffffffffffffffffffffffffffffffffffffffffff
asdfffffffffffffffffffffffffffffffffffffffffffffffffffffff
asdffffffffffffffffffffffffffffffffffffffffffffff
\end{tablenotes}
\end{threeparttable}}
\end{table}
此外,通常可以设置表格,以便使用允许的最大数量大小?换句话说,不管是否必要,它们都会占据整个空间。
另一个问题是:使用当前标题,我得到“表 1:xyz”。是否可以将其转换为:
表格1 \ \
坐标
答案1
您可以使用
tabular*
环境(如下表所示)强制表格材料占据文本块的整个宽度。通过将\tabcolsep
(控制默认列间空白量的参数)设置为非常小的值并通过指令提供额外的灵活空白@{\extracolsep{\fill}}
,tabular*
环境将精确占据指定的宽度(通常为\textwidth
)。我还建议您使用该
dcolumn
软件包及其工具将数值数据列的小数点对齐。这样做还会使 LaTeX 在-
遇到 a 时使用印刷正确的“减号”符号而不是文本模式破折号。要在“表格 1”和标题之间添加换行符,请使用包中的工具
caption
(请参阅下面的代码以了解部署的具体工具)。我建议您也使用该
subcaption
包并将两个表格分别分配到单独的subtable
环境中。这样,您可以为每个子表分配一个标题,并根据需要单独交叉引用子表。子标题作为读者的“路标”非常有用。如果你需要环境工具
threeparttable
,请注意可以嵌入threeparttable
环境之内一个subtable
环境。最后的建议:不要使用基本但功能不太强大的指令
\hline
来绘制水平线。相反,请考虑使用booktabs
包中更复杂的宏:\toprule
、、和。您会发现宏在水平线周围提供了更好的间距。\midrule
\bottomrule
\cmidrule
\documentclass{article}
\usepackage[margin=1in]{geometry} % choose margins here
\usepackage{threeparttable}
\usepackage{booktabs} % for \toprule, \midrule, \bottomrule, and \cmidrule
\usepackage[labelsep=newline,% line break after label
justification=raggedright,
singlelinecheck=off]{caption}
\usepackage{subcaption} % for subtable environment
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}} % handy shortcut macro
\begin{document}
\begin{table}[ht!]
\setlength\tabcolsep{0.1pt} % default value: 6.0pt
\caption{Earnings Surprises and Cumulative Returns}
\label{tab:surprises}
\begin{subtable}{\textwidth}
\caption{Sorted by investment rating} \label{tab:byrating}
\begin{tabular*}{\textwidth}%
{ @{\extracolsep{\fill}} l *{3}{d{5.0}} *{3}{d{2.4}}
*{2}{d{5.0}} *{2}{d{2.4}} @{} }
\toprule
Rating
& \multicolumn{3}{c}{N} & \multicolumn{3}{c}{mean}
& \multicolumn{2}{c}{N} & \multicolumn{2}{c}{mean} \\
\cmidrule{2-4} \cmidrule{5-7} \cmidrule{8-9} \cmidrule{10-11}
& \mc{SUE1} & \mc{SUE2} & \mc{SUE3}
& \mc{SUE1} & \mc{SUE2} & \mc{SUE3}
& \mc{CASC} & \mc{BHAR} & \mc{CASC} & \multicolumn{1}{r@{}}{BHAR} \\
\midrule
AAA & 731 & 731 & 613 & 0.0004 & 0.0004 & 0.0104 & 688 & 726 & 0.0002 & -0.0084 \\
A & 3865 & 3865 & 3455 & -0.0013 & -0.0007 & 0.0002 & 3424 & 3827 & 0.0003 & 0.0027 \\
BBB & 6308 & 6313 & 5711 & -0.0017 & -0.0009 & 0.0000 & 5512 & 6252 & 0.0003 & 0.0060 \\
NIG & 3166 & 3172 & 2825 & 0.0006 & 0.0019 & -0.0054 & 2685 & 3080 & 0.0000 & 0.0148 \\ [1ex]
All & 14070 & 14081 & 12604 & -0.0010 & -0.0001 & -0.0007 & 12309 & 13885 & 0.0002 & 0.0063 \\ [1ex]
Inv.\ Grade & 10904 & 10909 & 9779 & -0.0014 & -0.0007 & 0.0007 & 9624 & 10805 & 0.0003 & 0.0039 \\
Spec.\ Grade & 3166 & 3172 & 2825 & 0.0006 & 0.0019 & -0.0054 & 2685 & 3080 & 0.0000 & 0.0148 \\
\bottomrule
\end{tabular*}
\end{subtable}
\bigskip\bigskip
\begin{subtable}{\textwidth}
\begin{threeparttable}
\caption{Sorted by period} \label{tab:byperiod}
\begin{tabular*}{\textwidth}%
{ @{\extracolsep{\fill}} l *{3}{d{5.0}} *{3}{d{2.4}}
*{2}{d{5.0}} *{2}{d{2.4}} @{} }
\toprule
Period\tnote{a}
& \multicolumn{3}{c}{N} & \multicolumn{3}{c}{mean}
& \multicolumn{2}{c}{N} & \multicolumn{2}{c}{mean} \\
\cmidrule{2-4} \cmidrule{5-7} \cmidrule{8-9} \cmidrule{10-11}
& \mc{SUE1} & \mc{SUE2} & \mc{SUE3}
& \mc{SUE1} & \mc{SUE2} & \mc{SUE3}
& \mc{CASC} & \mc{BHAR}
& \mc{CASC} & \multicolumn{1}{r@{}}{BHAR} \\
\midrule
2004 & 1747 & 1748 & 1487 & 0.0023 & 0.0031 & 0.0006 & 1342 & 1741 & -0.0003 & 0.0214 \\
2005 & 1727 & 1728 & 1513 & 0.0022 & 0.0009 & 0.0006 & 1420 & 1707 & -0.0002 & 0.0066 \\
2006 & 1646 & 1648 & 1473 & 0.0002 & 0.0015 & 0.0011 & 1431 & 1624 & 0.0002 & 0.0045 \\
2007 & 1594 & 1595 & 1427 & -0.0085 & -0.0075 & -0.0039 & 1329 & 1573 & 0.0014 & -0.0136 \\
2008 & 1545 & 1545 & 1414 & -0.0303 & -0.0163 & -0.0172 & 1429 & 1527 & 0.0042 & 0.0132 \\
2009 & 1492 & 1494 & 1384 & 0.0163 & 0.0064 & 0.0011 & 1400 & 1482 & -0.0049 & 0.0297 \\
2010 & 1471 & 1473 & 1357 & 0.0115 & 0.0112 & 0.0037 & 1332 & 1458 & 0.0005 & -0.0042 \\
2011 & 1445 & 1445 & 1303 & 0.0056 & 0.0059 & 0.0048 & 1326 & 1417 & 0.0024 & -0.0108 \\
2012 & 1403 & 1405 & 1246 & -0.0076 & -0.0062 & 0.0040 & 1300 & 1356 & -0.0010 & 0.0079 \\ [1ex]
All & 14070 & 14081 & 12604 & -0.0010 & -0.0001 & -0.0007 & 12309 & 13885 & 0.0002 & 0.0063 \\[1ex]
pre-crisis & 5120 & 5124 & 4473 & 0.0016 & 0.0019 & 0.0008 & 4193 & 5072 & -0.0001 & 0.0110 \\
crisis & 3139 & 3140 & 2841 & -0.0193 & -0.0118 & -0.0105 & 2758 & 3100 & 0.0028 & -0.0004 \\
post-crisis & 5811 & 5817 & 5290 & 0.0066 & 0.0044 & 0.0034 & 5358 & 5713 & -0.0008 & 0.0058 \\
\bottomrule
\end{tabular*}
\begin{tablenotes}
\item[a] A subtable-specific footnote
\end{tablenotes}
\end{threeparttable}
\end{subtable}
\end{table}
\end{document}
仅供比较,以下是使用原始代码时表格的样子(这也需要加载包graphicx
,而不是上面的代码中加载的)。大致从上到下进行,与上面的外观相比,一些主要区别是:表格标题居中且位于一行上;两个子表没有(子)标题;\hline
s 和下一行材料之间的间距非常紧密(实际上太紧);指令4pt
之间的空间非常小——准确地说是\cline
;数据列中的数字居中而不是在小数点上对齐,并且偶尔的减号被错误地呈现为简单的破折号;两个tabular
环境具有不同的宽度。
答案2
我发现siunitx
管理数字表更好。
\documentclass[draft]{article}
\usepackage[margin=1in]{geometry} % choose margins here
\usepackage{booktabs} % for \toprule, \midrule, \bottomrule, and \cmidrule
\usepackage[labelsep=newline,% line break after label
justification=raggedright,
singlelinecheck=off]{caption}
\usepackage{threeparttable}
\usepackage{subcaption} % for subtable environment
\usepackage{siunitx}
\begin{document}
\begin{table}[!htp]
\centering
\addtolength{\tabcolsep}{-0.5pt}
\sisetup{group-separator={}}
\caption{Earnings Surprises and Cumulative Returns}
\label{tab:surprises}
\begin{subtable}{\textwidth}
\caption{Sorted by investment rating} \label{tab:byrating}
\begin{tabular*}{\textwidth}{
@{\extracolsep{\fill}}
l
*{3}{S[table-format=5.0]}
*{3}{S[table-format=-1.4]}
*{2}{S[table-format=5.0]}
S[table-format=1.4]
S[table-format=-1.4]
@{}
}
\toprule
Rating
& \multicolumn{3}{c}{N} & \multicolumn{3}{c}{mean}
& \multicolumn{2}{c}{N} & \multicolumn{2}{c}{mean} \\
\cmidrule(lr){2-4} \cmidrule(lr){5-7} \cmidrule(lr){8-9} \cmidrule(l){10-11}
& {SUE1} & {SUE2} & {SUE3} & {SUE1} & {SUE2} & {SUE3}
& {CASC} & {BHAR} & {CASC} & {BHAR} \\
\midrule
AAA
& 731 & 731 & 613 & 0.0004 & 0.0004 & 0.0104 & 688 & 726 & 0.0002 & -0.0084 \\
A
& 3865 & 3865 & 3455 & -0.0013 & -0.0007 & 0.0002 & 3424 & 3827 & 0.0003 & 0.0027 \\
BBB
& 6308 & 6313 & 5711 & -0.0017 & -0.0009 & 0.0000 & 5512 & 6252 & 0.0003 & 0.0060 \\
NIG
& 3166 & 3172 & 2825 & 0.0006 & 0.0019 & -0.0054 & 2685 & 3080 & 0.0000 & 0.0148 \\
\midrule
All
& 14070 & 14081 & 12604 & -0.0010 & -0.0001 & -0.0007 & 12309 & 13885 & 0.0002 & 0.0063 \\
\midrule
Inv.\ Grade
& 10904 & 10909 & 9779 & -0.0014 & -0.0007 & 0.0007 & 9624 & 10805 & 0.0003 & 0.0039 \\
Spec.\ Grade
& 3166 & 3172 & 2825 & 0.0006 & 0.0019 & -0.0054 & 2685 & 3080 & 0.0000 & 0.0148 \\
\bottomrule
\end{tabular*}
\end{subtable}
\bigskip
\begin{subtable}{\textwidth}
\begin{threeparttable}
\caption{Sorted by period} \label{tab:byperiod}
\begin{tabular*}{\textwidth}{
@{\extracolsep{\fill}}
l
*{3}{S[table-format=5.0]}
*{3}{S[table-format=-1.4]}
*{2}{S[table-format=5.0]}
*{2}{S[table-format=-1.4]}
@{}
}
\toprule
Period\tnote{a}
& \multicolumn{3}{c}{N} & \multicolumn{3}{c}{mean}
& \multicolumn{2}{c}{N} & \multicolumn{2}{c}{mean} \\
\cmidrule(lr){2-4} \cmidrule(lr){5-7} \cmidrule(lr){8-9} \cmidrule(l){10-11}
& {SUE1} & {SUE2} & {SUE3} & {SUE1} & {SUE2} & {SUE3}
& {CASC} & {BHAR} & {CASC} & {BHAR} \\
\midrule
2004
& 1747 & 1748 & 1487 & 0.0023 & 0.0031 & 0.0006 & 1342 & 1741 & -0.0003 & 0.0214 \\
2005
& 1727 & 1728 & 1513 & 0.0022 & 0.0009 & 0.0006 & 1420 & 1707 & -0.0002 & 0.0066 \\
2006
& 1646 & 1648 & 1473 & 0.0002 & 0.0015 & 0.0011 & 1431 & 1624 & 0.0002 & 0.0045 \\
2007
& 1594 & 1595 & 1427 & -0.0085 & -0.0075 & -0.0039 & 1329 & 1573 & 0.0014 & -0.0136 \\
2008
& 1545 & 1545 & 1414 & -0.0303 & -0.0163 & -0.0172 & 1429 & 1527 & 0.0042 & 0.0132 \\
2009
& 1492 & 1494 & 1384 & 0.0163 & 0.0064 & 0.0011 & 1400 & 1482 & -0.0049 & 0.0297 \\
2010
& 1471 & 1473 & 1357 & 0.0115 & 0.0112 & 0.0037 & 1332 & 1458 & 0.0005 & -0.0042 \\
2011
& 1445 & 1445 & 1303 & 0.0056 & 0.0059 & 0.0048 & 1326 & 1417 & 0.0024 & -0.0108 \\
2012
& 1403 & 1405 & 1246 & -0.0076 & -0.0062 & 0.0040 & 1300 & 1356 & -0.0010 & 0.0079 \\
\midrule
All
& 14070 & 14081 & 12604 & -0.0010 & -0.0001 & -0.0007 & 12309 & 13885 & 0.0002 & 0.0063 \\
\midrule
pre-crisis
& 5120 & 5124 & 4473 & 0.0016 & 0.0019 & 0.0008 & 4193 & 5072 & -0.0001 & 0.0110 \\
crisis
& 3139 & 3140 & 2841 & -0.0193 & -0.0118 & -0.0105 & 2758 & 3100 & 0.0028 & -0.0004 \\
post-crisis
& 5811 & 5817 & 5290 & 0.0066 & 0.0044 & 0.0034 & 5358 & 5713 & -0.0008 & 0.0058 \\
\bottomrule
\end{tabular*}
\begin{tablenotes}
\item[a] A subtable-specific footnote
\end{tablenotes}
\end{threeparttable}
\end{subtable}
\end{table}
\end{document}
已计算调整-0.25pt
值\tabcolsep
,因为超出部分略小于 5pt,并且有 20 个可用的列间距。