【Excel2LaTeX】复杂表格制作的解决方案

刚开始用LaTeX写论文,遇到的第一道坎就是绘制表格,较小的普通表格可以通过简单的语法实现,但是较大的复杂的表格却让我无从下手。


Excel2LaTeX插件

这里介绍一种我用到非常顺手的工具:Excel2LaTeX插件,下载地址:传送门

下载好之后,在excel中显示加载项,并将Excel2LaTeX.xla文件导入到加载项中,重新启动excel可以看到如下选项:

在Excel绘制表格并生成LaTeX代码

现在就可以开始在excel中绘制想要的表格形式了,举个例子如下(多数据集、多模型、多指标、包含粗边框、粗字体、双重边框等):

然后,用鼠标选中需要生成LaTeX代码的表格区域 ,点击左上角的Convert Tabel to LaTeX。通常我习惯勾选上Booktabs package这个选项,然后拷贝。

bash 复制代码
% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{table}[htbp]
  \centering
  \caption{Add caption}
    \begin{tabular}{c|lrrrrrrrrr}
    \toprule
    \multicolumn{2}{c}{\multirow{2}[4]{*}{\textbf{Method}}} & \multicolumn{3}{c}{\textbf{Dataset 1}} & \multicolumn{3}{c}{\textbf{Dataset 2}} & \multicolumn{3}{c}{\textbf{Dataset 3}} \\
\cmidrule{3-11}    \multicolumn{2}{c}{} & \multicolumn{1}{c}{RMSE} & \multicolumn{1}{c}{MAE} & \multicolumn{1}{c}{ACC} & \multicolumn{1}{c}{RMSE} & \multicolumn{1}{c}{MAE} & \multicolumn{1}{c}{ACC} & \multicolumn{1}{c}{RMSE} & \multicolumn{1}{c}{MAE} & \multicolumn{1}{c}{ACC} \\
    \midrule
    \multirow{2}[2]{*}{Non-Graph} & MLP  &      &      &      &      &      &      &      &      &  \\
         & SVR  &      &      &      &      &      &      &      &      &  \\
    \midrule
    \multirow{5}[2]{*}{Graph} & GCN  &      &      &      &      &      &      &      &      &  \\
         & GAT  &      &      &      &      &      &      &      &      &  \\
         & RGCN &      &      &      &      &      &      &      &      &  \\
         & GIN  &      &      &      &      &      &      &      &      &  \\
         & ChebNet &      &      &      &      &      &      &      &      &  \\
    \midrule
    \midrule
    \textbf{Proposed} & \textbf{ABC} &      &      &      &      &      &      &      &      &  \\
    \bottomrule
    \end{tabular}%
  \label{tab:addlabel}%
\end{table}%

将代码粘贴到LaTeX的文字中,注意添加宏包:\usepackage{booktabs} ,否则会编译错误!同时,我用到了多行表格,所以需要添加 \usepackage{multirow} 。

现在的效果如下所示,已经勾勒出表格的全貌了:

修正调整表格格式

调整表格标题到表格的距离

在\centering下面添加\setlength的命令:

bash 复制代码
\begin{table}[htbp]
  \centering
  \setlength{\abovecaptionskip}{2pt}%
  \setlength{\belowcaptionskip}{10pt}%
  \caption{It is a table.}

效果如下:

表格竖线从间断修改为连续

需要知道的是,hline bottomrule toprule将表格水平分隔开,在表格代码中使用bottomrule和toprule会导致竖线不连续。解决方案是:将 除了最上方和最下方的bottomrule和toprule,都改为hline 。为什么说最上方和最下方的不改为hline?原因就是,我需要保持最上方和最下方的边框加粗!而hline则是细线。

如果最后发现,竖线的最上方和最下方仍然是没有和边框紧密相交,那么就把最上方代码的\toprule改为\bottomrule,把最下方代码的\bottomrule改为\toprule 。

效果如下:

将三个Dataset下面的横线分离开

在生成的LaTeX代码中,Dataset下方的横线代码如下:

bash 复制代码
\cmidrule{3-11}

 
 
 
 
 
 
  
* 1

 

这显然是一根完整的横线,现在介绍如何分成三段。

将上述代码修改为:

bash 复制代码
\cmidrule(r){3-5} \cmidrule(r){6-8} \cmidrule{9-11} 

 
 
 
 
 
 
  
* 1

 

则可以将一根完整的横线分为三段,效果如下:

表格单元格内部文字换行

如果表格内部的文字过长,应该如何手动换行呢?LaTeX中没有办法直接通过 Enter或\\符号实现表格单元格内部文字的换行。我采用的方法如下:

