浏览代码

fix: inline math interpreted as attributes (#2645)

When using inline math ($e^{-x^2}$) the curly braces are interpreted as
attributes by markdown-it-attrs. Since most of the times they are not
valid attributes they simply get removed.

This patch escapes the curly braces (the default attribute delimiter),
fixing the KaTeX rendering errors.

It would be nice to simply skip that rule for `katex_inline` block types
but as far as I know markdown-it-attrs doesn't have such an option.

Fixes #1581
Edoardo Morassutto 4 年之前
父节点
当前提交
a37a73dede
共有 1 个文件被更改,包括 8 次插入1 次删除
  1. 8 1
      client/components/editor/common/katex.js

+ 8 - 1
client/components/editor/common/katex.js

@@ -81,7 +81,14 @@ export default {
     if (!silent) {
       token = state.push('katex_inline', 'math', 0)
       token.markup = '$'
-      token.content = state.src.slice(start, match)
+      token.content = state.src
+        // Extract the math part without the $
+        .slice(start, match)
+        // Escape the curly braces since they will be interpreted as
+        // attributes by markdown-it-attrs (the "curly_attributes"
+        // core rule)
+        .replaceAll("{", "{{")
+        .replaceAll("}", "}}")
     }
 
     state.pos = match + 1