Tabularx 和列溢出

Tabularx 和列溢出

我正在尝试使用 tabularx 创建一个不会水平溢出页面的表格,但现在我遇到了列中的值溢出的问题。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{multirow}
\usepackage{tabularx,ragged2e,booktabs}

\begin{document}

\begin{table}[h]
\begin{tabularx}{\textwidth}{c*{12}{{\RaggedRight \arraybackslash}X}}
\toprule
\multirow{2}[4]{*}{Statistics} & \multicolumn{3}{c}{Speed} & \multicolumn{3}{c}{Heading}  & \multicolumn{3}{c}{Depth} & \multicolumn{3}{c}{Distance to coast}\\
\cmidrule(lr){2-4} \cmidrule(lr){5-7} \cmidrule(lr) {8-10} \cmidrule(lr) {11-13}
 & OTB & PS & DRB & OTB & PS & DRB & OTB & PS & DRB & OTB & PS & DRB \\
\midrule
mean & 142.87 & 137.72 & 444 & 179.45 & 177.63 & 444 & -65.76 & -60.18 & 444 & 15021.19 & 6061.46 & 444 \\
STD & 102.94 & 190.15 & 444 & 109.92 & 104.11 & 444 & 42.37 &  36.11 & 444 & 14990.39 & 7907.20 & 444 \\
lower quartile & 102 & 3 & 444 & 91 & 95 & 444 & -84.76 & -81.74 & 444 & 4526.24 & 1377.05 & 444 \\
median & 113 & 12 & 444 & 175 & 175 & 444 & -56.71 & -61.33 & 444 & 8883.02 & 3657.02 & 444 \\
upper quartile & 145 & 381 & 444 & 277 & 270 & 444 & -38.18 & -33.4 & 444 & 212 & 7605.9 & 444 \\
\bottomrule
\end{tabularx}
\caption{Statistics of speed, heading and depth for OTB & PS fishing vessel types}
\label{table_statistics}
\end{table}


\end{document}

下图显示了我遇到的问题,即列中的值溢出以及水平线没有到达表格末尾:

在此处输入图片描述 如何解决这个问题?

答案1

纠正问题后,您的表格根本就不适合可用空间。如果您不想更改字体、减少边距或使用其他软件包(例如tabularray我推荐的软件包)等,您可以移动底部的另外两个组

在此处输入图片描述

\documentclass{article}
\usepackage{multirow}
\usepackage{tabularx,ragged2e,booktabs}


\begin{document}

\begin{table}[h]
    \begin{tabularx}{\textwidth}{X *6{r}}
        \toprule \addlinespace[6pt]
        Statistics &
        \multicolumn{3}{c}{Speed} &
        \multicolumn{3}{c}{Heading} \\
        \cmidrule(lr){2-4}
        \cmidrule(lr){5-7}
        &
        \multicolumn{1}{c}{OTB} &
        \multicolumn{1}{c}{PS} &
        \multicolumn{1}{c}{DRB} &
        \multicolumn{1}{c}{OTB} &
        \multicolumn{1}{c}{PS} &
        \multicolumn{1}{c}{DRB} \\
        \midrule
        mean            & 142.87 & 137.72 & 444 &   179.45 &  177.63 & 444 \\
        STD             & 102.94 & 190.15 & 444 &   109.92 &  104.11 & 444 \\
        lower quartile  & 102    &   3    & 444 &    91    &   95    & 444 \\
        median          & 113    &  12    & 444 &   175    &  175    & 444 \\
        upper quartile  & 145    & 381    & 444 &   277    &  270    & 444 \\
        \addlinespace[3pt]
        \toprule \addlinespace[6pt]
        Statistics &
        \multicolumn{3}{c}{Depth} &
        \multicolumn{3}{c}{Distance to coast}\\
        \cmidrule(lr){2-4}
        \cmidrule(lr){5-7}
        &
        \multicolumn{1}{c}{OTB} &
        \multicolumn{1}{c}{PS} &
        \multicolumn{1}{c}{DRB} &
        \multicolumn{1}{c}{OTB} &
        \multicolumn{1}{c}{PS} &
        \multicolumn{1}{c}{DRB} \\
        \midrule
        mean            & -65.76 & -60.18 & 444 & 15021.19 & 6061.46 & 444 \\
        STD             &  42.37 &  36.11 & 444 & 14990.39 & 7907.20 & 444 \\
        lower quartile  & -84.76 & -81.74 & 444 &  4526.24 & 1377.05 & 444 \\
        median          & -56.71 & -61.33 & 444 &  8883.02 & 3657.02 & 444 \\
        upper quartile  & -38.18 & -33.4  & 444 &   212    & 7605.9  & 444 \\
        \bottomrule
    \end{tabularx}
    \caption{Statistics of speed, heading and depth for OTB \& PS fishing vessel types}
    \label{table_statistics}
