将多列单元格置于两个单元格上方居中

将多列单元格置于两个单元格上方居中

我是 Latex 的新手,用它制作表格实在太难了。我使用 overleaf 作为提供商。我在调整多列单元格的单元格使其居中时遇到了问题。我在网上查过,有很多答案。然而,在我的情况下,由于某种原因,它们都没有起作用。有人能帮帮我吗?

\begin{table}[H]
\centering
\caption{Performance Metrics for Weather-Insensitive and Weather-Aware Models.\label{Table2}}
    \begin{adjustwidth}{-\extralength}{0cm}
        \newcolumntype{c}{>{\centering\arraybackslash}X}
        \begin{tabularx}{\fulllength}{cccccccc}
            \toprule 
            && \multicolumn{2}{c}{\textbf{RMSE}}    & \multicolumn{2}{c}{\textbf{AAE}} & \multicolumn{2}{c}{\textbf{MAPE}} & \\
            \textbf{Location}   & \textbf{Prediction Interval}  & Weather-insensitive & Weather-aware & Weather-insensitive & Weather-aware &Weather-insensitive & Weather-aware \\
            \hline
            & t+5 & 4.98 & 4.99& 2.94& 2.94&4.11&4.22 \\
            \multirow{1}{*}{A} & t+10 &6.7&5.85&3.49&3.33&5.51&4.71 \\
            & t+15 &7.84&7.97&4.07&4.10&6.74&6.83\\
            \hline
            & t+5 &4.23&    4.21&   2.56    &2.57   &3.47   &3.47\\
            \multirow{1}{*}{B} & t+10   &5.80&  5.53&   3.24&   3.14&   4.50
            & 4.33 \\
            & t+15& 6.27&   6.12&   3.45&   3.40&   4.96&   4.90\\
            \hline
            & t+5&  5.32&   5.27&   2.97&   3.00&   4.38&   4.32\\
            \multirow{1}{*}{C} & t+10   &6.03   &6.07&  3.26&   3.24&   5.10&   5.07 \\
            & t+15&     6.66&   6.64&   3.51&   3.49&   5.53&   5.52\\
            \hline
             &  t+5 &5.00   &4.90&  2.65&   2.61&   3.28&   3.21\\
            \multirow{1}{*}{D} &t+10&   6.75&   6.52&   3.25&   3.19&   4.15&   4.10 \\
            & t+15  & 7.20  & 7.18&     3.65&   3.60&   4.77&   4.64\\

            \bottomrule
        \end{tabularx}
    \end{adjustwidth}
\end{table}

输出为在此处输入图片描述 RMSE、AAE 和 MAPE 应该位于每两列的中心。

答案1

首先,说明

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

非常危险,因为c列类型在 LaTeX 内核中定义并被广泛使用。我建议您使用C而不是c作为新列类型的名称。

接下来,这些\multirow说明似乎没有做任何有用的事情。(为了有机会发挥作用,的第一个参数\multirow应该大于 1。)因此,我将省略\multirow包装器。

