表格缩放和子标题包

表格缩放和子标题包

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\textwidthresizebox

编辑:我应该注意到,实际上我的表格更大,但列数相同。结合 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\tabcolseptabular...

另外,我还将删除\large字体大小指令,用来@{}删除表格左右边距的多余空白,不使用\centering而是用来\hspace*{\fill}分隔两个子表格,并在这里和那里进行一些其他更改以简化表格的设置和外观。


附录,在收到 OP 使用相当窄的文本块的信息后发布:仍然可以使用该tabular*环境,但相对于我最初发布的代码(现已删除)有两处修改:(i)将参数的值\tabcolsep从默认值降低6pt1pt,然后让 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}

相关内容