最近使用LaTeX处理表格时遇到了一件十分棘手的问题,由于内容较多将表格分成了好多列,但将内容填入表格时由于表格宽度过大,导致表格右边溢出了页面无法查看,查阅大量资料与博文后给出如下解决方案,全文代码已部署在OverLeaf在线编辑器,可一键运行查看结果,链接见文末。
上图为一篇文章中的表格样式,希望以此为模版进行表格格式的复现,但在此过程中遇到了许多问题。
问题一:表格宽度过大,导致表格右侧部门显示不全
通过上图可以发现由于表格中部分列的内容过多导致表格整体宽度过大,右侧部分显示不全。
%原始表格
\begin{table}[htbp]
\centering
\caption{} %caption放在上面,标题就放在上面,否则就放在下面
\begin{tabular}{ccclclcl} %控制的是表格的对齐方式,但是最终的格式取决于最后的设置
\toprule
Ref & Aggr.levels & Lead times & Input Variables &Feature engineering & Models & Augmentation strategies & Target variabels \\
\midrule
22 & IIES & Short-term & Historical loads; weather factors; calendar information; & - & FNNs; ARMA & - & Multiple loads(electricity,heat and cooling) \\
\bottomrule
\end{tabular}
\label{table:1}
\end{table}
解决方案:resizebox命令
%Table2
\begin{table}[htbp]
\centering
\caption{} %caption放在上面,标题就放在上面,否则就放在下面
\resizebox{\linewidth}{!}{
\begin{tabular}{ccclclcl} %控制的是表格的对齐方式,但是最终的格式取决于最后的设置
\toprule
Ref & Aggr.levels & Lead times & Input Variables &Feature engineering & Models & Augmentation strategies & Target variabels \\
\midrule
22 & IIES & Short-term & Historical loads; weather factors; calendar information; & - & FNNs; ARMA & - & Multiple loads(electricity,heat and cooling) \\
\bottomrule
\end{tabular}
}
改进后的表格:
可以看到,通过使用resizebox命令将表格整体的宽度限制在了一个linewidth, 避免了表格宽度过大导致的内容溢出。
问题二:表格字体较小,可读性降低
虽然可以使用resizebox对表格宽度进行控制,但同时也产生了一个问题,那就是表格宽度的缩小是以牺牲字体大小作为代价的,这就导致了表格可读性降低。此时便需要利用makecell命令进一步美化表格。
解决方案:makecell命令
%表格三
\begin{table}[htbp]
\centering
\caption{} %caption放在上面,标题就放在上面,否则就放在下面
\resizebox{\linewidth}{!}{
\begin{tabular}{ccclclcl} %控制的是表格的对齐方式,但是最终的格式取决于最后的设置
\toprule
Ref & {\makecell[c]{Aggr.\\levels}} & {\makecell[c]{Lead \\times}} & Input Variables & {\makecell[c]{Feature \\engineering}} & Models & {\makecell[c]{Augmentation\\ strategies}} & Target variabels \\
\midrule
22 & IIES & {\makecell[c]{Short-\\term}} & {\makecell[l]{Historical loads; weather factors; \\calendar information}} & - & FNNs; ARMA & - & {\makecell[l]{Multiple loads(electricity,heat and \\cooling)}} \\
\bottomrule
\end{tabular}
}
\label{table:1}
\end{table}
改进后的表格:
此时可以看到经过处理后的表格样式和文献中的表格近乎接近,完美😊。
LaTeX表格知识点
- \caption命令放在\begin{tabular}之前,则表格的标题会在表格上方出现。放在\end{tabular}之后则标题会出现在表格下方
- 将表格对齐方式中的c可以换成p{2cm}控制列的宽度。
本文代码复现网址:
OverLeaf代码复现