Skip to content
This repository has been archived by the owner on Mar 25, 2018. It is now read-only.

Latest commit

 

History

History
115 lines (88 loc) · 3.61 KB

README.md

File metadata and controls

115 lines (88 loc) · 3.61 KB

markdown-it-math

NOTICE: Code from this repository was directly incorporated into markdown-preview-plus. Since it's diverged quite heavily from upstream, and porting changes from upstream is infeasible, there's little reason to keep this repository separate from MPP. Hence, this repository is archived.

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!
\]