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

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


Excel2LaTeX插件

这里介绍一种我用到非常顺手的工具:Excel2LaTeX插件,下载地址:传送门
下载好之后,在excel中显示加载项,并将Excel2LaTeX.xla文件导入到加载项中,重新启动excel可以看到如下选项:
在这里插入图片描述

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

现在就可以开始在excel中绘制想要的表格形式了,举个例子如下(多数据集、多模型、多指标、包含粗边框、粗字体、双重边框等):
在这里插入图片描述
然后,用鼠标选中需要生成LaTeX代码的表格区域,点击左上角的Convert Tabel to LaTeX。通常我习惯勾选上Booktabs package这个选项,然后拷贝。
在这里插入图片描述

% 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的命令:

\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下方的横线代码如下:

\cmidrule{3-11}
  • 1

这显然是一根完整的横线,现在介绍如何分成三段。
将上述代码修改为:

\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}

调整表格宽度

\setlength{\tabcolsep}{3mm}{\begin{tabular}{ccccccccccc}...\end{tabular} }  % 一定注意这里还有个后花括号!
  • 1
  • 2
  • 3
  • 4

最终表格效果

在这里插入图片描述
完整代码如下:

% 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625769.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言:文件操作(四)

目录 前言 6、文本文件和二进制文件 7、文件读取结束的判定 7.1 被错误使用的feof 8、文件缓冲区 总结 前言 接上篇,本篇要讲解的是文本文件和二进制文件的内容、文件读取结束的判定以及文件缓冲区。 6、文本文件和二进制文件 根据数据的组织形式,数…

嵌入式工程师如何摸鱼?

有老铁问我,做嵌入式开发要加班吗? 也不知道搞什么鬼,现在的年轻人对加班这么抵触。 我刚做开发那会,啥也不懂,每天基本都要加班到晚上7-9点不等,我并不抵触加班,因为早早回家,也没什…

HarmonyOS开发实战:【亲子拼图游戏】

概述 本篇Codelab是基于TS扩展的声明式开发范式编程语言编写的一个分布式益智拼图游戏,可以两台设备同时开启一局拼图游戏,每次点击九宫格内的图片,都会同步更新两台设备的图片位置。效果图如下: 说明: 本示例涉及使…

搜狗多线程长尾词挖掘软件-【批量挖掘搜狗大家还在搜和相关搜索长尾词】

搜狗多线程长尾词挖掘软件-【批量挖掘搜狗大家还在搜和相关搜索长尾词】介绍: 1、软件根据放入多个关键词批量多线程去搜狗搜索里拓搜狗大家还在搜和相关搜索。 2、搜狗大家还在搜和相关搜索长尾词质量好。 3、一个关键词可以拓19个高质量相关长尾词。 4、软件自…

msyql中SQL 错误 [1118] [42000]: Row size too large (> 8126)

场景: CREATE TABLE test-qd.eqtree (INSERT INTO test.eqtree (idocid VARCHAR(50) NULL,sfcode VARCHAR(50) NULL,sfname VARCHAR(50) NULL,sfengname VARCHAR(50) NULL,…… ) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_general_ci;或 alter table eqtre…

【Java】jdk1.8 Java代理模式,Jdk动态代理讲解(非常详细,附带class文件)

📝个人主页:哈__ 期待您的关注 一、什么是代理模式 想要学代理模式,我们就要先弄清一个概念“什么是代理”? 在我们的现实生活中,你或许不少听过关于代理的名词,如:代理商。那什么又叫做代理…

安装SSMS出现错误和SSMS连接数据库失败

目录 1.点击图片下安装的时候,出现0x80070643错误 解决办法: 1,如果是是第一次安装的话,重新启动电脑,把原来下载的SSMS删除掉,在重新下载安装 2.如果是原来就下载过,先重启一下,如果还不可以就…

MySQL 基础使用

文章目录 一、Navicat 工具链接 Mysql二、数据库的使用1.常用数据类型2. 建表 create3. 删表 drop4. insert 插入数据5. select 查询数据6. update 修改数据7. delete 删除记录truncate table 删除数据 三、字段约束字段1. 主键 自增delete和truncate自增长字段的影响 2. 非空…

Java——代码块

目录 一.代码块概念以及分类 二.普通代码块 三.构造代码块 四.静态代码块 一.代码块概念以及分类 使用 {} 定义的一段代码称为代码块。根据代码块定义的位置以及关键字,又可分为以下四种: 普通代码块构造块静态块同步代码块(后续讲解多…

ChatGPT 可以预测未来吗?

推荐 4月13日的一篇有趣的 paper,特来分享。 👉 当前的大型语言模型(LLMs)具有强大的数据合成和推理能力,但它们在直接预测尚未发生事件的准确性上常常受到限制。传统的预测方法依赖于直接询问模型关于未来的问题。 …

Python爬虫入门教程!

什么是爬虫? 爬虫就是自动获取网页内容的程序,例如搜索引擎,Google,Baidu 等,每天都运行着庞大的爬虫系统,从全世界的网站中爬虫数据,供用户检索时使用。 爬虫流程 其实把网络爬虫抽象开来看,它…

Python编程与算法面试-编程面试的重点

在求职面试的过程中,编程能力也是面试官非常看重的一项能力。而对于编程这项能力主要的考察点也有三个维度: 初级:编程的基本功 编程的基本功主要考察的编程语言的基本语法,原理知识,以及一些在编程过程中的常见问题…