Obsidian插件:Pandoc Extended Markdown 为 Obsidian 加入更多标记语法

[!example]

  • 插件名称:Pandoc Extended Markdown
  • 插件作者:ErrorTzy
  • 插件版本:1.4.9(截止至26年2月20日)
  • 插件概述:由 Pandoc 拓展的 Markdown 语法对 Markdown 语法来说可谓是一次巨大的加强,Pandoc Extended Markdown插件在 Obsidian 内实现了部分拓展语法,以期获得更丰富的排版体验。
  • 插件项目地址:点我跳转
  • 国内下载地址:下载安装

基本用法

  • 实时预览模式:列表会政策渲染,除非光标正好位于某列表内,则该列表会处于源码状态
  • 阅读模式:列表会完全渲染
  • 源码模式:没有任何渲染
  • 在 Strict Pandoc Mode 下,只有完全符合 Pandoc 规范的列表会被渲染

上标和下标

  • 上标和下标在段落、列表以及定义列表中都可使用

语法示例:

水的分子式是 H~2~O,它是生命所必须的物质
爱因斯坦方程式 E = mc^2^ 给物理学带来了革命
化学反应式: Ca^2+^ + SO~4~^2-^ → CaSO~4~
如果要在上下标中加入空格,需要加入转义符, 下标空格示例: P~a\ cat~

实现效果:
Obsidian插件:Pandoc Extended Markdown 为 Obsidian 加入更多标记语法-图001.png

加强列表

可替换有序列表的默认标识符1. 2. 3.,按回车可按顺序自动补全标识符,如在插件设置中启用Auto-renumber lists,则当在列表中间按回车键时,会自动为标识符重新编号,仅对同一级别的列表生效,对缩进列表的上下级不生效

语法示例:

  • 大写字母:A. B. C.,如在插件设置中启用Strict Pandoc mode,则每个序号后要空两格
  • 小写字母:a) b) c)
  • 罗马数字:I. II. III.i) ii) iii)
  • 可以在源码模式中将#. 作为标识符,会被渲染成数字

实现效果:

可交叉引用的示例列表

按照格式创建示例列表后,后文只需录入括号及其内标签,鼠标悬停其上,即可查看引注的内容

语法示例:

(@good) 这是一个好例子。
(@bad) 这是一个坏例子。

在后文中这样写即可引用: (@good) 和 (@bad)
  • 在同一笔记文件内,括号中的标签将被自动替换为数字
  • 注意:示例列表中要用英文括号,并在后半个括号后空一格,才会正确识别并渲染

实现效果:
Obsidian插件:Pandoc Extended Markdown 为 Obsidian 加入更多标记语法-图003.png

