【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
`
相关推荐
森明帮大于黑虎帮1 小时前
Visual Studio 2008 自述文件
ide·visual studio
欧恩意2 小时前
【Visual Studio】调试时 memcpy 拷贝错误,擅自修改内存
ide·visual studio
vortex54 小时前
Visual Studio 编译选项详解
ide·visual studio
记忆偶然4 小时前
语音转文本技术方案评估与工具选型指南
ide·macos·xcode
赵域Phoenix7 小时前
快速打开jupyter
ide·jupyter
还有你Y7 小时前
VScode远程连接docker容器教程
ide·vscode·docker
汐ya~8 小时前
Cursor连接异常问题“Model not available/connection failed”解决:IDE内置代理配置,无需全局流量代理与虚拟网卡
python·编辑器·cursor
海市公约8 小时前
Python操作SQLite数据库:从基础语法到完整项目实战
数据库·ide·python·程序人生·架构·pycharm·sqlite
✎ ﹏梦醒͜ღ҉繁华落℘8 小时前
VisualStudio软件使用技巧
ide·visual studio
啃火龙果的兔子10 小时前
android studio运行下载gradle特别慢怎么处理
android·ide·android studio