我尝试使用以下代码,结果显示如下意外结果(我还附上了我期望的结果):
\documentclass{article}
\usepackage{siunitx}
\usepackage{array,booktabs}
\begin{document}
\begin{table}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lSS@{}} \\\toprule
&{\textit{Score}}\\\midrule
\textbf{class 1} & 0 \\
\midrule
&\multicolumn{2}{cc}{\textbf{Model A}\textbf{Model B}}\\
\midrule
\textbf{class A} 0 & 0\\
\textbf{class B} 0 & 0\\
\textbf{class C} 0 & 0\\
\textbf{class D} 0 & 0\\
\midrule
\textbf{class X} 0 & 0\\
\textbf{class Y} 0 & 0\\
\textbf{class Z} 0 & 0\\
\bottomrule
\end{tabular*}
\caption{caption here}
\label{table:results}
\end{table}
\end{document}
这有三个主要问题,如下所示:(1)“分数”的对齐应该居中,(2)模型 A 模型 B 重复,以及(3)值0
向左移动
我试图获得如下输出:
答案1
该nicematrix
包是重现绘制表格所需的唯一包。
该软件包提供\Block
以下命令:
(1)同时取代multirow
和multicolumn
;
\\
(2)允许在单元格内部使用(新行);
(3)内容水平、垂直居中;
\Block{1-2}{..}
将生成一个高 1 行、宽 2 列的单元格。
技术出版物中通常不鼓励使用垂直线,但在许多情况下它们当然很有用。有些软件包很难连接垂直线和水平线。但 并非如此nicematrix
。
正如您所看到的,最终的代码更加简单,因此更容易理解和更改。
第一次或更改表布局时需要进行两次编译。
也可以看看https://tex.stackexchange.com/a/584492/161015
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\NiceMatrixOptions{cell-space-top-limit = 5pt,cell-space-bottom-limit = 5pt} %expand the cells vertically and horizontally
\begin{table}
\centering
\begin{NiceTabular}{|>\bfseries{c}|c|c|} % first column in bf
\hline
& \Block{1-2}{\textit{Score}} \\
\hline
class 1 & \Block{1-2}{0} \\
\hline
&\textbf{Model A} & \textbf{Model B}\\
\hline
class A & 0 & 0 \\
class B & 0 & 0 \\
class C & 0 & 0 \\
\hline
class X & 0 & 0 \\
class Y & 0 & 0 \\
class Z & 0 & 0 \\
\hline
\end{NiceTabular}
\caption{Score of classes}
\label{tbl:scoreii}
\end{table}
\end{document}
答案2
可以从以下几点开始:
\documentclass{article}
\usepackage{siunitx}
\usepackage{array,booktabs}
\begin{document}
\begin{table}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lSS@{}}
\toprule
&\multicolumn{2}{c}{\textit{Score}}\\
\midrule
\textbf{class 1} & \multicolumn{2}{c}{0} \\
\midrule
&\textbf{Model A} & \textbf{Model B}\\
\midrule
\textbf{class A} & 0 & 0\\
\textbf{class B} & 0 & 0\\
\textbf{class C} & 0 & 0\\
\textbf{class D} & 0 & 0\\
\midrule
\textbf{class X} & 0 & 0\\
\textbf{class Y} & 0 & 0\\
\textbf{class Z} & 0 & 0\\
\bottomrule
\end{tabular*}
\caption{caption here}
\label{table:results}
\end{table}
\end{document}
答案3
使用array
和booktabs
包足以编写您的表格...(不清楚为什么您使用“S”列,特别是因为您没有指定任何格式可能性):
\documentclass{article}
\usepackage{array, makecell}
\begin{document}
\begin{table}
\setcellgapes{4pt}
\makegapedcells
\centering
\begin{tabular}{|>{\bfseries}l | c | c | }
\Xhline{1.2pt}
& \multicolumn{2}{c|}{\textit{Score}} \\
class 1 & \multicolumn{2}{c|}{0} \\
\Xhline{0.8pt}
& \textbf{Model A}
& \textbf{Model B} \\
\hline
class A & 0 & 0 \\
class B & 0 & 0 \\
class C & 0 & 0 \\
class D & 0 & 0 \\
\hline
class X & 0 & 0 \\
class Y & 0 & 0 \\
class Z & 0 & 0 \\
\Xhline{1.2pt}
\end{tabular}
\caption{caption here}
\label{table:results}
\end{table}
\end{document}
经过一次编译后,结果为: