我正在尝试使用以下代码制作表格,但第一列第二行的内容与第一列第三行的内容重叠。整行都不会发生这种情况。我尝试使用 scriptsize、small,通过定义“extra”来更改行之间的长度,正如一些帖子所建议的那样,但似乎都不起作用。我在这里遗漏了什么?我得到了如下所示的输出,针对问题 - 列。
\newlength{\extra}
\setlength{\extra}{.8ex}
\begin{table}[]
\centering
\begin{tabular}{|l|l|l|l|l|}
\hline
\rowcolor[HTML]{67FD9A}
\textbf{\begin{tabular}[c]{@{}l@{}}Mechanical\\ System\end{tabular}}
& \textbf{\begin{tabular}[c]{@{}l@{}}Current limit\\ (A)\end{tabular}} &
\textbf{\begin{tabular}[c]{@{}l@{}}Power\\ Input (W)\end{tabular}} & \textbf{\begin{tabular}
[c]{@{}l@{}}Power\\ Output (W)\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Efficiency\\
(\%)\end{tabular}} \\ \hline
&
133 & 31807
& 28992 & 91.15
\\ \cline{2-5}
\multirow{-2}{*}{\textbf{\begin{tabular}[c]{@{}l@{}}\scriptsize With \\ \scriptsize
Rotational\\ \scriptsize Damper\end{tabular}}} & 200
& 37319 & 34067
& 91.285 \\ \hline
&
133 & 18159
& 16005 & 88.14
\\ [\extra] \cline{2-5}
\multirow{-2}{*}{\textbf{\begin{tabular}[c]{@{}l@{}}Without\\ Rotational\\
Damper\end{tabular}}} & 200
& 18603 & 16096
& 86.52 \\ \hline
\end{tabular}
\end{table}
答案1
那么基于的方法又如何呢tabularray
?
\documentclass[border=5mm]{standalone}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}
\definecolor{mygreen}{HTML}{67FD9A}
\begin{document}
\begin{tblr}{colspec={l S[table-format=3] S[table-format=5] S[table-format=5] S[table-format=3.2]},
hlines, vlines,
row{1}={mygreen, font=\bfseries\small, halign=c},
vspan=even}
{Mechanical\\ System}
& {{{{Current limit\\ (A)}}}}
& {{{{Power Input\\ (W)}}}}
& {{{Power Output\\ (W)}}}
& {{{Efficiency \\(\%)}}}
\\
{\SetCell[r=2]{}With\\ Rotational\\ Damper} & 133 & 31807 & 28992 & 91.15 \\
& 200 & 37319 & 34067 & 91.285 \\
{\SetCell[r=2]{}Without\\ Rotational\\ Damper} & 133 & 18159 & 16005 & 88.14 \\
& 200 & 18603 & 16096 & 86.52 \\
\end{tblr}
\end{document}
答案2
对@leandriss 回答的评论太长了。
更符合包语法的精神tabularray
,该表的代码是:
\documentclass[border=5mm]{standalone}
\usepackage{xcolor}
\definecolor{mygreen}{HTML}{67FD9A}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}
\begin{document}
\begin{tblr}{colspec={Q[c, wd=5em] Q[c, si={table-format=3}]
*{2}{Q[c, si={table-format=5}]}
Q[c, si={table-format=2.3}]
},
hlines, vlines,
row{1}={bg=mygreen, font=\bfseries\small},
vspan=even}
Mechanical System
& {{{Current limit\\ (A)}}}
& {{{Power Input\\ (W)}}}
& {{{Power Output\\ (W)}}}
& {{{Efficiency \\ (\%)}}} \\
\SetCell[r=2]{l} With Rotational Damper & 133 & 31807 & 28992 & 91.15 \\
& 200 & 37319 & 34067 & 91.285 \\
\SetCell[r=2]{l} Without Rotational Damper & 133 & 18159 & 16005 & 88.14 \\
& 200 & 18603 & 16096 & 86.52 \\
\end{tblr}
\end{document}
笔记:
与其他表格包相反,该tabularray
包处理multirow
单元格时会考虑相邻行的跨度,而不是这些行中的文本行数。因此,内容永远不会溢出单元格,而是自动增加最后一个跨度行的高度,或者当与选项一起使用时vspan=even
,所有跨度行的高度都会均匀增加。
包文档中描述了这个相对较新的(并且仍在快速发展的包)的更多特性以及它的语法,这些特性和语法与其他表包的语法有很大不同。