markdown-it: support \begin...\end for MathJax

This commit is contained in:
Le Tan 2018-10-30 20:47:57 +08:00
parent aeb2263be3
commit bdf4e10c6e
2 changed files with 28 additions and 11 deletions

View File

@ -109,7 +109,7 @@ mdit = mdit.use(window.markdownitFootnote);
mdit = mdit.use(window["markdown-it-imsize.js"]); mdit = mdit.use(window["markdown-it-imsize.js"]);
if (typeof texmath != 'undefined') { if (typeof texmath != 'undefined') {
mdit = mdit.use(texmath, { delimiters: 'dollars' }); mdit = mdit.use(texmath, { delimiters: ['dollars', 'raw'] });
} }
var mdHasTocSection = function(markdown) { var mdHasTocSection = function(markdown) {

View File

@ -8,18 +8,24 @@
'use strict'; 'use strict';
function texmath(md, options) { 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 i = 0; i < delimiters.length; ++i) {
for (let rule of texmath.rules[delimiters].inline) { let deli = delimiters[i];
md.inline.ruler.before('escape', rule.name, texmath.inline(rule)); // ! important if (deli in texmath.rules) {
md.renderer.rules[rule.name] = (tokens, idx) => rule.tmpl.replace(/\$1/,texmath.render(tokens[idx].content,false)); 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) { for (let rule of texmath.rules[deli].block) {
md.block.ruler.before('fence', rule.name, texmath.block(rule)); 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 md.renderer.rules[rule.name] = (tokens, idx) => rule.tmpl.replace(/\$2/,tokens[idx].info) // equation number
.replace(/\$1/,texmath.render(tokens[idx].content,true)); .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: '<x-eqn class="tex-to-render">$1</x-eqn>',
tag: '\\begin'
}
]
}
}; };
if (typeof module === "object" && module.exports) if (typeof module === "object" && module.exports)