完美解决在Latex的表格里的单元格内的文本紧贴着上边框线条的问题

完美解决在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表格字太贴近上面表线

### 调整Overleaf表格宽度的方法 为了使表格变窄,可以采用多种方法来控制表格的宽度。一种常见的做法是在定义表格环境时指定其总宽度,并通过调整列间距或移除不必要的填充空间来优化布局。 当遇到表格过宽的情况时,可以通过修改`tabular`环境为`tabularx`并利用`\extracolsep{\fill}`命令让表格适应特定宽度[^2]。具体来说: 对于希望缩小宽度的表格,可以在表格外层包裹一个固定宽度的盒子,比如使用`adjustbox`宏包提供的功能,或者直接在`tabular`环境中应用更紧凑的列间隔设置。下面是一个具体的例子展示如何创建一个较窄的表格: ```latex % 导言区加载必要的宏包 \documentclass{article} \usepackage{array, tabularx} \begin{document} \noindent % 确保表格紧贴左边边界 \begin{table}[h!] \centering \setlength\tabcolsep{4pt} % 减少默认的列间距离 \renewcommand{\arraystretch}{1.0}% 设置行高比例因子 \begin{tabular}{|c|c|c|} \hline 列1 & 列2 & 列3 \\ \hline 数据A & 数据B & 数据C \\ \hline \end{tabular} \end{table} \end{document} ``` 上述代码片段展示了如何减少列之间的空白(`\setlength\tabcolsep`)以及保持合适的行距(\renewcommand{\arraystretch})以达到使整个表格看起来更加紧凑的效果。此外,还可以考虑去掉边框线或将某些单元格的内容简化以便更好地适应所需的页面区域。 如果需要进一步微调,则可以根据实际情况适当增减这些参数的具体数值直到获得满意的结果为止。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值