소스 검색

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