最后,表格的标题太拥挤了。我建议你大大简化它,也许可以按照下面这个例子的方法。

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx,booktabs}
\usepackage{amsmath} % for \smash[b] macro
\newcolumntype{C}{>{\centering\arraybackslash\hspace{0pt}}X}
\newcommand\mytab[1]{\smash[b]{\begin{tabular}[t]{@{} C @{}} #1 \end{tabular}}}

\begin{document}

\begin{table}[ht]
\setlength\tabcolsep{4pt} % default value: 6pt
\caption{Performance metrics for weather-insensitive (W-I) and weather-aware (W-A) models.\strut} \label{Table2}
\begin{tabularx}{\textwidth}{@{} *{8}{C} @{}}
\toprule 
\mytab{Location} & \mytab{Prediction Interval} 
& \multicolumn{2}{c}{RMSE} & \multicolumn{2}{c}{AAE} & \multicolumn{2}{c@{}}{MAPE} \\
\cmidrule(lr){3-4} \cmidrule(lr){5-6} \cmidrule(l){7-8}
 & & W-I & W-A & W-I & W-A & W-I & W-A \\[1.5ex]
\midrule
  & $t+\phantom{0}5$ & 4.98 & 4.99 & 2.94 & 2.94 & 4.11 & 4.22 \\
A & $t+10$ & 6.70 & 5.85 & 3.49 & 3.33 & 5.51 & 4.71 \\
  & $t+15$ & 7.84 & 7.97 & 4.07 & 4.10 & 6.74 & 6.83 \\
\addlinespace
  & $t+\phantom{0}5$ & 4.23 & 4.21 & 2.56 & 2.57 & 3.47 & 3.47 \\
B & $t+10$ & 5.80 & 5.53 & 3.24 & 3.14 & 4.50 & 4.33 \\
  & $t+15$ & 6.27 & 6.12 & 3.45 & 3.40 & 4.96 & 4.90 \\
\addlinespace
  & $t+\phantom{0}5$ & 5.32 & 5.27 & 2.97 & 3.00 & 4.38 & 4.32 \\
C & $t+10$ & 6.03 & 6.07 & 3.26 & 3.24 & 5.10 & 5.07 \\
  & $t+15$ & 6.66 & 6.64 & 3.51 & 3.49 & 5.53 & 5.52 \\
\addlinespace
  & $t+\phantom{0}5$ & 5.00 & 4.90 & 2.65 & 2.61 & 3.28 & 3.21 \\
D & $t+10$ & 6.75 & 6.52 & 3.25 & 3.19 & 4.15 & 4.10 \\
  & $t+15$ & 7.20 & 7.18 & 3.65 & 3.60 & 4.77 & 4.64 \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

答案2

我尝试遵循您的表格设计。在删除c代码片段中的所有错误(其中包括危险的重新定义的默认列类型)并猜测文档序言可能是什么样子后,我构建了以下 MWE:

\documentclass{book}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\usepackage{tabularx}
\usepackage{booktabs, makecell}
\renewcommand\theadfont{\normalsize\bfseries}
\usepackage[strict]{changepage}

\begin{document}
\begin{table}[ht]
    \begin{adjustwidth}{0cm}{-\dimexpr\marginparwidth+\marginparsep}
\caption{Performance Metrics for Weather-Insensitive and Weather-Aware Models.\label{Table2}}
    \newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{tabularx}{\linewidth}{@{} c c *{6}{C} @{}}
    \toprule
    &       &   \multicolumn{2}{c}{\textbf{RMSE}}    
                            &   \multicolumn{2}{c}{\textbf{AAE}}
                                            &   \multicolumn{2}{c}{\textbf{MAPE}}      
                                                                    \\
    \cmidrule(rl){3-4}  \cmidrule(rl){5-6}  \cmidrule(rl){7-8}
\textbf{Location}   
    & \thead[t]{Prediction\\ Interval}  
            & Weather-insensitive 
                    & Weather-aware 
                            & Weather-insensitive 
                                    & Weather-aware 
                                            & Weather-insensitive 
                                                    & Weather-aware \\
    \midrule
    & t+5   & 4.98  & 4.99  & 2.94  & 2.94  & 4.11  & 4.22  \\
A   & t+10  & 6.7   & 5.85  & 3.49  & 3.33  & 5.51  & 4.71  \\
    & t+15  & 7.84  & 7.97  & 4.07  & 4.10  & 6.74  & 6.83  \\
    \midrule
    & t+5   & 4.23  & 4.21  & 2.56  & 2.57  & 3.47  & 3.47  \\
B   & t+10  & 5.80  & 5.53  & 3.24  & 3.14  & 4.50  & 4.33  \\
    & t+15  & 6.27  &¸6.12  & 3.45  & 3.40  & 4.96  & 4.90  \\
    \midrule
    & t+5   &  5.32 & 5.27  & 2.97  & 3.00  & 4.38  & 4.32  \\
C   & t+10  & 6.03  & 6.07  & 3.26  & 3.24  & 5.10  & 5.07  \\
    & t+15  & 6.66  & 6.64  & 3.51  & 3.49  & 5.53  & 5.52  \\
    \midrule
    &  t+5  & 5.00  & 4.90  & 2.65  & 2.61  & 3.28  & 3.21  \\
D   & t+10  & 6.75  & 6.52  & 3.25  & 3.19  & 4.15  & 4.10  \\
    & t+15  & 7.20  & 7.18  & 3.65  & 3.60  & 4.77  & 4.64  \\
    \bottomrule
        \end{tabularx}
    \end{adjustwidth}
\end{table}
\end{document}

在此处输入图片描述

(红线表示页面布局)

答案3

如果你看一下你的表格,就会发现长短语造成了太多的空白。最简单的方法是使用更短的缩写词,并将其解释移到其他地方(移到标题或注释列表中)。表格本身可能需要再考虑一下。

其次,\label应放在后面\caption{},而不是里面。

另一件事是你重新定义了c列类型。你永远不应该这样做。它会导致不可预测的行为,并且很难调试。

所有 2 组列未按预期对齐的原因是您添加了额外的列分隔符&

经过几次快速修改后,表格可以适合标准页面,并且还有更多的改进空间。

编辑。标题看起来很糟糕,但我故意保留原样,因为它可能仍需要重新措辞。如果你想减少它的宽度,你可以把它包裹在里面minipage,例如

\begin{minipage}{0.8\linewidth}
  \caption{Performance Metrics for Weather-Insensitive and Weather-Aware Models.}
\end{minipage}

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{ragged2e}   % For \Centering and \RaggedRight
\usepackage{caption}
\captionsetup[table]{skip=3pt, position=top, format=hang}


\begin{document}
\begin{table}[tbh]
  \centering
  \caption{Performance Metrics for Weather-Insensitive and Weather-Aware Models.}
  \label{Table2}
  \newcolumntype{C}{>{\Centering}X}
  \newcolumntype{P}[1]{>{\RaggedLeft}p{#1}}
  \begin{tabularx}{\linewidth}{P{1.25cm} p{1cm} *6{C}}
    \toprule
    \multicolumn{1}{r}{\textbf{Location}}
    & \multicolumn{1}{c}{\textbf{PI}}
    & \multicolumn{2}{c}{\textbf{RMSE}}
    & \multicolumn{2}{c}{\textbf{AAE}}
    & \multicolumn{2}{c}{\textbf{MAPE}} \\
    \cmidrule(lr){3-4} \cmidrule(lr){5-6} \cmidrule(lr){7-8}
    &
    & W-i   % Weather-intensive
    & W-a   % Weather-aware
    & W-i
    & W-a
    & W-i
    & W-a \\
    \midrule
    & t+5  & 4.98 & 4.99 & 2.94 & 2.94 & 4.11 & 4.22 \\
    A & t+10 & 6.7  & 5.85 & 3.49 & 3.33 & 5.51 & 4.71 \\
    & t+15 & 7.84 & 7.97 & 4.07 & 4.10 & 6.74 & 6.83 \\
    \cmidrule{2-8}
    & t+5  & 4.23 & 4.21 & 2.56 & 2.57 & 3.47 & 3.47 \\
    B & t+10 & 5.80 & 5.53 & 3.24 & 3.14 & 4.50 & 4.33 \\
    & t+15 & 6.27 & 6.12 & 3.45 & 3.40 & 4.96 & 4.90 \\
    \cmidrule{2-8}
    & t+5  & 5.32 & 5.27 & 2.97 & 3.00 & 4.38 & 4.32 \\
    C & t+10 & 6.03 & 6.07 & 3.26 & 3.24 & 5.10 & 5.07 \\
    & t+15 & 6.66 & 6.64 & 3.51 & 3.49 & 5.53 & 5.52 \\
    \cmidrule{2-8}
    & t+5  & 5.00 & 4.90 & 2.65 & 2.61 & 3.28 & 3.21 \\
    D & t+10 & 6.75 & 6.52 & 3.25 & 3.19 & 4.15 & 4.10 \\
    & t+15 & 7.20 & 7.18 & 3.65 & 3.60 & 4.77 & 4.64 \\
    \bottomrule
    \multicolumn{8}{@{}l}{\rule{0pt}{2.75ex}\textbf{PI}: Prediction Interval,\qquad W-i: Wather-intensive,\qquad W-a: Weather-aware}
  \end{tabularx}
\end{table}
\end{document}

相关内容