小插件 Sheets Basic:合并 Markdown 表格单元格

代码已上传至 obsidian-sheets-basic

240612: 切换到阅读模式再打印导出 PDF 已能正确渲染,包括表格内图片、数学公式等。
240626: 支持编辑模式简单表格合并,编辑完成移出表格时触发。
240629: 更丰富的合并。测试文本:

|     |     |     |
| --- | --- | --- |
| 1   | <   |     |
| ^   | ^   |     |
| 2   | 2   |     |
  • 若有任何不合期望的显示结果,可在编辑模式使用插件 ‘rebuildCurrent’ 命令刷新,默认快捷键 F5。
    • 推荐导出 PDF 前刷新一次,再切换到阅读模式导出。
    • 使用于表格外,将刷新当前活动页面。
    • 使用于普通单元格,将刷新所在表格。请勿将鼠标光标置于合并识别符所在单元格。
    • 使用于合并单元格,将取消合并,该单元格将变为普通单元格。
  • 不要在表体第一行使用向上合并,即不要合并表头和表体。

插件历史沿革:

Sheets Extended 是由 @NicoNekoru 开发的在阅读模式和代码块内合并表格单元格的插件。该插件功能十分丰富,但有一些 bug,如不能正确渲染 Callout 和引用块内的表格等。

我从今年 1 月 8 日起联系作者(见 issue#45),希望他能修复,中途作者也修复了一回,但没修好,直到现在。

我不是计算机专业的,不会大部分代码,所以只能参考原插件编写了一个简单版本,只保留合并单元格的基本功能,原本是希望给作者参考,让他尽快修复的。

但由于迟迟没能等到作者的任何回复,随着我经验增长,又新加了编辑模式合并单元格的功能,尽管我依然期待作者修复,现在这个简单版本的插件也具备独立功能了。

6 个赞

楼主。表格原插件在callout里渲染不出来,能居中。 你的精简代码能渲染出来。但是居中不了 :smiling_face_with_tear:

现在支持 MD 的表格居中语法 : 了,试试吧。

原版插件在和 table extant 一起在同一个笔记中时,导出的PDF没问题,这个插件会导致table extant的乱掉

@nqyijian Table Extended 和 Sheet Extended 或本插件都是通过语法标记对表格进行处理,且彼此语法完全不同,择一而用即可。

哥,请问纵向如何设置居中

@diyaojz怎么使表格内容垂直居中啊 - #2,来自 PlayerMiller

本插件主要是合并单元格,其余表格相关需求请使用搜索功能或论坛新建“疑问解答”话题提问。

群友:<^ 这种语法渲染的表格在 anyblock 的 tab 模式下不显示

由于群里有人说到和AnyBlock的配合问题,我去测试了一下。

然后想起这几个插件的选用有时可能也会导致小白选择困难,借楼贴个比较图。该比较能够从一定程度上说明与其他插件的配合程度(但在这里表现更好的表格插件版本不意味着与所有插件配合都更好)

(该借楼补充其实感觉放哪都不合适……无论是单独开一篇、还是放AnyBlock主题里、还是放这里。算了,还是放这吧……)

1 个赞

表格崩掉的问题

群友:这个如果合并了表格,如果没有这个插件,表格会被正确识别吗?不敢用

sheets extented不会崩,table exteneded会崩,所以我更建议前者。
sheets extented没有插件的话长前面第一列第三行那个样子。我认为没有插件不影响体验,完全可以脑内渲染。
而我不建议 Table Exteneded,他那个有没有插件有可能样式会崩掉。他的那个语法设计就有问题

语法设计问题

table exteneded的语法设计

|a|b|
|待会左边要合并我||

第二行第二列的合并标志,是两个|之间没有任何内容,空格也不允许。如果两个|之间有空格,那么就表示一个空的单元格。但是两个|之间没有内容,会导致没有插件的情况下渲染器不认为这是一个表格,表格会崩掉

|   Markdown   | Rendered HTML |
|--------------|---------------|
|    *Italic*  | *Italic*      | \
|              |               |
|    - Item 1  | - Item 1      | \
|    - Item 2  | - Item 2      |
|    ```python | ```python       \
|    .1 + .2   | .1 + .2         \
|    ```       | ```           |

还有一种语法是在表格最后的 | 后面还有个 \ 用来表示特殊的表格合并(一个单元格内容存在多行)。但同样的,没有插件的情况下渲染器不认为这种东西是个表格,表格也会崩掉。

而sheets extented的语法设计

|a|b|
|待会左边要合并我|<|

这个语法设计必不可能崩,也几乎不会误选

其他区别 / 区别总结

前者是 ^^ 上合并,|| (中间无空格) 左合并
后者是 ^ 上合并,< 左合并

主要吹了sheets extented,那table exteneded有没有什么更优的点?

  1. 可能有一些功能增强,但这类功能很多是破坏性的(离了插件后,语法连个表格都不是。即功能增强依赖的语法并非table的超集,不向下兼容)
    • 例如支持跨单元格的代码块或引用块,通过末尾 \ 语法 (不向下兼容,不建议)
    • 额外支持无表头模式(不向下兼容,不建议)
  2. table exteneded,他直接用的 markdown-it-mulitmd-table,和博客中的表格合并语法是相同的。这意味着该软件开发成本的降低,以及在对博客迁移时的兼容
    但是就设计而言,sheets extented 更好,但没有其对应的 markdown-it 插件。但我相信以后也会有的!(大不了我后面研究一下怎么迁移过去)

谢谢 @LincZero 帮忙测试,其实我打算不管是原插件作者自己更新还是说有别人接手,要是有正式军我就准备摸鱼了 :laughing: 我这天天挂个 JS 在上面虽然想的是大伙都能自己编辑,到底不是个事儿,肯定还是专业人员来搞更好。很高兴你认可我是一个活跃者!不过我可能慢慢地也不会活跃啦。

1 个赞

大佬,咨询个问题,如何在实时编辑时取消合并的表格…

@熊猫别熬夜

收到,感谢 :pray: