(发布)grid-table:一个用于 Emacs 的通用网格表格组件,支持富文本与图片渲染、公式计算、交互编辑、排序、持久化与插件扩展

对,这是 grid-table 当前的解决方案。

这个同样没有什么问题,grid-table 就是采用 AST 的方式,才能保证表格的单元格挂载公式等大量信息的情况下, 顺利输出边框对齐的表格。甚至可以整齐地输出 rst 格式的表格。

我认为 grid-table 的渲染器的实现是有参考价值的,尤其是涉及到复杂排版方面。

同理,grid-table 如何定义版面的基础单位,到单元格的坐标,再到渲染器的实现,都有着独特、 且有美感的创新价值。

2 个赞

:+1::+1::+1:

厉害了。

厉害,想了多年的功能终于被实现了。

玩一下看看,有啥问题多多交流

添加了 n 个常用的 Excel 公式 优化了 README 文档

希望大家能够看到背后的小小的努力 :smile:

3 个赞

太强了,RMS 提出了多年的愿景终于前进了一大步。(虽然 RMS 说的原文是字处理器,但是我相信他想要提的其实是广义上的办公软件,表格处理软件当然也算)

1 个赞

请问图中所示中文的情形,是否能够解决?

本来是不会出现这个问题的,应该最新的更新里哪里破坏了,你可以用最初的版本

搞定了,更新到最新版

可以了。 :clap:

另外请教一下:grid表格一定要持久化成单独的.grid文件才能集成到org中吗? 是否可以直接在org 的babel 中生成和编辑grid表格源代码?这样在有些场合免去了要管理多个文件的麻烦。

  • 是否可以将多个文件放在同一个文件夹?
  • 在 org 文件里,如果你已经插入了 grid-table,你可以直接在 src block 打开对应的 grid-table 文件(我记得有这样的命令)
  • 实际上,不管 grid-table 的位置在哪里,你实际上可以通过 org-mode 去访问它们。这应该算是用 org 文件直接管理 grid-table 文件?

我大致上理解你的意思了,你希望直接输出表格里的源代码,然后 C-c C-c 执行的时候,然后生成表格。

这个方式的缺点是,令 grid-table 与 org-mode 绑定得太紧了。grid-table 保存为文件,就是有了一个唯一的源头,而它可以导出为不同的格式,grid-table 的设计目标,是立足于 emacs 而不是 org-mode,对应的,它想取代的那个难用的 emacs-table。


你可以看看 grid-table-org.el 这个文件,做一个简单的修改,提供一个选项,直接输出表格的 source code 到 org-mode。这里还涉及别的机制,一个是让 org-mode 认得一个特别的 src block 标题头,然后它可以找到 grid-table 去渲染这个源代码。

是这样的。就像我用一个src block定义一个mermaid图,需要时用babel执行生成图形。我的具体场景是:对一个大型文献做精读,然后用表格对相关内容进行归纳总结。表格的量可能比较大,然后这些表格本身可以看做这个文献自身的内容,不太需要持久化为独立文件分享给其他文档。我感觉这种嵌入源码形式而非持久化文件的形式,是org-mode吸引我使用的一个很大的优势;如果强制需要持久化的话,其实我完全可以用excel之类的生成一个表格然后截图再插入到org-mode文档中。

grid table在支持.grid文件独立存储的同时,能够支持上述这种使用方式,这样应该不算和org-mode绑定。

可以支持这个方式,但我不太清楚如何让 org-mode 调用 grid-table 去生成表格。

希望能支持直接在org文档中显示表格,这样才能替代org table.

可以将处理完的表格直接导出到 org 文件。

你说的是src block中引用grid文件么,这种方式图片显示不了,导出到html里面,也看不到图片。 src block这种方式导致grid table功能受限制。 我原来的org table无法用grid table替换掉。

这个实际上是 emacs 和 org 基础机制的限制…

即便我直接将 grid-table 导出到 org 文件,你当时能看到图片,但重新打开图片就消失了。

现在能显示图片,是运用 emacs 强大的 text properties 机制,它什么都能装,但唯一的缺点是,它不能够持久化。

所以,grid-table 显示图片是依靠电脑本来强大的性能,动态渲染出来,切成字符大小塞进 text properties 里。

如果真的要实现这一点,首先是, org-mode 完全用 grid-table 替代掉 org-table(短期来看是不现实的)。以及, emacs 的内核进行修改,让它有持久化 text properties 的机制。

两方面,我个人都是做不到的,请谅解。

可惜啊。