首先,在文章的开头添加新命令:\newcommand{\tabincell}[2]{\begin{tabular}{@{}#1@{}}#2\end{tabular}}

然后我就可以在希望换行的单元格里换行了,比如我想让Tabular Learning Methods从Learning后面换行,则可以这么修改:\tabincell{c}{Tabular Learning\\Methods},效果如下:

表格跑到参考文献后面的调整

当表格跑到参考文献后面去了,就需要限制表格浮动的位置在\section范围内,解决方案是在文档开头加上:\usepackage[section]{placeins}

调整表格宽度

bash 复制代码
\setlength{\tabcolsep}{3mm}{
    \begin{tabular}{ccccccccccc}
    ...
    \end{tabular} }  % 一定注意这里还有个后花括号!

 
 
 
 
 
 
  
* 1

  
* 2

  
* 3

  
* 4

 

最终表格效果

完整代码如下:

bash 复制代码
% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{table}[htbp]
  \centering
  \setlength{\abovecaptionskip}{2pt}%
  \setlength{\belowcaptionskip}{10pt}%
  \caption{It is a table.}
    \begin{tabular}{c|lrrrrrrrrr}
    \bottomrule %\toprule
    \multicolumn{2}{c}{\multirow{2}[4]{*}{\textbf{Method}}} & \multicolumn{3}{c}{\textbf{Dataset 1}} & \multicolumn{3}{c}{\textbf{Dataset 2}} & \multicolumn{3}{c}{\textbf{Dataset 3}} \\
\cmidrule(r){3-5} \cmidrule(r){6-8} \cmidrule{9-11}  \multicolumn{2}{c}{} & \multicolumn{1}{c}{RMSE} & \multicolumn{1}{c}{MAE} & \multicolumn{1}{c}{ACC} & \multicolumn{1}{c}{RMSE} & \multicolumn{1}{c}{MAE} & \multicolumn{1}{c}{ACC} & \multicolumn{1}{c}{RMSE} & \multicolumn{1}{c}{MAE} & \multicolumn{1}{c}{ACC} \\
    \hline
    \multirow{2}[2]{*}{Non-Graph} & MLP &   &   &      &    &      &      &      &      &  \\
         & SVR  &      &      &      &      &      &      &      &      &  \\
    \hline
    \multirow{5}[2]{*}{Graph} & GCN  &  &  &      &      &      &      &      &      &  \\
         & GAT  &      &      &      & & &      &      &      &  \\
         & RGCN &      &      &      &      &      &      &      &      &  \\
         & GIN  &      &      &      &      &      &      &      &      &  \\
         & ChebNet &      &      &      &      &      &      &      &      &  \\
    \hline
    \hline
    \textbf{Proposed} & \textbf{ABC} &      &      &      &      &      &      &      &      &  \\
    \toprule %\bottomrule
    \end{tabular}%
  \label{tab:addlabel}%
\end{table}%
`    原文链接:https://blog.csdn.net/qq_16763983/article/details/122912373
`
相关推荐
1024奇点12 小时前
【仓颉语言入门 · 第二篇 第 10 课】
开发语言·数据库·ide·mysql·开源
白鹭鸣鸣!14 小时前
WSL2 + OpenCode 完整搭建全流程(含迁移 WSL 到 D 盘)
编辑器
慧都小项16 小时前
图解 MyEclipse Deployment Assembly:资源如何进入部署产物?
java·ide·tomcat·maven·myeclipse·部署排查
2501_9160088917 小时前
Windows 上写第一个 SwiftUI App,KXBuild 空工程起步,跑到 iPhone 真机
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
骑着蜗牛撵大象32718 小时前
四种库收进一个SQL编辑器(下):跨库取数、方言对齐与四库巡检的落地拆解
jvm·数据库·sql·编辑器·数据迁移·跨库查询
Piink18 小时前
Mac使用Vscode教程
ide·vscode·macos
jingcairensheng18 小时前
vscode 配置Python虚拟环境基于扩展和原生miniconda的区别
ide·vscode·python
MounRiver_Studio19 小时前
原生集成AI 能力的 RISC-V IDE:第三代 MounRiver Studio 正式发布
ide·ai·agent·risc-v
学习论之费曼学习法19 小时前
无人值守AI内容矩阵实战(7):Playwright 发布器避坑——编辑器竞态、索引延迟与风控
python·线性代数·矩阵·编辑器·浏览器自动化·playwright·踩坑记录
心态还需努力呀20 小时前
把 Zettlr 搬上鸿蒙 PC:墨匣学术写作编辑器移植与上架全记录
华为·编辑器·harmonyos