我有这个代码:
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[margin=2.5cm]{geometry}
\usepackage{setspace}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{caption}
\usepackage{booktabs}
\usepackage[labelfont=bf]{caption}
\usepackage{siunitx}
\begin{document}
\def\arraystretch{1.25}
\begin{table}[]
\centering
\captionof{table}{\textbf{Some Fancy Title to My Table}\\\small{Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.}}
\resizebox{\columnwidth}{!}{
\begin{tabular}{llrrrlrlrrrlrlrrrlr}
\toprule
&&
\multicolumn{4}{c}{Parameter 1}&&&
\multicolumn{4}{c}{Parameter 2}&&&
\multicolumn{4}{c}{Parameter 3}\\
\cline{3-6}\cline{9-12}\cline{15-18}&&
\multicolumn{1}{c}{Estimate}&
\multicolumn{1}{c}{$t$--Statistic}&
\multicolumn{1}{c}{$p$--value}&
\multicolumn{1}{c}{$\bar{R}^{2}$}&&&
\multicolumn{1}{c}{Estimate}&
\multicolumn{1}{c}{$t$--Statistic}&
\multicolumn{1}{c}{$p$--value}&
\multicolumn{1}{c}{$\bar{R}^{2}$}&&&
\multicolumn{1}{c}{Estimate}&
\multicolumn{1}{c}{$t$--Statistic}&
\multicolumn{1}{c}{$p$--value}&
\multicolumn{1}{c}{$\bar{R}^{2}$}\\
\hline
Model 1 &&&&&\multicolumn{1}{r}{0.47} &&&&&&\multicolumn{1}{r}{0.47} &&&&&&\multicolumn{1}{r}{0.47}&\\
\qquad{}Intercept &&-0.02 &-1.19 &0.23& &&&0.14 &6.41 &0.00&*** &&&0.05 &2.69 &0.01&** &\\
\qquad{}Factor 1 &&0.81 &290.96 &0.00&*** &&&0.81 &290.91 &0.00&*** &&&0.81 &290.83 &0.00&*** &\\
\qquad{}Factor 2 &&0.09 &3.07 &0.00&** &&&-0.05 &-1.80 &0.07&. &&&0.03 &0.85 &0.39& &\\
\qquad{}Factor 3 &&0.23 &7.67 &0.00&*** &&&-0.18 &-6.21 &0.00&*** &&&-0.01 &-0.52 &0.61& &\\
\bottomrule
\end{tabular}
} % end of resizebox
\end{table}
\end{document}
生成以下表格:
是否有可能以某种方式删除“p 值”列中的值与“R^2”列中的星号 (***) 之间的空格?我的问题是,我想保留列标题之间的空格以及空列与“模型 1”行中的数字“R^2”值之间的空格。
换句话说,我尝试设置我的表格,使得“参数 1”标题下最右边的列看起来像这样:
0.23
0.00***
0.00**
0.00***
数值(左侧)是右对齐的,而星星(右侧)是左对齐的。
我希望我的问题有意义。我已经看过多个问题,例如这。
提前致谢!
答案1
天哪,这是制作桌子的一种丑陋方法!
总是有不止一种方法可以做到。我建议:
- 使用 S
siunitx
作为图形。 - 将星号放在 p 值列中(用括号括起来以免混淆
siunitx
)。 - 摆脱可怕的
resizebox
(你真的知道类型有多小吗?) - 通过减少来为自己争取一点额外的空间
tabcolsep
(标签或多或少会造成间距:它们有点紧,但没办法:在理想情况下,我会通过缩写来减少标签的长度,例如“est”和“t-stat”和“p”,在这种情况下,我们可能需要更多tabcolsep
)。 - 摆脱那些唯一功能是留出间距的列,而是在模板中需要时添加间距(我们需要的很少)。
- 使用 trimmed
\cmidrules
对参数进行分组(消除了它们之间的空格):加载booktabs
然后使用\cline
和是没有意义的\hline
。 - 从而从数据中删除所有仅用于间隔的冗余单元并使其排列。
- 删除
\qquad
s 并使用不同的类型样式来表明我们正在处理特定模型。
有了这些,我们就可以删除,resizebox
让整个内容footnotesize
清晰易读,并且仍在文本宽度之内。我们还有实际反映表格的代码,没有很多只是分隔符的 & 符号。
代码如下(删除了多余的包)。
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[margin=2.5cm]{geometry}
\usepackage{booktabs}
\usepackage[labelfont=bf]{caption}
\usepackage{siunitx}
\begin{document}
\def\arraystretch{1.25}
\setlength{\tabcolsep}{1.5pt}
\begin{table}[]
\centering
\captionof{table}{\textbf{Some Fancy Title to My Table}\\\small{Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.}}
\footnotesize
\begin{tabular}{lSSS[table-format=1.2]S@{\hskip 4pt}SSS[table-format=1.2]S@{\hskip 4pt}SSS[table-format=1.2]S}
\toprule
&
\multicolumn{4}{c}{Parameter 1}&
\multicolumn{4}{c}{Parameter 2}&
\multicolumn{4}{c}{Parameter 3}\\
% \cmidrule(r){2-5}\cmidrule(lr){6-9}\cmidrule(l){10-13}
&
\multicolumn{1}{c}{Estimate}&
\multicolumn{1}{c}{$t$--Statistic}&
\multicolumn{1}{c}{$p$--value}&
\multicolumn{1}{c}{$\bar{R}^{2}$}&
\multicolumn{1}{c}{Estimate}&
\multicolumn{1}{c}{$t$--Statistic}&
\multicolumn{1}{c}{$p$--value}&
\multicolumn{1}{c}{$\bar{R}^{2}$}&
\multicolumn{1}{c}{Estimate}&
\multicolumn{1}{c}{$t$--Statistic}&
\multicolumn{1}{c}{$p$--value}&
\multicolumn{1}{c}{$\bar{R}^{2}$}\\
\cmidrule(r){2-5}\cmidrule(r){6-9}\cmidrule{10-13}
\textit{Model 1} & & & & 0.47 & & & & 0.47 & & & & 0.47 \\
Intercept & -0.02 & -1.19 & 0.23 & & 0.14 & 6.41 & 0.00{***} & & 0.05 & 2.69 & 0.01{**} \\
Factor 1 & 0.81 & 290.96 & 0.00{***} & & 0.81 & 290.91 & 0.00{***} & & 0.81 & 290.83 & 0.00{***} \\
Factor 2 & 0.09 & 3.07 & 0.00{**} & & -0.05 & -1.80 & 0.07 & & 0.03 & 0.85 & 0.39 \\
Factor 3 & 0.23 & 7.67 & 0.00{***} & & -0.18 & -6.21 & 0.00{***} & & -0.01 & -0.52 & 0.61 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
我建议您重新组织表格,删除所有空(“填充”?)列,并将相关信息R^2
放在顶层标题单元格下方的单独行中。进行这些更改后,\resizebox
表格材料就不再必要了——这样读者就更容易读懂材料了。最后,我认为按小数点标记排列所有数字(现在只有 9 个)会提高数字列中数字的可读性。
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[margin=2.5cm]{geometry}
\usepackage{setspace,amssymb,mathtools}
\usepackage{booktabs,siunitx,dcolumn}
\usepackage[font=bf,justification=raggedright,
singlelinecheck=off,skip=0.333\baselineskip]{caption}
\newcolumntype{d}[1]{D..{#1}}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
\begin{document}
\begin{table}
%\renewcommand\arraystretch{1.25}
\caption{Some fancy title to my Table}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim
id est laborum.
\medskip
\centering
\begin{tabular}{@{} l *{3}{d{2.2}d{3.2}d{1.4}} @{}}
\toprule
Model 1 &
\multicolumn{3}{c}{Parameter 1}&
\multicolumn{3}{c}{Parameter 2}&
\multicolumn{3}{c@{}}{Parameter 3}\\
&\multicolumn{3}{c}{($\bar{R}^{2}=0.47$)}
&\multicolumn{3}{c}{($\bar{R}^{2}=0.47$)}
&\multicolumn{3}{c}{($\bar{R}^{2}=0.47$)}\\
\cmidrule(lr){2-4}\cmidrule(lr){5-7}\cmidrule(l){8-10}
&\mc{Coeff.}&\mc{$t$-Stat.}&\mc{$p$-value}
&\mc{Coeff.}&\mc{$t$-Stat.}&\mc{$p$-value}
&\mc{Coeff.}&\mc{$t$-Stat.}&\multicolumn{1}{c@{}}{$p$-value}\\
\midrule
Intercept &-0.02 &-1.19 & 0.23
& 0.14 &6.41 & 0.00^{***}
& 0.05 &2.69 & 0.01^{**} \\
Factor 1 & 0.81 &290.96 & 0.00^{***}
& 0.81 &290.91 & 0.00^{***}
& 0.81 &290.83 & 0.00^{***} \\
Factor 2 & 0.09 & 3.07 & 0.00^{**}
&-0.05 & -1.80 & 0.07
& 0.03 & 0.85 & 0.39 \\
Factor 3 & 0.23 & 7.67 & 0.00^{***}
&-0.18 & -6.21 & 0.00^{***}
&-0.01 & -0.52 & 0.61 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案3
切勿\resizebox
与表格一起使用!这会导致字体大小不一致。最好使用字体大小和 的值\tabcolsep
。
我建议使用tabularx
适合的 \linewidth
,并系统地使用booktabs中的规则:
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[margin=2.5cm, showframe]{geometry}
\usepackage{setspace}
\usepackage{amssymb}
\usepackage{mathtools}%% loads amsmath
\usepackage{booktabs, tabularx}
\usepackage[labelfont=bf]{caption}
\usepackage{siunitx}
\begin{document}
\def\arraystretch{1.25}
\begin{table}[!htb]
\centering\footnotesize\setlength{\tabcolsep}{3pt}%
\sisetup{table-number-alignment=center}
\captionof{table}{\textbf{Some Fancy Title to My Table}\\\footnotesize{Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.}}
\begin{tabularx}{\linewidth}{X *{3}{S[table-format=1.2]S[table-format=3.2]S[table-format=1.2, table-space-text-post=***]@{\,}c}@{}}
\toprule
& \multicolumn{4}{c}{Parameter 1}& \multicolumn{4}{c}{Parameter 2}& \multicolumn{4}{c}{Parameter 3}\\
\cmidrule(l{2pt}r){2-5}\cmidrule(l{2pt}r){6-9}\cmidrule(l{2pt}r{2pt}){10-13}
& {Estimate}& {$t$--Statistic}& {$p$--value}& $\bar{R}^{2}$
& {Estimate}& {$t$--Statistic}& {$p$--value}&{$\bar{R}^{2}$}
& {Estimate}& {$t$--Statistic}& {$p$--value}& {$\bar{R}^{2}$}\\
\midrule
\multicolumn{1}{@{}l}{Model 1} &{}&&& 0.47 &&&& 0.47 &&&& 0.47 \\[0.5ex]
Intercept & - 0.02 &- 1.19 &0.23& & 0.14 &6.41 &0.00*** &&0.05 &2.69 &0.01** &\\
Factor 1 &0.81 &290.96 &0.00 *** & &0.81 &290.91 & 0.00 *** & &0.81 &290.83 &0.00 *** &\\
Factor 2 &0.09 &3.07 &0.00 ** & &-0.05 &-1.80 &0.07{. }& &0.03 &0.85 &0.39& \\
Factor 3 & 0.23 &7.67 &0.00 *** & &-0.18 &-6.21 &0.00 *** & &-0.01 &-0.52 &0.61& \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}