subcaption
我按照以下方式使用该包将表格并排放置:
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{tabularx}
\begin{document}
\begin{table}
\centering
\begin{subtable}[b]{0.48\textwidth}
\large
\resizebox{\textwidth}{!}
{%
\sisetup{detect-weight=true,detect-inline-weight=math}
\begin{tabular}{rS[table-format=1.2(2)]S[table-format=1.2(2)]S[table-format=2.2(2)]S[table-format=2.2(2)]}
\toprule
& {25\%} & {50\%} & {75\%} & {95\%}\\
\midrule
A & 0.09(83) & 0.26(83) & 0.38(83) & 0.96 \\
B & 0.10(1) & 0.16(1) & 0.22(2) & 0.41(8)\\
C & 0.08(1) & 0.12(1) & 0.19(3) & 0.52(23)\\
\bottomrule
\end{tabular}%
}
\caption{}
\end{subtable}%
\hspace{0.02\textwidth}%
\begin{subtable}[b]{0.48\textwidth}
\large
\resizebox{\textwidth}{!}
{%
\sisetup{detect-weight=true,detect-inline-weight=math}
\begin{tabular}{rS[table-format=1.2(2)]S[table-format=1.2(2)]S[table-format=2.2(2)]S[table-format=2.2(2)]}
\toprule
& {25\%} & {50\%} & {75\%} & {95\%}\\
\midrule
A & 0.09(83) & 0.26(83) & 0.38(83) & 0.96 \\
B & 0.10(1) & 0.16(1) & 0.22(2) & 0.41(8)\\
C & 0.08(1) & 0.12(1) & 0.19(3) & 0.52(23)\\
\bottomrule
\end{tabular}%
}%
\caption{}
\end{subtable}
\end{table}
\end{document}
在一篇相关文章中,其中一条评论是使用\resizebox{1\textwidth}{!}
是一种不好的风格,因为它会导致字体大小不一致。建议改用 包tabularx
。因此我省略了 命令,并用 替换了的resizebox
调用。但是,现在表格不再重新缩放以匹配子表的 。我错过了什么?这很奇怪,因为命令中的使用正确地选择了子表的大小。\begin{tabular}{...}
\begin{tabularx}{\textwidth}{...}
0.48\textwidth
\textwidth
resizebox
编辑:我应该注意到,实际上我的表格更大,但列数相同。结合 mico 的回答,我得到了 overfull hbox 错误。问题是我无法让页面更宽,因为需要较大的内边距。这就是 resizebox 命令派上用场的地方,尽管这不是正确的方法。这是一个经过编辑的示例:
\documentclass{article}
\usepackage{siunitx,booktabs,subcaption}
%\usepackage[margin=1in]{geometry} % choose margins here
\begin{document}
\sisetup{detect-weight=true,detect-inline-weight=math}
\begin{table}
\centering
\begin{subtable}[b]{0.48\textwidth}
\begin{tabular*}{\linewidth}{@{}l@{\extracolsep{\fill}}
S[table-format=1.2(2)]
S[table-format=1.2(2)]
S[table-format=2.2(2)]
S[table-format=2.2(2)]@{}}
\toprule
& \multicolumn{4}{c}{Error Quantiles}\\
\cmidrule(lr){2-5}
& {25\%} & {50\%} & {75\%} & {95\%}\\
\midrule
A & 0.17(1) & 0.25(3) & 0.33(2) & 0.43(2)\\
B & 0.09(1) & 0.12(1) & 0.17(2) & 0.26(5)\\
C & 0.07(1) & 0.09(1) & 0.11(1) & 0.16(1)\\
\\
A & 0.17(83) & 0.26(83) & 0.38(83) & 0.96 \\ % 1e7
B & 0.10(1) & 0.16(1) & 0.22(2) & 0.41(8)\\
C & 0.08(1) & 0.12(1) & 0.19(3) & 0.52(23)\\
\\
A & 0.37(6) & 0.73(15) & 1.66(63) & {201}\\ % 1e5
B & 0.07(1) & 0.09(1) & 0.15(2) & 15.50(33)\\
C & 0.06(0) & 0.09(1) & 0.12(1) & 0.20(2)\\
\bottomrule
\end{tabular*}%
\caption{}
\end{subtable}%
\hspace*{\fill}%
\begin{subtable}[b]{0.48\textwidth}
\begin{tabular*}{\linewidth}{@{}l@{\extracolsep{\fill}}
S[table-format=1.2(2)]
S[table-format=1.2(2)]
S[table-format=2.2(2)]
S[table-format=2.2(2)]@{}}
\toprule
& \multicolumn{4}{c}{Error Quantiles}\\
\cmidrule(lr){2-5}
& {25\%} & {50\%} & {75\%} & {95\%}\\
\midrule
A & 0.17(1) & 0.25(3) & 0.33(2) & 0.43(2)\\
B & 0.09(1) & 0.12(1) & 0.17(2) & 0.26(5)\\
C & 0.07(1) & 0.09(1) & 0.11(1) & 0.16(1)\\
\\
A & 0.17(83) & 0.26(83) & 0.38(83) & 0.96 \\ % 1e7
B & 0.10(1) & 0.16(1) & 0.22(2) & 0.41(8)\\
C & 0.08(1) & 0.12(1) & 0.19(3) & 0.52(23)\\
\\
A & 0.37(6) & 0.73(15) & 1.66(63) & {201}\\ % 1e5
B & 0.07(1) & 0.09(1) & 0.15(2) & 15.50(33)\\
C & 0.06(0) & 0.09(1) & 0.12(1) & 0.20(2)\\
\bottomrule
\end{tabular*}%
\caption{}
\end{subtable}
\end{table}
答案1
您可以 (i) 使用tabular*
而不是tabular
(或) 环境,(ii)将tabularx
的宽度设置为,以及 (iii) 使用 (看起来确实很复杂) 表达式使 LaTeX 扩展列间空白,以便表格的内容占据整个可用宽度。 (除非指示执行其他操作,否则 LaTeX 会在 环境中的列之间插入 数量的列间空白。)tabular*
\linewidth
@{\extracolsep{\fill}}
2\tabcolsep
tabular...
另外,我还将删除\large
字体大小指令,用来@{}
删除表格左右边距的多余空白,不使用\centering
而是用来\hspace*{\fill}
分隔两个子表格,并在这里和那里进行一些其他更改以简化表格的设置和外观。
附录,在收到 OP 使用相当窄的文本块的信息后发布:仍然可以使用该tabular*
环境,但相对于我最初发布的代码(现已删除)有两处修改:(i)将参数的值\tabcolsep
从默认值降低6pt
到1pt
,然后让 LaTeX 插入\fill
以进行额外的分隔,(ii)将字体大小更改为\small
(小于1pt
默认字体大小)。
\documentclass{article}
\usepackage{siunitx,booktabs,subcaption}
\setlength\tabcolsep{1pt} % LaTeX default is 6pt
\sisetup{detect-weight=true,
detect-inline-weight=math,
table-format=1.2(2)}
\begin{document}
\begin{table}
\small % reduce font size by 1pt
\begin{subtable}{0.48\textwidth}
\begin{tabular*}{\linewidth}{@{}l
@{\extracolsep{\fill}} SS
S[table-format=2.2(2)]
S[table-format=2.2(2)]@{}}
\toprule
\phantom{Var.} &
\multicolumn{4}{c}{Error Quantiles}\\
\cmidrule{2-5}
& {25\%} & {50\%} & {75\%} & {95\%}\\
\midrule
A & 0.17(1) & 0.25(3) & 0.33(2) & 0.43(2)\\
B & 0.09(1) & 0.12(1) & 0.17(2) & 0.26(5)\\
C & 0.07(1) & 0.09(1) & 0.11(1) & 0.16(1)\\[1ex]
A & 0.17(83) & 0.26(83) & 0.38(83) & 0.96 \\ % 1e7
B & 0.10(1) & 0.16(1) & 0.22(2) & 0.41(8)\\
C & 0.08(1) & 0.12(1) & 0.19(3) & 0.52(23)\\[1ex]
A & 0.37(6) & 0.73(15) & 1.66(63) & {201}\\ % 1e5
B & 0.07(1) & 0.09(1) & 0.15(2) & 15.50(33)\\
C & 0.06(0) & 0.09(1) & 0.12(1) & 0.20(2)\\
\bottomrule
\end{tabular*}%
\caption{}
\end{subtable}%
\hspace*{\fill}%
\begin{subtable}{0.48\textwidth}
\begin{tabular*}{\linewidth}{@{}l
@{\extracolsep{\fill}} SS
S[table-format=2.2(2)]
S[table-format=2.2(2)]@{}}
\toprule
\phantom{Var.}
& \multicolumn{4}{c}{Error Quantiles}\\
\cmidrule{2-5}
& {25\%} & {50\%} & {75\%} & {95\%}\\
\midrule
A & 0.17(1) & 0.25(3) & 0.33(2) & 0.43(2)\\
B & 0.09(1) & 0.12(1) & 0.17(2) & 0.26(5)\\
C & 0.07(1) & 0.09(1) & 0.11(1) & 0.16(1)\\[1ex]
A & 0.17(83) & 0.26(83) & 0.38(83) & 0.96 \\ % 1e7
B & 0.10(1) & 0.16(1) & 0.22(2) & 0.41(8)\\
C & 0.08(1) & 0.12(1) & 0.19(3) & 0.52(23)\\[1ex]
A & 0.37(6) & 0.73(15) & 1.66(63) & {201}\\ % 1e5
B & 0.07(1) & 0.09(1) & 0.15(2) & 15.50(33)\\
C & 0.06(0) & 0.09(1) & 0.12(1) & 0.20(2)\\
\bottomrule
\end{tabular*}%
\caption{}
\end{subtable}
\end{table}
\end{document}
第二附录:如果您觉得此设置(字体大小\small
比“正常”字体大小小 10%)没有在列之间提供足够的空白,您可以使用\footnotesize
(比“正常”字体大小小 20%):
答案2
tabularx
仍然可以使用。对我来说,它比 更直接tabular*
。
\documentclass{article}
\usepackage{siunitx,booktabs,subcaption,tabularx}
\usepackage[margin=1in]{geometry} % choose margins here
\begin{document}
\begin{table}
\sisetup{detect-weight=true,detect-inline-weight=math}
\begin{subtable}[b]{0.48\textwidth}
\begin{tabularx}{\linewidth}{@{}X%
S[table-format=1.2(2)]
S[table-format=1.2(2)]
S[table-format=2.2(2)]
S[table-format=2.2(2)]@{}}
\toprule
Stuff & {25\%} & {50\%} & {75\%} & {95\%}\\
\midrule
A & 0.09(83) & 0.26(83) & 0.38(83) & 0.96 \\
B & 0.10(1) & 0.16(1) & 0.22(2) & 0.41(8)\\
C & 0.08(1) & 0.12(1) & 0.19(3) & 0.52(23)\\
\bottomrule
\end{tabularx}%
\caption{First subtable}
\end{subtable}%
\hspace*{\fill}% % fill up space between the two subtables
\begin{subtable}[b]{0.48\textwidth}
\begin{tabularx}{\linewidth}{@{}X%
S[table-format=1.2(2)]
S[table-format=1.2(2)]
S[table-format=2.2(2)]
S[table-format=2.2(2)]@{}}
\toprule
Stuff & {25\%} & {50\%} & {75\%} & {95\%}\\
\midrule
A & 0.09(83) & 0.26(83) & 0.38(83) & 0.96 \\
B & 0.10(1) & 0.16(1) & 0.22(2) & 0.41(8)\\
C & 0.08(1) & 0.12(1) & 0.19(3) & 0.52(23)\\
\bottomrule
\end{tabularx}%
\caption{Second subtable}
\end{subtable}
\caption{Overall table caption}
\end{table}
\end{document}