Composer:预览中的点击/选择应显示/选择相应的 Markdown 源代码(尤其是数学公式)

问题/动机

在编辑大量数学公式的帖子时,很难在 Markdown 编辑器中找到渲染出的公式的确切来源。

在包含许多行内 $...$ 表达式或多个 $$...$$ 显示块的长帖子中,工作流程如下:

在预览中发现错误 → 手动在原始 Markdown 中搜索 → 调整 → 重新检查预览

这对于小的编辑(缺少负号、错误的索引、间距调整等)尤其痛苦,并且随着帖子变长而变得更糟。

建议的行为

在编辑器中:

  • 点击或选择预览窗格中的渲染元素应:
  • 将原始 Markdown 编辑器滚动到相应的源位置,并且
  • 将光标置于生成它的源文本内部(或选中它)。

这对以下情况尤其有效:
• 数学公式($...$$$...$$
• 引用
• 列表
• 链接
• 其他已渲染的元素

数学公式是最引人注目的用例,但这种行为具有广泛的实用性。

为什么这与滚动同步不同

这与输入时的同步滚动无关。

这是一种预览 → 源跳转,精神上类似于 LaTeX 编辑器中的 SyncTeX:

“我正在看这个渲染出的东西——告诉我它来自哪里。”

可能的实现方向(高层次)

在渲染过程中,输出节点可以携带轻量级的源映射元数据(例如 data-sourcepos="start:end" 或类似内容)。

在编辑器预览中:

  • 点击/选择时,向上遍历 DOM 直到找到最近的带有源位置元数据的节点。
  • 使用现有的编辑器 API 在原始编辑器中设置选择范围并将其滚动到视图中。

这种类型的源映射在 CommonMark 工具链中已经以概念形式存在,而数学块尤其是一个自然的候选对象,因为它们已经被明确地分词处理了。

为什么这有价值

  • 对大量数学公式内容的迭代速度更快
  • 减轻编辑长篇技术帖子的认知负荷
  • 使预览窗格真正具有交互性,而不仅仅是被动查看
  • 很好地扩展到数学以外的其他已渲染元素

如果需要帮助说明这种交互,我很乐意制作一个简短的 GIF 动图。

1 个赞