完美解决在Latex的表格里的单元格内的文本紧贴着上边框线条的问题
问题
通常做表格的时候可能会遇到如表1所示的情况,也就是单元格中的文本紧贴着单元格顶部的线条,这样看起来总觉得很变扭。而正常情况下我们希望看到的效果如表2所示,也就是在垂直方向也希望单元格中的文本能上下居中。
一、通常出现表1的情况的代码如下
\begin{table}[h]
\centering
\begin{tabular}{cccccc}
\toprule
\multirow{2}{*}{$g$,$s$ Leves} & \multirow{2}{*}{Q-matrix} & \multirow{2}{*}{Models} & \multirow{2}{*}{Metrics} & \multicolumn{2}{c}{No. of $N$} \\ \cline{5-6}
& & & & 50 & 300 \\
\midrule
row1 & A.1 & B.1 & C.1 & D.1 & E.1 \\
row2 & A.2 & B.2 & C.2 & D.2 & E.2 \\
row3 & A.3 & B.3 & C.3 & D.3 & E.3 \\
row4 & A.4 & B.4 & C.4 & D.4 & E.4 \\
row5 & A.5 & B.5 & C.5 & D.5 & E.5 \\
\bottomrule
\end{tabular}
\caption{table 1}
\end{table}
\multirow{2}{}{ g g g, s s s Leves} & \multirow{2}{}{Q-matrix} & \multirow{2}{}{Models} & \multirow{2}{}{Metrics} & \multicolumn{2}{c}{No. of N N N} \ \cline{5-6}
问题就出在这一行上,通常我们给单元格添加边框用的命令为==\cline==当用这个命令的时候就容易出现表1中的问题。
二、解决办法,也就是表2的代码
\begin{table}[h]
\centering
\begin{tabular}{cccccc}
\toprule
\multirow{2}{*}{$g$,$s$ Leves} & \multirow{2}{*}{Q-matrix} & \multirow{2}{*}{Models} & \multirow{2}{*}{Metrics} & \multicolumn{2}{c}{No. of $N$} \\ \cmidrule{5-6}
& & & & 50 & 300 \\
\midrule
row1 & A.1 & B.1 & C.1 & D.1 & E.1 \\
row2 & A.2 & B.2 & C.2 & D.2 & E.2 \\
row3 & A.3 & B.3 & C.3 & D.3 & E.3 \\
row4 & A.4 & B.4 & C.4 & D.4 & E.4 \\
row5 & A.5 & B.5 & C.5 & D.5 & E.5 \\
\bottomrule
\end{tabular}
\caption{table 2}
\end{table}
解决办法就是换一个命令,改用 \cmidrule
- booktabs宏包提供的\cmidrule的格式如下
\cmidrule[<wd>](<trim>){a-b}
- {a-b}就是表示从第几列到第几列之间需要划一条线
- \cmidrule在连续使用的时候, 可以使用(lr)表示间距的表格线可以左右向内缩短一小段距离, 如果只向左,则可用(l{<距离>}),向右,则用 (r{<距离>}),<距离>可以根据自己需要来设置
- 如下所示 用命令== \cmidrule(lr){4-4} \cmidrule(l){5-6}==调整线条两端不互相连接
\begin{table}[h]
\centering
\begin{tabular}{cccccc}
\toprule
\multirow{2}{*}{$g$,$s$ Leves} & \multirow{2}{*}{Q-matrix} & \multirow{2}{*}{Models} & Metrics & \multicolumn{2}{c}{No. of $N$} \\
\cmidrule(lr){4-4} \cmidrule(l){5-6}
& & &100 & 50 & 300 \\
\midrule
row1 & A.1 & B.1 & C.1 & D.1 & E.1 \\
row2 & A.2 & B.2 & C.2 & D.2 & E.2 \\
row3 & A.3 & B.3 & C.3 & D.3 & E.3 \\
row4 & A.4 & B.4 & C.4 & D.4 & E.4 \\
row5 & A.5 & B.5 & C.5 & D.5 & E.5 \\
\bottomrule
\end{tabular}
\caption{table 3}
\end{table}
三、其它解决方案
有作者提出这种解决方案,这种方案也可以解决上面的问题,但是这种方案美中不足,这种方案会整体修改原来的表格的每一行的高度,使用这种方案之后会导致整个表格在纵向上变得很长,在论文排版中非常占用版面,不太推荐使用。
四、引用
[1] : LaTeX表格字太贴近上面表线