不均匀的多列表格未填满整个宽度。Latex

不均匀的多列表格未填满整个宽度。Latex

我在 Latex 中遇到了表格问题,无法使用。我在网上发现,我可以将表格放入多列环境中,将 4 列更改为 3 列,如果我从 4 列更改为 2 列,这似乎可以正常工作,但从 4 列更改为 3 列则不行。

我不确定问题出在哪里,但我想我必须以某种方式定义多列内表格的宽度。

我已经包含了代码以及生成的表格。希望正确完成后它看起来应该会很明显 :)

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}

\usepackage{tabularx}
\setlength{\arrayrulewidth}{1mm}
\setlength{\tabcolsep}{18pt}
\begin{document}

\begin{table}[]
    \centering
    \begin{tabular}{|c|c|c|c|}
        \hline
       \multicolumn{4}{|c|}{Site 3 freeboard statistics}\\
       \hline
        Data & Mean ($\mu$) & Median & Spread ($\sigma$) \\
        \hline
        ALS mid line & 1.018 & 0.947 & 0.539\\
        ALS mid full width & 0.481 & 0.389  & 0.296 \\
        ALS at CryoSat width & 0.664 & 0.561 & 0.500\\
        Karen & 1.047 & 1.017 & 0.432 \\
        CryoSat w/o. snow & 0.200 & 0.200 & 0.080\\
        CryoSat w. snow & 0.401 & 0.401 & 0.101\\
        \hline
        \multicolumn{4}{|c|}{Averaged to CryoSat resolution}\\
        \hline
        \multicolumn{4}{|c|}{\begin{tabular}{c|c|c} &  First point & Second point  \\
        \hline
        ALS mid line & 0.826 & 1.211 \\
        ALS mid full width & 0.545 & 0.413 \\
        ALS at CryoSat width & &  \\
        KAREN & 0.877 & 1.220 \\
        CryoSat w/o. snow & 0.12 & 0.28 \\
        CryoSat w. snow & 0.502 & 0.300
        \end{tabular}}\\
        \hline
    \end{tabular}
    \caption{Snow statistics when fitting the in situ data only along latitude.}
    \label{tab:site2_stat}
\end{table}
\end{document}

生成的表格图像。下部表格应与上部表格宽度相同,同时仍具有居中列

答案1

我将按照以下方式书写您的表格:

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs, makecell}
\usepackage{siunitx}

\begin{document}
    \begin{table}[htb]
    \centering
    \setlength\tabcolsep{0pt}
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}} 
                l *{5}{S[table-format=1.3]} }
    \toprule
    &   \multicolumn{3}{c}{\makecell{Site 3\\ freeboard statistics}}
        &  \multicolumn{2}{c}{\makecell{Averaged to\\ 
                                        resolution}}        \\
    \cmidrule(l){2-4}\cmidrule(l){5-6}
Data                    & {\makecell[t]{Mean\\ ($\mu$)}}   
                                & {\makecell[t]{Median}} 
                                        & {\makecell[t]{Spread\\ ($\sigma$)}}
                                                & {\makecell[t]{First\\ point}}
                                                        & {\makecell[t]{Second\\ point}}   \\
    \midrule
ALS mid line            & 1.018 & 0.947 & 0.539 & 0.826 & 1.211 \\
ALS mid full width      & 0.481 & 0.389 & 0.296 & 0.545 & 0.413 \\
ALS at CryoSat width    & 0.664 & 0.561 & 0.500 &       &       \\
Karen                   & 1.047 & 1.017 & 0.432 & 0.877 & 1.220 \\
CryoSat w/o. snow       & 0.200 & 0.200 & 0.080 & 0.12  & 0.28  \\
CryoSat w. snow         & 0.401 & 0.401 & 0.101 & 0.502 & 0.300 \\
    \bottomrule
\end{tabular*}
    \caption{Snow statistics when fitting the in situ data only along latitude.}
    \label{tab:site2_stat}
\end{table}
\end{document}

在此处输入图片描述

  • 在表格设计中,下面的评论会考虑您的问题
  • 对于数字,使用包S中定义的列类型siunitx
  • 省略表格的垂直线
  • 对于水平线,使用booktabs包中定义的规则
  • 在我看来,建议的表格设计看起来更专业

答案2

这是 OP 要求的表格,带有围栏和粗条。如您所见,我定义了三种新的列类型,分别是线宽的 4/10、3/10 和 2/10。这里的“线索”是定义第二个表格宽度的线:

