org mode表格中一列太宽怎么办?

缘起

通常情况下,都希望在 org 中使用更多的功能,比如一些并不是很复杂的文字表格。但是一定会需要一个问题,那就是因为 org 中的表格没有自动换行的功能,所以当如果某个单元格中的文字特别长的话,在 org 中会出现排版混乱的情况(尽管在导出后并不影响),这就大大阻碍了我在 Emacs 中使用表格的积极性,更加不利的是,如果有表格的内容,我必须引用到其它文件,来承载表格的,这样会造成文件的链接成本,增加管理文件的复杂性。

其实是有解决办法的,官方文档中就有说明。 https://orgmode.org/manual/Column-Width-and-Alignment.html

使用

如果有类似下列的表格

| 序号 | 内容                                                                         |
|------+------------------------------------------------------------------------------|
|    1 | 这是一段很长的文字,很长很很长很很长很很长很很长很很长很很长很很长很很长很长 |
|    2 | 这段文字并不长                                                               |

这时可以给显示列宽设置一个长度 如: <20> ,并在超长的列中运行 C-c TAB org 会将这个列显示成20个字宽,超过20个字的部分会截断,显示 ... 由于导出的html无法显示此效果,建议大家在自己的 emacs 尝试。

序号 内容
1 这是一段很长的文字,很长很很长很很长很很长很很长很很长很很长很很长很很长很长
2 这段文字并不长
shrinked-table
Figure 1: shrinked-table

注意,如果没有达到我上面文字描述的效果,请确认已经将光标放在超长的单元格中,并运行了 C-c TAB 对应的功能是 (org-table-toggle-column-width) 。再按一次,则会切换回不截断的模式。

如果有多列设置了列宽,也可以使用 C-u C-c TAB 对应功能 (org-table-shrink) 来收缩所有列,或用 C-u C-u C-c TAB 对应功能 (org-table-expand) 来扩展所有列

配置

如果想默认情况下就收缩显示,可以在文件头上加入: #+STARTUP: shrink 或者定义 org-startup-shrink-all-tables 变量。

顺便一提,除了可以定义列宽外,还可以定义列的对齐方式,使用 <r>, <c><l> 也或以联合使用,如 <r10>

海上一民工

Related