定义列表

  • :~标识符后回车,下一行会自动补全与上一行相同的标识符
  • 在定义语句内,可以使用上标、下标、加粗(**例**)和斜体(*例*

语法示例:

词目 1
:   词目 1 的定义 1,可以直接写在词目的下一行,不需要空行
    带缩进的段落也是定义 1 的一部分,在侧边栏列表中与上一行空一格接续

词目 2

~   波浪线也可作为定义列表的标识符
~   可包括多项定义,每项独立定义前都要加标识符

实现效果:

自定义标签

  • 本功能为插件特殊语法,需要在插件设置中启用More extended syntax,此标签非彼标签(tag),插件文档原文用的是“label”
  • 在 Obsidian 内部可正确渲染,如果要使用 pandoc 进行转换,则需要在插件 github 仓库下/lua_filter/CustomLabelList.lua在 pandoc 中应用 lua filter

语法示例:

{::P} 人都是会死的。
{::Q} 苏格拉底是人。
{::R} 所以苏格拉底是会死的。

实现效果:
Obsidian插件:Pandoc Extended Markdown 为 Obsidian 加入更多标记语法-图005.png

每个自定义标签都支持通过占位符进行重新编号,例:(#name),每个独一无二的占位符都会获得一个连续编码

语法示例:

{::P(#first)} First premise
{::P(#second)} Second premise  
{::P(#first)'} Variation of first premise

From {::P(#first)} and {::P(#second)}, we derive...

实现效果:
Obsidian插件:Pandoc Extended Markdown 为 Obsidian 加入更多标记语法-图006.png

还可以使用纯占位符表达:

{::(#premise)} A premise
{::(#conclusion)} A conclusion
{::(#premise)+(#conclusion)} Combined expression

实现效果:
Obsidian插件:Pandoc Extended Markdown 为 Obsidian 加入更多标记语法-图007.png

总览侧边栏

本插件可创建侧边栏页面,对当前笔记文件中存在的全部自定义标签、示例列表、定义列表和脚注进行列举以便总揽全局,类似于核心插件脚注列表的效果,但要更加丰富

  • 自定义标签列表
    • 展示当前笔记文件中的所有自定义标签
    • 双栏布局:同时展示标签及其内容
    • 在侧边栏中点击标签,可复制标签及其内容
    • 在侧边栏中点击内容,可跳转至其在编辑器中所处的位置
    • 鼠标悬浮后文的标签上,则可显示精简过的全部内容

  • 示例列表
    • 展示当前笔记文件中的所有示例列表
    • 三栏布局:同时展示编号、未经处理的标签及其内容
    • 编号将按文中先后顺序排列,最多三位
    • 在侧边栏中点击标签,可复制标签,例:(good)
    • 在侧边栏中点击内容,可跳转至其在编辑器中所处的位置
    • 鼠标悬浮后文的标签上,则可显示精简过的全部内容
    • 内容栏支持数学内容

  • 定义列表
    • 展示当前笔记文件中的所有定义列表
    • 双栏布局:同时展示词目及其内容
    • 定义支持 md 语法
    • 同一词目下的多项定义将各自在最开始由圆点引导
    • 在侧边栏中点击定义,可跳转至词目在编辑器中所处的位置
    • 词目最多包含 100 个字符,定义最多包含 300 个字符
    • 鼠标悬浮后文的定义上,则可显示精简过的全部内容

  • 脚注列表
    • 展示当前笔记文件中的所有脚注
    • 双栏布局:同时展示脚注编号及其内容
    • 在侧边栏中点击脚注编号,可跳转至脚注编号在编辑器中所处的位置
    • 在侧边栏中点击定义,可跳转至脚注内容在编辑器中所处的位置
    • 脚注列表使用和主编辑器一样的渲染逻辑:如果脚注包含 Markdown 语法,同样会被渲染,而不是显示为源码

Obsidian插件:Pandoc Extended Markdown 为 Obsidian 加入更多标记语法-图011.png

设置说明

  • Strict Pandoc Mode:如启用,则必须严格遵循 Pandoc 语法规范
    • 列表前后必须空行
    • 大写字母后必须空两格
    • 不符合负规范的列表将不会被渲染,而是以纯文本的形式展示
  • Auto-renumber lists
    • 如启用,则在列表中间插入新列表项时,会自动重排之后的标识符编号
    • 加强列表的标识符编号也会被重排,但仅影响英文字母和罗马字母,对#.或实例列表不生效
  • More extended syntax:如启用,则启用插件特殊语法,[[#自定义标签|详见上文]]

快捷命令

  • Check pandoc formatting: 扫描当前笔记文件,报告任何存在的语法错误
  • Format document to pandoc standard: 自动将当前笔记文件中的列表转换成符合 Pandoc 规范的形式
  • Toggle definition list bold style: 将当前笔记文件中定义列表的条目在加粗和不加粗之间进行切换
  • Toggle definition list underline style: 将当前笔记文件中定义列表的条目在下划线和无下划线之间进行切换
  • Open list panel:打开总览侧边栏
2 个赞

感谢分享。

Rendered numbers show sequential numbering (truncated at 3rd digit) 看不懂

Sequential numbering:面板左侧显示 @good 等对应的数字序号 1 2 3……

Truncated at 3rd digit:可能指 UI 上给序号留的宽度,如果序号达 4 位数,比如 1000,面板上只会显示前 3 位,如 100...

Uses the shared rendering pipeline for consistent formatting across panels 看不懂

这个插件的脚注面板使用和主编辑器一样的渲染。比方说,如果脚注包含 Markdown 语法,会被渲染,而不是显示为源码。

在 Obsidian 内部可正确渲染,如果要使用 pandoc 进行转换,则需要经过 pandoc 中的 lua filter,其位置为/lua_filter/CustomLabelList.lua

这里的位置指插件项目地址的相对位置,可能需要把对应文件下载到本地一个你容易找到的地方。在使用 Pandoc 命令时,加上 --lua-filter 参数。

pandoc "MD.md" -o "MD.docx" --lua-filter="路径到/CustomLabelList.lua"

说起来这个插件的脚注面板应该是不支持 ^[内联脚注] 的。

感谢回复!没有计算机背景的搞这些总是战战兢兢如履薄冰