我正在寻找改进下表布局的想法。
- 有没有更好的方法来分离 ABC 指标和 XYZ 指标(除了为每个指标使用单独的表格)?
- 我应该将算法行转换为列吗?
- 我应该将数据集行转换为列吗?
我将非常感激任何想法,谢谢。
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{tabularx,ragged2e,booktabs}
\begin{document}
\begin{table*}[!ht]
\caption{Evaluation results}
\centering
\setlength{\tabcolsep}{4pt}
\begin{tabularx}{\textwidth}{>{\hsize=1.9\hsize\bfseries\RaggedRight}X!{\extracolsep{\fill}}*{6}{>{\centering\arraybackslash\hsize=0.48\hsize}X}}
\toprule[1pt]\midrule[0.3pt]
\multicolumn{7}{c}{\textbf{ABC Metrics}} \\ \midrule[0.3pt]
\textbf{Algorithm}& \multicolumn{2}{c}{\textit{Algo 1}} & \multicolumn{2}{c}{\textit{Algo 2}} & \multicolumn{2}{c}{\textit{Algo 3}} \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7}%
{Dataset} & $D_1$ & $D_2$ & $D_1$ & $D_2$ & $D_1$ & $D_2$ \\
\addlinespace%
{Matric 1} & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace%
{Matric 2} & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace%
{Matric 3} & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace
{Matric 4} & 0 & 0 & 0 & 0 & 0 & 0 \\
\midrule
\multicolumn{7}{c}{\textbf{XYZ Metrics}} \\ \midrule[0.3pt]
\textbf{Algorithm}& \multicolumn{2}{c}{\textit{Algo 1}} & \multicolumn{2}{c}{\textit{Algo 2}} & \multicolumn{2}{c}{\textit{Algo 3}} \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7}%
{Matric 5} & \multicolumn{2}{c}{0} & \multicolumn{2}{c}{0} & \multicolumn{2}{c}{0} \\ \addlinespace
{Matric 6} & \multicolumn{2}{c}{0} & \multicolumn{2}{c}{0} & \multicolumn{2}{c}{0} \\
\midrule[0.3pt]\bottomrule[1pt]
\end{tabularx}
\end{table*}
\end{document}
答案1
我只修复了您列宽计算中的一些不一致之处。定义宽度的总和是 4.78。但它应该是一个整数。其他一切都是基于意见的......
我对您的表格代码的建议(根据意见进行了一些更改并简化了书写)是:
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage[skip=1ex]{caption}
\usepackage{ragged2e}
\usepackage{booktabs,tabularx}
\newcommand\mcc[1]{\multicolumn{2}{c}{#1}}
\begin{document}
\begin{table}[!ht]
\caption{Evaluation results}
\centering
\begin{tabularx}{\textwidth}{
>{\hsize=0.4\hsize\bfseries\RaggedRight}X
*{6}{>{\hsize=0.1\hsize\centering\arraybackslash}X}}
\toprule
\multicolumn{7}{c}{\textbf{ABC Metrics}} \\
\midrule
\textbf{Algorithm}
& \mcc{\textit{Algo 1}} & \mcc{\textit{Algo 2}} & \mcc{\textit{Algo 3}} \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7}%
Dataset & $D_1$ & $D_2$ & $D_1$ & $D_2$ & $D_1$ & $D_2$ \\
\midrule
Matric 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace%
Matric 2 & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace%
Matric 3 & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace
Matric 4 & 0 & 0 & 0 & 0 & 0 & 0 \\
\midrule
\multicolumn{7}{c}{\textbf{XYZ Metrics}} \\ \midrule[0.3pt]
\textbf{Algorithm}
& \mcc{\textit{Algo 1}} & \mcc{\textit{Algo 2}} & \mcc{\textit{Algo 3}} \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7}%
{Matric 5} & \mcc{0} & \mcc{0} & \mcc{0} \\
\addlinespace
{Matric 6} & \mcc{0} & \mcc{0} & \mcc{0} \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
这使:
答案2
一些一般性观察和评论:
我不明白为什么您要使用 1 个
tabularx
环境来处理两个看起来没有太多联系的结构。我会使用两个独立的环境。由于似乎根本没有换行功能,我不明白为什么一
tabularx
开始要使用环境。为什么不使用环境tabular*
?就此而言,为什么不使用tabular
环境?
一些更具体的评论:
使用大胆的和/或斜体在标题单元格中,这样做是为了弥补视觉结构不清晰的问题。如果采用这种方法,您很可能给人留下这样的印象:(a) 组织能力不强,(b) 认为可以冲人大喊大叫。不过,我认识的人非常不喜欢被人大喊大叫。您的经历可能有所不同……
根据您提供的信息,该材料可以轻松地在两个独立的并行
tabular
环境中呈现。
以下解决方案尝试在不喊叫的情况下呈现材料,同时仍尝试在视觉上“开放”且吸引人。
附言:“matric” 是什么?
\documentclass{article}
\usepackage[margin=1in,letterpaper]{geometry}
\usepackage[skip=0.5\baselineskip]{caption} % optional
\usepackage{array,booktabs}
\begin{document}
\begin{table}[!ht]
\setlength\tabcolsep{10pt} % default: 6pt
\caption{Evaluation results}
\begin{tabular}[t]{@{} l *{6}{c} @{}}
\multicolumn{7}{@{}l}{ABC Metrics, for datasets $D_1$ and $D_2$} \\
\toprule
& \multicolumn{6}{c@{}}{Algorithm}\\
\cmidrule(l){2-7}
& \multicolumn{2}{c}{Algo 1}
& \multicolumn{2}{c}{Algo 2}
& \multicolumn{2}{c@{}}{Algo 3} \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(l){6-7}
& $D_1$ & $D_2$ & $D_1$ & $D_2$ & $D_1$ & $D_2$ \\
\midrule
Matric 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
Matric 2 & 0 & 0 & 0 & 0 & 0 & 0 \\
Matric 3 & 0 & 0 & 0 & 0 & 0 & 0 \\
Matric 4 & 0 & 0 & 0 & 0 & 0 & 0 \\
\bottomrule
\end{tabular}
\hspace{\fill}
\begin{tabular}[t]{@{} l ccc @{}}
\multicolumn{4}{@{}l}{XYZ Metrics} \\
\toprule
& \multicolumn{3}{c@{}}{Algorithm}\\
\cmidrule(l){2-4}
& Algo 1 & Algo 2 & Algo 3 \\
\midrule
Matric 5 & 0 & 0 & 0 \\
Matric 6 & 0 & 0 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案3
我建议使用这种变体布局,其正确系数为\hsize=
:
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage[skip=1ex]{caption}
\usepackage[table, svgnames]{xcolor}
\usepackage{ragged2e}
\usepackage{booktabs,tabularx}
\newcommand\mcc[1]{\multicolumn{2}{c}{#1}}
\begin{document}
\begin{table}[!ht]
\caption{Evaluation results}
\centering
\setlength{\extrarowheight}{2pt}
\setlength{\belowrulesep}{0pt}
\begin{tabularx}{\textwidth}{
>{\hsize=2.8\hsize\bfseries\RaggedRight}X
*{6}{>{\hsize=0.7\hsize\centering\arraybackslash}X}}
\toprule
& \multicolumn{6}{c}{\textbf{Algorithm}} \\
\cmidrule{2-7}
& \mcc{\textit{Algo 1}} & \mcc{\textit{Algo 2}} & \mcc{\textit{Algo 3}} \\
\rowcolor{WhiteSmoke} ABC Metrics\hfill Dataset & $D₁$ & $D₂$ & $D₁$ & $D₂$ & $D₁$ & $D₂$ \\
\addlinespace
Metric 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace%
Metric 2 & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace%
Metric 3 & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace
Metric 4 & 0 & 0 & 0 & 0 & 0 & 0 \\
\addlinespace
\rowcolor{WhiteSmoke} XYZ Metrics & & & & & & \\
\addlinespace
{Metric 5} & \mcc{0} & \mcc{0} & \mcc{0} \\
\addlinespace
{Metric 6} & \mcc{0} & \mcc{0} & \mcc{0} \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}