如何修改这个表?

如何修改这个表?

下面是我的代码



\documentclass{article}
\usepackage{tabularx}

\begin{document}
\begin{table}[htbp]
  \centering
  \caption{Add caption}
    \begin{tabular}{|ccc|ccc|cc|cc|cc|cc|}
    \toprule
    \multicolumn{6}{|c|}{O1}                      & \multicolumn{4}{c|}{O2}       & \multicolumn{4}{c|}{O3} \\
    \midrule
    \multicolumn{4}{|c}{O1.1}     & \multicolumn{2}{c|}{O1.2} & \multicolumn{2}{c}{O2.1} & \multicolumn{2}{c|}{O2.2} & \multicolumn{2}{c}{O3.1} & \multicolumn{2}{c|}{O3.2} \\
    \midrule
    Criteria 1.1.1 & Criteria 1.1.2 & Criteria 1.1.3 & Criteria 1.1.4 & Criteria 1.2.1 & Criteria 1.2.2 & Criteria 2.1.1 & Criteria 2.1.2 & Criteria 2.2.1 & Criteria 2.2.2 & Criteria 3.1.1 & Criteria 3.1.2 & Criteria 3.2.1 & Criteria 3.2.2 \\
    \midrule
    1     & 2     & 3     &       &       &       &       &       &       &       &       &       &       &  \\
    \bottomrule
    \end{tabular}%
  \label{tab:addlabel}%
\end{table}%
\end{document}

我生成的表格不太清楚,如下图所示。 在此处输入图片描述

我希望表格看起来像这样。我该如何修改它?如果这个表格太宽,也可以考虑转置表格;怎么做?

在此处输入图片描述

答案1

您犯了表格中最常见的错误之一,即重复信息。

由于每一列都与标准有关,因此请删除重复并使用包含所有标准的单个标题。

\documentclass{article}
\usepackage{booktabs}

\begin{document}
\begin{table}[htbp]

\centering
\footnotesize
\setlength{\tabcolsep}{0pt}

\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}*{14}{c}}
\toprule
\multicolumn{14}{c}{Criteria} \\
\cmidrule{1-14}
\multicolumn{6}{c}{O1} & \multicolumn{4}{c}{O2} & \multicolumn{4}{c}{O3} \\
\cmidrule{1-6} \cmidrule{7-10} \cmidrule{11-14}
\multicolumn{4}{c}{O1.1} & \multicolumn{2}{c}{O1.2} & \multicolumn{2}{c}{O2.1} &
\multicolumn{2}{c}{O2.2} & \multicolumn{2}{c}{O3.1} & \multicolumn{2}{c}{O3.2} \\
\cmidrule{1-4} \cmidrule{5-6} \cmidrule{7-8}
\cmidrule{9-10} \cmidrule{11-12} \cmidrule{13-14}
1.1.1 & 1.1.2 & 1.1.3 & 1.1.4 & 1.2.1 & 1.2.2 & 
2.1.1 & 2.1.2 & 2.2.1 & 2.2.2 & 
3.1.1 & 3.1.2 & 3.2.1 & 3.2.2 \\
\midrule
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & A & B & C & D & E \\
\bottomrule
\end{tabular*}

\caption{Add caption}
\label{tab:addlabel}

\end{table}

\end{document}

这对于标准页面宽度来说\footnotesize已经足够了,但对于您的实际表格来说可能并非如此,这取决于其中的数据。

在此处输入图片描述

垂直规则不是必需的;实际上它们会妨碍可读性。水平规则告诉读者列是如何分组的。

注意。我将标题放在表格下方,因为这是标准类的默认设置。如果您希望将其放在表格上方,请加载包caption,或者至少在标题和表格之间添加一些垂直空间。

答案2

  • 您的表格太宽,无法用默认article布局放在页面上。
  • 选项包括
    • 使用相应的包\small来调整字体大小和页面布局geometry
    • 使用默认页面布局,旋转表格并使用small字体大小
  • 在所有情况下,将列标题写成两行
  • 在后一种情况下你可以得到:

在此处输入图片描述

对于这个表我将使用 tabularray包:

\documentclass{article}
%\usepackage[margin=25mm]{geometry}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\usepackage[skip=1ex]{caption}
\usepackage{rotating}
\usepackage{tabularray}

\begin{document}
\begin{sidewaystable}
  \caption{Add caption}
  \small
  \setlength\tabcolsep{3pt}
\begin{tblr}{hline{1,Z} = 1pt, hline{2-Y}, vlines,
             colspec = {*{14}{X[c]}},
             colsep  = 3pt,
                 }
\SetCell[c=6]{c}    O1
    &   &   &   &   &   &   \SetCell[c=4]{c}    O2
                            &   &   &   &   \SetCell[c=4]{c}    O3
                                            &   &   &   \\
    \SetCell[c=4]{c}    O1.1
    &   &   &   &   \SetCell[c=2]{c}    O2.1
                    &   &   \SetCell[c=4]{c}    O2.2
                            &   &   &   &   \SetCell[c=2]{c}    O3.1
                                            &   &   \SetCell[c=2]{c}    O3.2
                                                    &                               \\
Criteria 1.1.1  & Criteria 1.1.2 & Criteria 1.1.3 & Criteria 1.1.4 
                & Criteria 1.2.1 & Criteria 1.2.2  
                & Criteria 2.1.1 & Criteria 2.1.2 
                & Criteria 2.2.1 & Criteria 2.2.2 
                & Criteria 3.1.1 & Criteria 3.1.2 
                & Criteria 3.2.1 & Criteria 3.2.2  \\
 1  & 2 & 3 &   &   &   &   &    &   &   &   &    &   &             \\
    \end{tblr}%
  \label{tab:addlabel}%
\end{sidewaystable}
\end{document}

相关内容