diff --git a/src/resources/markdown-it.js b/src/resources/markdown-it.js index 16318f2a..b86f242a 100644 --- a/src/resources/markdown-it.js +++ b/src/resources/markdown-it.js @@ -109,7 +109,7 @@ mdit = mdit.use(window.markdownitFootnote); mdit = mdit.use(window["markdown-it-imsize.js"]); if (typeof texmath != 'undefined') { - mdit = mdit.use(texmath, { delimiters: 'dollars' }); + mdit = mdit.use(texmath, { delimiters: ['dollars', 'raw'] }); } var mdHasTocSection = function(markdown) { diff --git a/src/utils/markdown-it/markdown-it-texmath.js b/src/utils/markdown-it/markdown-it-texmath.js index 9c1e6bf8..0395b3f9 100644 --- a/src/utils/markdown-it/markdown-it-texmath.js +++ b/src/utils/markdown-it/markdown-it-texmath.js @@ -8,18 +8,24 @@ 'use strict'; function texmath(md, options) { - let delimiters = options && options.delimiters || 'dollars'; + let delimiters = ['dollars']; + if (options && options.delimiters) { + delimiters = options.delimiters; + } - if (delimiters in texmath.rules) { - for (let rule of texmath.rules[delimiters].inline) { - md.inline.ruler.before('escape', rule.name, texmath.inline(rule)); // ! important - md.renderer.rules[rule.name] = (tokens, idx) => rule.tmpl.replace(/\$1/,texmath.render(tokens[idx].content,false)); - } + for (let i = 0; i < delimiters.length; ++i) { + let deli = delimiters[i]; + if (deli in texmath.rules) { + for (let rule of texmath.rules[deli].inline) { + md.inline.ruler.before('escape', rule.name, texmath.inline(rule)); // ! important + md.renderer.rules[rule.name] = (tokens, idx) => rule.tmpl.replace(/\$1/,texmath.render(tokens[idx].content,false)); + } - for (let rule of texmath.rules[delimiters].block) { - md.block.ruler.before('fence', rule.name, texmath.block(rule)); - md.renderer.rules[rule.name] = (tokens, idx) => rule.tmpl.replace(/\$2/,tokens[idx].info) // equation number - .replace(/\$1/,texmath.render(tokens[idx].content,true)); + for (let rule of texmath.rules[deli].block) { + md.block.ruler.before('fence', rule.name, texmath.block(rule)); + md.renderer.rules[rule.name] = (tokens, idx) => rule.tmpl.replace(/\$2/,tokens[idx].info) // equation number + .replace(/\$1/,texmath.render(tokens[idx].content,true)); + } } } } @@ -166,6 +172,17 @@ texmath.rules = { } ] }, + raw: { + inline: [], + block: [ + { + name: 'math_block', + rex: /(\\begin\s*\{([^{}\s\r\n]+)\}(?:[^\\]|\\(?!end\s*\{\2\}))*\\end\s*\{\2\})\s*$/gmy, + tmpl: '$1', + tag: '\\begin' + } + ] + } }; if (typeof module === "object" && module.exports)