markdown-it-mathjax-node
v0.4.1
Published
Markdown-it plugin to include math in your document
Downloads
4
Maintainers
Readme
This is a markdown-it-mathjax-node
Call Mathjax-node to render math formula in markdown-it. Used deasync to bypass the markdown-it async only rule.
var md = require('markdown-it')()
.use(require('markdown-it-mathjax-node'));
let res = md.render('$a_i e^2$。')
console.log(res)
// <p>\[x & (-x) = 1000_{(2)} = 8_{(10)}\] 。</p>
check test.js for more
Note: This is a general markdown-it math plugin. It was originally designed to render MathML. If you intend to use MathJax, markdown-it-mathjax might be a better choise.
markdown-it-math
Pythagoran theorem is $$a^2 + b^2 = c^2$$.
Bayes theorem:
$$$
P(A | B) = (P(B | A)P(A)) / P(B)
$$$
<p>Pythagoran theorem is <math><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup><mo>=</mo><msup><mi>c</mi><mn>2</mn></msup></math>.</p>
<p>Bayes theorem:</p>
<math display="block"><mi>P</mi><mfenced open="(" close=")"><mrow><mi>A</mi><mo stretchy="true" lspace="veryverythickmathspace" rspace="veryverythickmathspace">|</mo><mi>B</mi></mrow></mfenced><mo>=</mo><mfrac><mrow><mi>P</mi><mfenced open="(" close=")"><mrow><mi>B</mi><mo stretchy="true" lspace="veryverythickmathspace" rspace="veryverythickmathspace">|</mo><mi>A</mi></mrow></mfenced><mi>P</mi><mfenced open="(" close=")"><mi>A</mi></mfenced></mrow><mrow><mi>P</mi><mfenced open="(" close=")"><mi>B</mi></mfenced></mrow></mfrac></math>
Installation
npm install markdown-it-math --save
Usage
var md = require('markdown-it')()
.use(require('markdown-it-math') [, options]);
where options can be (with defaults)
var options = {
inlineOpen: '$$',
inlineClose: '$$',
blockOpen: '$$$',
blockClose: '$$$',
renderingOptions: {},
inlineRenderer: require('ascii2mathml')(this.rendererOptions),
blockRenderer: require('ascii2mathml')(Object.assign({ display: 'block' },
this.renderingOptions))
}
(See ascii2mathml for reference about the default renderer).
Examples
Using comma as a decimal mark
var md = require('markdown-it')()
.use(require('markdown-it-math'), {
renderingOptions: { decimalMark: ',' }
});
md.render("$$40,2$$");
// <p><math><mn>40,2</mn></math></p>
Using TeXZilla as renderer
var texzilla = require('texzilla');
var md = require('markdown-it')()
.use(require('markdown-it-math'), {
inlineRenderer: function(str) {
return texzilla.toMathMLString(str);
},
blockRenderer: function(str) {
return texzilla.toMathMLString(str, true);
}
});
md.render("$$\\sin(2\\pi)$$");
// <p><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo lspace="0em" rspace="0em">sin</mo><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mo stretchy="false">)</mo></mrow><annotation encoding="TeX">\sin(2\pi)</annotation></semantics></math></p>
Using LaTeX style delimiters
var md = require('markdown-it')()
.use(require('markdown-it-math'), {
inlineOpen: '\\(',
inlineClose: '\\)',
blockOpen: '\\[',
blockClose: '\\]'
})
Note there are restrictions on what inline delimiters you can use, based on optimization for the markdown-it parser see here for details. And block level math must be on its own lines with newlines separating the math from the delimiters.
Some text with inline math \(a^2 + b^2 = c^2\)
And block math
\[
e = sum_(n=0)^oo 1/n!
\]