fix(export/markdown): double slashes breaking math expressions (closes #1649)

This commit is contained in:
Elian Doran
2025-04-08 12:06:46 +03:00
parent d03ee26408
commit 3a1f1ceedb
2 changed files with 18 additions and 9 deletions

View File

@@ -208,19 +208,28 @@ function buildFigureFilter(): Rule {
}
function buildMathFilter(): Rule {
const MATH_INLINE_PREFIX = "\\(";
const MATH_INLINE_SUFFIX = "\\)";
const MATH_DISPLAY_PREFIX = "\\[";
const MATH_DISPLAY_SUFFIX = "\\]";
return {
filter(node) {
return node.nodeName === "SPAN" && node.classList.contains("math-tex");
},
replacement(content) {
replacement(_, node) {
// We have to use the raw HTML text, otherwise the content is escaped too much.
const content = (node as HTMLElement).innerText;
// Inline math
if (content.startsWith("\\\\(") && content.endsWith("\\\\)")) {
return `$${content.substring(3, content.length - 3)}$`;
if (content.startsWith(MATH_INLINE_PREFIX) && content.endsWith(MATH_INLINE_SUFFIX)) {
return `$${content.substring(MATH_INLINE_PREFIX.length, content.length - MATH_INLINE_SUFFIX.length)}$`;
}
// Display math
if (content.startsWith(String.raw`\\\[`) && content.endsWith(String.raw`\\\]`)) {
return `$$${content.substring(4, content.length - 4)}$$`;
if (content.startsWith(MATH_DISPLAY_PREFIX) && content.endsWith(MATH_DISPLAY_SUFFIX)) {
return `$$${content.substring(MATH_DISPLAY_PREFIX.length, content.length - MATH_DISPLAY_SUFFIX.length)}$$`;
}
// Unknown.