https://zhuanlan.zhihu.com/p/108505177
论文中的表格制作一直是令人头疼的事情,直到我遇见了这个Excel插件。
在此之前,我用过一些其他的小工具,例如在线的latex表格生成器 以及离线的LaTable软件 。他们虽然部分解决了手动写latex表格的麻烦,但是他们都有一个问题:还是需要我们把数据填进去。做论文的实验数据,一般是放在Excel里面的。如果有一个Excel插件,选中Excel的单元格,就能转化成LaTeX表格代码,那是最好不过的了。
幸运的是,有人帮我们做好了这样的轮子了。
项目地址:
https://github.com/krlmlr/Excel2LaTeX
直接下载地址:
https://github.com/krlmlr/Excel2LaTeX/raw/master/Excel2LaTeX.xla
如果网速不好的话,可以考虑这个国内下载地址:
https://cloud.tsinghua.edu.cn/f/e7f733933b644ab3bd41/?dl=1
使用方法非常简单:把下载下来的这个Excel加载项添加到Excel里面就可以使用了。具体的添加方式与Excel的版本及操作系统有关,就不赘述了,自行搜索即可。
插入Excel之后,选中要转换的表格,点击 加载项==>Excel2LaTeX 就可以得到转化后的表格了。
Excel的居中、加黑加粗、单元格合并等操作,都可以支持转化为LaTeX!
我使用了一年多的经验是:用这个插件之前,不要在Excel里面调整表格宽度和高度,不然转化的结果会很难看。因为这个插件会把Excel的宽度也带入LaTeX中,但是一般我们在LaTeX中不希望表格是固定宽度。
最后附上一些其他的实用LaTeX画表格的建议:
1. 好看的三线表
画表格最常用的包自然是 booktabs了,好看的三线表的基本命令如下图。比较麻烦的是左右两端缩小一点点的横线,这个 叫做 cmidrule,语法规则是 cmidrule(lr){start-end}, 注意,第一个括号是圆括号,lr分别表示想要左边缩短一点还是右边缩短一点,start和end是横线跨过的列(start和end都包括)。
cmidrule有什么用呢?想把一根横线拆成两根,但是它们又是相邻的时候,就可以用lr选项,让它们的左右边界缩短一点,看起来就是分开的了。就像下面这个表格:
2. 尽量别画竖线
列的效果尽量用文字直接显现出来,把列的竖线画出来会显得表格很密,密不透风。对比下方的左边和中间的表格,美观性一目了然,左边的更简洁漂亮。另外,如果实在想做到中间的表格这个样子(即竖线贯穿横线),需要把 midrule 换成 hline 才行。如果用的是 cmidrule, 就会变成右边的那个样子。hline 如果想只跨某几行的话,可以改成 cline{start-end}。
3. 表格大小可以整体调整
如果一张表过大,超过了行宽,如果超过得不多的话,下面这个命令非常好用:
esizebox{width}{height}{tabular}
最常用的形式是 esizebox{ extwidth}{!}{tabular}, 宽度设置成页面宽度,高度自动按比例缩放。