\multicolumn{4}{@{}c@{}}{\begin{tabular}{|N|M|M|}

在这里,我从多列单元格中删除了侧边距和垂直线。这样,嵌套表格的宽度将与“主”表格一样宽,并且很容易计算列宽。

如果你使用表格型与固定宽度的w列结合大批,计算就简单多了。首先,设置一个固定宽度的列,然后X为主表格设置三列,为嵌套表格设置两列。表格型为您完成所有复杂的数学运算。我定义了一个C列,它只是一个居中的X列。参见下面的示例 2

注意! @Zarko 的表格好多了,我建议你按照他的建议来制作你的表格

示例 1 – 表格

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}


\usepackage{tabularx, array}
\setlength{\arrayrulewidth}{1mm}
\setlength{\tabcolsep}{18pt}
\setlength{\extrarowheight}{2pt}

\newcolumntype{N}{wc{\dimexpr((\linewidth/10)*4-(2\tabcolsep+2\arrayrulewidth))\relax}}
\newcolumntype{O}{wc{\dimexpr((\linewidth/10)*2-(2\tabcolsep+\arrayrulewidth))\relax}}
\newcolumntype{M}{wc{\dimexpr((\linewidth/10)*3-(2\tabcolsep+\arrayrulewidth))\relax}}


\begin{document}

\begin{table}[th!]
    \centering
    \begin{tabular}{|N|*{3}{O|}}
        \hline
       \multicolumn{4}{|c|}{Site 3 freeboard statistics}\\
       \hline
        Data & Mean ($\mu$) & Median & Spread ($\sigma$) \\
        \hline
        ALS mid line & 1.018 & 0.947 & 0.539\\
        ALS mid full width & 0.481 & 0.389  & 0.296 \\
        ALS at CryoSat width & 0.664 & 0.561 & 0.500\\
        Karen & 1.047 & 1.017 & 0.432 \\
        CryoSat w/o. snow & 0.200 & 0.200 & 0.080\\
        CryoSat w. snow & 0.401 & 0.401 & 0.101\\
        \hline
        \multicolumn{4}{|c|}{Averaged to CryoSat resolution}\\
        \hline
        \multicolumn{4}{@{}c@{}}{\begin{tabular}{|N|M|M|}
         &  First point & Second point  \\
        \hline
        ALS mid line & 0.826 & 1.211 \\
        ALS mid full width & 0.545 & 0.413 \\
        ALS at CryoSat width & &  \\
        KAREN & 0.877 & 1.220 \\
        CryoSat w/o. snow & 0.12 & 0.28 \\
        CryoSat w. snow & 0.502 & 0.300
        \end{tabular}}\\
        \hline
    \end{tabular}
    \caption{Snow statistics when fitting the in situ data only along latitude.}
    \label{tab:site2_stat}
\end{table}
\end{document}

示例 2 – tabularx

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx, array}
\setlength{\arrayrulewidth}{1mm}
\setlength{\tabcolsep}{18pt}
\setlength{\extrarowheight}{2pt}

\newcolumntype{C}{>{\centering\arraybackslash}X}

\begin{document}

\begin{table}[th!]
    \centering
    \begin{tabularx}{\linewidth}{|wc{4cm}|*{3}{C|}}
        \hline
       \multicolumn{4}{|c|}{Site 3 freeboard statistics}\\
       \hline
        Data & Mean ($\mu$) & Median & Spread ($\sigma$) \\
        \hline
        ALS mid line & 1.018 & 0.947 & 0.539\\
        ALS mid full width & 0.481 & 0.389  & 0.296 \\
        ALS at CryoSat width & 0.664 & 0.561 & 0.500\\
        Karen & 1.047 & 1.017 & 0.432 \\
        CryoSat w/o. snow & 0.200 & 0.200 & 0.080\\
        CryoSat w. snow & 0.401 & 0.401 & 0.101\\
        \hline
        \multicolumn{4}{|c|}{Averaged to CryoSat resolution}\\
        \hline
        \multicolumn{4}{@{}c@{}}{{\begin{tabularx}{\linewidth}{|wc{4cm}|C|C|}
         &  First point & Second point  \\
        \hline
        ALS mid line & 0.826 & 1.211 \\
        ALS mid full width & 0.545 & 0.413 \\
        ALS at CryoSat width & &  \\
        KAREN & 0.877 & 1.220 \\
        CryoSat w/o. snow & 0.12 & 0.28 \\
        CryoSat w. snow & 0.502 & 0.300
        \end{tabularx}}}\\
        \hline
    \end{tabularx}
    \caption{Snow statistics when fitting the in situ data only along latitude.}
    \label{tab:site3_stat}
\end{table}
\end{document}

相关内容