\end{table}

\end{document}

答案2

  • 您的表格代码在标题上有错误。应该&改为\&
  • 表格非常宽,因此您可能无法将其放入页面中。在下面的 MWE 中,我假设页边距为 20 毫米,并且您同意\small在表格中使用字体大小。
  • 如果不是这种情况,那么您有两个选择:
    • 以横向旋转桌子
    • \textwidh使用标题进行本地扩展changepage或使用\newgeometry此表的页面

对于表格,我将使用tabularray(最新版本 2022B)tabularx并对列siunit进行打包S,这样可以将数字在小数点处对齐。

\documentclass{article}
\usepackage[margin=20mm]{geometry}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}

\begin{document}
    \begin{table}[h]
    \sisetup{tight-spacing}
    \small
\begin{tblr}{colsep=2pt,
             colspec = {@{} c *{3}{X[c, si={table-format=3.2}]
                               X[c, si={table-format=3.2}]
                               X[c, si={table-format=3.0}]}
                            %
                               X[1.2, c, si={table-format=5.2}]
                               X[1.2, c, si={table-format=5.2}]
                               X[c, si={table-format=3.0}]
                        @{}},
             row{1,2} ={guard}
             }
    \toprule
\SetCell[r=2]{c}  Statistics
    &\SetCell[c=3]{c}   Speed       &   &   
    &\SetCell[c=3]{c}   Heading     &   &
    &\SetCell[c=3]{c}   Depth       &   &
    &\SetCell[c=3]{c}   Distance to coast
                                    &   &   \\
    \cmidrule[lr]{2-4} 
    \cmidrule[lr]{5-7} 
    \cmidrule[lr] {8-10} 
    \cmidrule[lr] {11-13}
        & OTB       & PS        & DRB
        & OTB       & PS        & DRB
        & OTB       & PS        & DRB
        & OTB       & PS        & DRB       \\
    \midrule
mean    & 142.87    & 137.72    & 444 
        & 179.45    & 177.63    & 444 
        & -65.76    & -60.18    & 444 
        & 15021.19  & 6061.46   & 444       \\
STD     & 102.94    & 190.15    & 444 
        & 109.92    & 104.11    & 444 
        & 42.37     &  36.11    & 444 
        & 14990.39  & 7907.20   & 444       \\
lower quartile 
        & 102       & 3         & 444 
        & 91        & 95        & 444 
        & -84.76    & -81.74    & 444 
        & 4526.24   & 1377.05   & 444       \\
median  & 113       & 12        & 444 
        & 175       & 175       & 444 
        & -56.71    & -61.33    & 444 
        & 8883.02   & 3657.02   & 444       \\
upper quartile 
        & 145       & 381       & 444 
        & 277       & 270       & 444 
        & -38.18    & -33.4     & 444 
        & 212       & 7605.9    & 444       \\
    \bottomrule
\end{tblr}
\caption{Statistics of speed, heading and depth for OTB \& PS fishing vessel types}
\label{table_statistics}
    \end{table}
\end{document}

在此处输入图片描述

相关内容