现在,在我询问之后,我正在将我的表格转换为 tabularray 表格这个问题这是我想要的输出,但第一列垂直居中:
现在我在转换为 tabularray 代码时遇到了问题:
\begin{table}[hbtp!]
\setlength{\tabcolsep}{0pt} % leave TeX the spacing
\begin{tblr}{ccccccccc}
\toprule
\SetCell[r=3,c=1]{c} Average Accuracy & \SetCell[c=4]{c}ResNet-50 & \SetCell[c=4]{c}MobileNet-V2 \\
\cmidrule{2-5} \cmidrule{6-9}
& \SetCell[c=2]{c} S & \SetCell[c=2]{c} NS & \SetCell[c=2]{c} S & \SetCell[c=2]{c} NS \\
\cmidrule{2-3} \cmidrule{4-5} \cmidrule{6-7} \cmidrule{8-9}
& {SVM} & {KNN} & {SVM} & {KNN} & {SVM} & {KNN} & {SVM} & {KNN} \\
\midrule
Training & 0.85 & 0.74 & 0.73 & 0.72 & 0.76 & 0.70 & 0.70 & 0.69 \\
Test & 0.84 & 0.73 & 0.72 & 0.70 & 0.75 & 0.69 & 0.69 & 0.62 \\
\bottomrule
\SetCell{c=9} \footnotesize S: Segmented; NS: Nonsegmented \\
\end{tblr}
\caption{Cassava Disease Detection System Performance Results \parencite{Sedat2021Disease}}
\label{table:Cassava Disease Detection System Performance Results}
\end{table}
LaTeX 抛出了这些错误,但我认为这些都是由于我编写表格的方式造成的。但我不知道我哪里出错了,因为列和行是匹配的。
非常感谢您的帮助。谢谢!
答案1
复制屏幕截图的三个更改:
对于第一列,我建议使用
X[halign=l]
。c
这样可以在单元格内换行,还可以让表格调整宽度以覆盖整个文本宽度用于
\cmidrule[lr]{4-5}
缩短左侧和/或右侧的规则,以便在它们之间留出一些空间如果您在 tabularray 中合并多列单元格,您仍然必须列出所有
&
跳过的单元格。如果不这样做,单元格将会丢失。
\documentclass{article}
\usepackage{geometry}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\begin{document}
\noindent
\begin{tblr}{
colspec={@{}X[halign=l,1.2]XXXXXXXX@{}},
column{2-Z}={halign=c},
hspan=even
}
\toprule
\SetCell[r=3]{} Average Accuracy & \SetCell[c=4]{}ResNet-50 &&&& \SetCell[c=4]{}MobileNet-V2 &&& \\
\cmidrule{2-5} \cmidrule{6-9}
& \SetCell[c=2]{} Segmentation && \SetCell[c=2]{} Non-Segmentation && \SetCell[c=2]{} Segmentation && \SetCell[c=2]{} Non-Segmentation &\\
\cmidrule[r]{2-3} \cmidrule[lr]{4-5} \cmidrule[lr]{6-7} \cmidrule[l]{8-9}
& {SVM} & {KNN} & {SVM} & {KNN} & {SVM} & {KNN} & {SVM} & {KNN} \\
\midrule
Training & 0.85 & 0.74 & 0.73 & 0.72 & 0.76 & 0.70 & 0.70 & 0.69 \\
Test & 0.84 & 0.73 & 0.72 & 0.70 & 0.75 & 0.69 & 0.69 & 0.62 \\
\bottomrule
\end{tblr}
\end{document}