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

news/2024/9/25 23:13:36/

刚开始用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.ppmy.cn/news/1426761.html

相关文章

symbol 类型学习

探索 JavaScript 中的独特标识符:Symbol 类型 JavaScript 作为一门灵活且功能丰富的编程语言,提供了多种数据类型供开发者构建复杂的应用程序。其中,一种相对新颖且独特的类型——Symbol,为对象属性的管理带来了更高的安全性和定…

python调用Microsoft Word把文件夹下所有docx或doc批量转化为PDF

python调用Microsoft Word把文件夹下所有docx或doc批量转化为PDF 首先,确保你的系统上安装了Microsoft Word。然后,你需要安装comtypes库,如果你还没有安装,可以通过以下命令进行安装: pip install comtypes以下是一个…

明道云HAP合作伙伴计划全解析:开辟业务增长新路径

什么是明道云HAP合作伙伴计划? 明道云采纳的是增值伙伴商业模式。在这个模式下,合作伙伴通过平台型产品为终端客户提供定制应用、行业解决方案、赋能培训等增值活动,从而在大幅降低交付成本的同时获得多来源的收入,提高经营绩效水…

学习JavaEE的日子 Day39 注解,反射

Day39 注解 1.什么是注解 理解:给程序员和程序解释代码信息 2.注解与注释的区别 注释:对程序员解释代码信息 注解:对程序和程序员解释代码信息 3.注解的所用 可以作用于包、类、方法、属性上,给他们添加额外的信息,可…

[Qt网络编程]之获取基本网络信息

目录 前言 获取主机IP地址 获取主机 IP 地址和子网掩码 获取主机 MAC 地址 前言 获取主机的网络地址和接口信息是进行网络编程的第一步,也是网络编程的基础。Qt提供了网络接口类 QNetworkInterface、网络地址人口类 QNetworkAddressEntry 和主机地址类 QHostAd…

链表经典算法OJ题目

1.单链表相关经典算OJ题目1:移除链表元素 思路一 直接在原链表里删除val元素,然后让val前一个结点和后一个节点连接起来。 这时我们就需要3个指针来遍历链表: pcur —— 判断节点的val值是否于给定删除的val值相等 prev ——保存pcur的前…

Blender生成COLMAP数据集

最近在做3DGS方向,整理了一下Blender生成自己的数据集。 1 Introduction 在Blender中构建场景(light, object, camera),利用Blender的python脚本对其渲染,导出多视角下渲染出的RGB图和depth map,并将trans…

对单片机的一点理解

前言 大一时学过一段时间的51单片机,后面就一直研究STM32和算法,最近工作搞51单片机有半年了,有一些自己的想法,跟公司的工程师也探讨了一些,结合聊天记录,写了这篇博客,希望对读者有帮助。 有…