在Org mode里写表格的另外一种姿势

之前在Org-mode里写表格,有一个比较大的痛点就是单元格不支持换行,写点小表格还可以,大一点的项目表格,只能用excel写,写完后截图贴到org文件里。

这个方法总觉得不优美,也违反了「本文即一切」的思想。最近从这篇文章发现了另外一种用法,通过 list table 来实现这个需求,分享给大家。

先看下效果:

下图是在org文档里写的表格文本:

下图是导出为网页时的效果:

实现方法是通过 org-mode-ox-odt这个包:

(use-package ox-odt
  :straight (org-mode-ox-odt :host github :repo "kjambunathan/org-mode-ox-odt"
	                         :files ("lisp/ox-odt.el"
		                             "etc"
		                             "docs"
		                             "contrib/odt/LibreOffice"))
  :init
  (with-eval-after-load 'ox-html
    ;; (unless (featurep 'ox-odt)
    ;;   (require 'ox-odt))
    (add-to-list
     'org-export-filter-parse-tree-functions
     (defun org-html--translate-list-tables (tree backend info)
       (if (eq backend 'html)
           (org-odt--translate-list-tables tree backend info)
         tree))))
  )
9 个赞

搜索了一下,org mode 的表格好像是支持换行的,需要换一种表现形式。

是个不错的思路…不过格式感觉可以再优化一下…

请问pdf导出有没有类似方案?

看起来支持latex

2 个赞

table.el 在任何文本里都可以使用它来编辑表格,我也是用它来在 orgmode 里面编辑多行表格(当然,多行的情况比较少)。orgmode 的表格或 table.el 的表格感觉更容易把握表格整体内容。

table.el 导出的pdf横线太多还有竖线,不知道怎么设置,才能不显示竖线,横线只保留表头两条线和表格最底部的一条线。

我没有这个需求。在简单搜索未果后,看了下表格导出这块的代码。发现 orgmode 表格导出使用 org-latex--org-table 函数,而 table.el 表格导出使用 org-latex--table.el-table 函数。前者通过处理 #+ATTR_LATEX: :align ccc 近乎可以实现你描述的内容,而后者没有这个属性的实现。或许你可以通过修改 org-latex--table.el-table 来实现你的需求。