下面是我的代码
\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}