• Stars
    star
    151
  • Rank 246,057 (Top 5 %)
  • Language
    HTML
  • License
    MIT License
  • Created over 7 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Support TeX math equations with your Markdown documents.

License npm npm

markdown-it-texmath

Add TeX math equations to your Markdown documents rendered by markdown-it parser. KaTeX is used as a fast math renderer.

What's New?

  • markdown-it-texmath reached quite a stable state with version 1.0 .

  • Native begin{...} / end{...} environments are supported as delimiters itself ... thanks to William Stein for proposing.

    \begin{equation}
      a^2+b^2=c^2
    \end{equation}
    

    They can even be nested.

    \begin{equation}
      \begin{pmatrix}
        A & B \\ B & C
      \end{pmatrix} 
    \end{equation}
    
  • Different delimiters can be merged. Delimiters options property supports array notation for that. Example: delimiters: ['dollars','beg_end']. Thanks to Liu YongLiang for proposing.

Features

Simplify the process of authoring markdown documents containing math formulas. This extension is a comfortable tool for scientists, engineers and students with markdown as their first choice document format.

  • Macro support
  • Simple formula numbering
  • Inline math with tables, lists and blockquote.
  • User setting delimiters:
    • 'dollars' (default)
      • inline: $...$ or $$...$$
      • display: $$...$$
      • display + equation number: $$...$$ (1)
    • 'brackets'
      • inline: \(...\)
      • display: \[...\]
      • display + equation number: \[...\] (1)
    • 'doxygen'
      • inline: \f$...$\f
      • display: \f[...\f]
      • display + equation number: \f[...\f] (1)
    • 'gitlab'
      • inline: $`...`$
      • display: ```math ... ```
      • display + equation number: ```math ... ``` (1)
    • 'julia'
      • inline: $...$ or ``...``
      • display: ```math ... ```
      • display + equation number: ```math ... ``` (1)
    • 'kramdown'
      • inline: $$...$$
      • display: $$...$$
      • display + equation number: $$...$$ (1)
    • 'beg_end' (display math only)
      • inline: N/A
      • display: begin{...}...end{...}
      • display + equation number: N/A

Show me

View a test table.

try it out ...

Use with node.js

Install the extension. Verify having markdown-it and katex already installed .

npm install markdown-it-texmath

Use it with JavaScript.

const tm = require('markdown-it-texmath');
const md = require('markdown-it')({html:true})
                  .use(tm, { engine: require('katex'),
                             delimiters: 'dollars',
                             katexOptions: { macros: {"\\RR": "\\mathbb{R}"} } });
const str = "Euler\'s identity $e^{i\\pi}+1=0$ is a beautiful formula in $\\RR^2$.";

md.render(str);

Use in Browser

<!doctype html>
<html>
<head>
  <meta charset='utf-8'>
  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.css">
  <link rel="stylesheet" href="../css/texmath.css">
  <script src="https://cdn.jsdelivr.net/npm/markdown-it/dist/markdown-it.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.js"></script>
  <script src="../texmath.js"></script>
  <title>test</title>
</head>
<body>
  <div id="out"></div>
  <script>
    const str = `"Euler\'s identity $e^{i\\pi}+1=0$ is a beautiful formula in $\\RR^2$."`
    document.addEventListener("DOMContentLoaded", () => {
        const md = markdownit({html:true})
                      .use(texmath, { engine: katex,
                                      delimiters: 'dollars',
                                      katexOptions: { macros: {"\\RR": "\\mathbb{R}"} } } );
        out.innerHTML = md.render(str);
    })
  </script>
</body>
</html>

CDN

Use following links for texmath.js and texmath.css

  • https://cdn.jsdelivr.net/npm/markdown-it-texmath/texmath.min.js
  • https://cdn.jsdelivr.net/npm/markdown-it-texmath/css/texmath.min.css

Dependencies

  • markdown-it: Markdown parser done right. Fast and easy to extend.
  • katex: This is where credits for fast rendering TeX math in HTML go to.

ToDo

nothing yet

FAQ

  • Support of inline syntax of display math ?

    • Inline syntax of display math with dollars mode is supported starting from version "0.7.0". So 'This formula $$a+b=c$$ will result in display math presentation', i.e. gets displayed on a separate line. For true inline math use $..$ mode like before.
  • Multiline diplay math in blockquote block possible ?

    • Display math inside of blockquote blocks is able to span multiple lines with version "0.7.3".
  • markdown-it-texmath with React Native does not work, why ?

    • markdown-it-texmath is using regular expressions with y (sticky) property and cannot avoid this. The use of the y flag in regular expressions means the plugin is not compatible with React Native (which as of now doesn't support it and throws an error Invalid flags supplied to RegExp constructor).
  • Why doesn't markdown-it-texmath work with other engines ?

    • markdown-it-texmath is a personal project of mine. As it does very well with KaTeX what I want it to do, I offer it to the public as an open source plugin. I do not have time or interest to integrate other math engines. But if someone wants to help here out, pull requests are always welcome.

CHANGELOG

[1.0.0] on May 28, 2022

  • Update to KaTeX version 0.15.6.
  • Update to markdown-it 13.0.1.
  • Bug fixed in level handling with markdown-it. Thanks to williamstein.
  • Bug fixed in mapping with markdown-it. Thanks to williamstein.
  • Supporting native begin{..} / end{...} environments as delimiters itself. Thanks to williamstein for proposing.
  • Merging different delimiters for simultaneous use via delimiters:[<delims1>, <delims2>]. Thanks to tlylt for proposing.

[0.9.7] on December 07, 2021

  • Redundant </math> end-tag with display-mode equations removed. All modes were affected ... invisible effect though. Thanks to yuanbug for reporting.

[0.9.6] on November 16, 2021

  • Small bug in 'dollars' inline-display-mode regex fixed.

[0.9.5] on November 12, 2021

  • More Optimization done with the 'dollars' regexes.

[0.9.4] on November 12, 2021

  • Optimizing the 'dollars' regexes. Thanks to Erik Demaine.
  • Adding 'doxygen' delimiters support. (#31). Thanks to arwedus.

[0.9.3] on October 28, 2021

  • Fixing newline bug in 'dollars' regexes. (#32).

[0.9.2] on October 27, 2021

  • Fixing disability to include escaped dollar when using dollars delimiters (#32).

[0.9.1] on July 02, 2021

  • potential XSS vulnerability with equation numbers fixed (#29).

[0.9.0] on May 26, 2021

  • KaTeX options {katexOptions:...} within markdown-it-texmath options are directly handed over to katex. See KaTeX options. Thanks to Kirill for pull request.
  • Potential error message XSS vulnerability fixed. Thanks to CatNose.
  • Using new boolean markdown-it-texmath outerSpace option, inline rules dollars explicitly require surrounding spaces when set to true (default is false for backwards compatibility). This is primarily a guard against misinterpreting single $'s in normal markdown text.
  • Update to KaTeX version 0.13.11.

[0.8.0] on July 10, 2020

  • Infinite loop bug with gitlab mode and display math inside blockquote section removed.
  • Fundamental redesign of display math implementation.
  • Update to KaTeX version 0.12.0.

[0.7.2] on June 22, 2020

  • Regex bug with gitlab mode removed.

[0.7.0] on June 14, 2020

  • Experimental pandoc mode removed. Enhanced dollars mode now does, what pandoc mode was requiring.
  • With dollars mode inline math expression $$..$$ will result in display math presentation now. Adding equation numbers $$..$$(1) is not supported in inline syntax.
  • Significant code redesign and regular expression optimization results in more compact code and performance gain ... not measured though.
  • Bug with display math inside of blockquote blocks removed.

[0.6.9] on June 11, 2020

  • Now display math inside of blockquote blocks can span multiple lines, provided that every line starts with a > character.
  • Possible cause of [blockquote bug(goessner/mdmath#50)] presumably eliminated.
  • Update to markdown-it version 11.0.0

[0.6.7] on April 29, 2020

[0.6.6] on April 07, 2020

  • Removed a small bug in activation method.

[0.6.5] on April 05, 2020

  • Hand instance of katex over to markdown-it-texmath using options.engine object. Works with node.js and browsers. With node.js options.engine entry { engine:'katex' } as a string also works.
  • As a consequence of the topic before, the use method of markdown-it-texmath is deprecated now.
  • Add beta support for Pandoc syntax on request. Here waiting for test results.
  • Using jsdelivr as cdn from now on.

[0.6.0] on October 04, 2019

[0.5.5] on February 07, 2019

[0.5.4] on January 20, 2019

[0.5.3] on November 11, 2018

[0.5.2] on September 07, 2018

[0.5.0] on August 15, 2018

  • Fatal blockquote bug investigated. Implemented workaround to vscode bug, which has finally gone with vscode 1.26.0 .

[0.4.6] on January 05, 2018

  • Escaped underscore bug removed.

[0.4.5] on November 06, 2017

  • Backslash bug removed.

[0.4.4] on September 27, 2017

  • Modifying the block mode regular expression with gitlab delimiters, so removing the newline bug.

License

markdown-it-texmath is licensed under the MIT License

© Stefan Gössner

More Repositories

1

mdmath

LaTeX Math for Markdown inside of Visual Studio Code.
JavaScript
751
star
2

canvas-area

Lightweight HTML container element as a controller parent for one or more canvas elements
JavaScript
316
star
3

microjam

A minimalistic Jamstack approach for creating GitHub-Pages hosted sites.
JavaScript
44
star
4

v2

v2 - a minimalistic, high-performant 2D vector class
JavaScript
36
star
5

g2

A 2d graphics command queue micro-library.
JavaScript
34
star
6

morphr

Morphr - morphing plain javascript object values
JavaScript
23
star
7

parseSvgPathData

SVG Path Data Micro-Parser targeting custom interface objects.
JavaScript
18
star
8

canvas-currentTransform

Polyfill for CanvasRenderingContext2D.prototype.currentTransform
JavaScript
7
star
9

mec2

A javascript library for simulating and analysing planar mechanisms.
JavaScript
6
star
10

g2-chart

Line chart addon for g2.
JavaScript
5
star
11

vector2d-math

A growing list of resources related to Vectors and Plane Geometry.
4
star
12

ctrling

An appealing GUI for controlling your Web-App, JSON, DOM or JavaScript Object Values
JavaScript
4
star
13

g2-svg

SVG addon for g2
JavaScript
3
star
14

crocker

Micro javascript library for design and analysis of Crank-Rocker mechanisms.
JavaScript
3
star
15

canvasInteractor

Lightweight managing and throtteling canvas events.
JavaScript
2
star
16

g2-mec

Extend g2 by mechanical symbols and elements.
JavaScript
2
star
17

vscanvas

Preview Html Canvas inside of VSCode
JavaScript
1
star
18

goessner.github.io

HTML
1
star
19

microjam-g2

Using g2 with microJam
1
star
20

microjam-simple

A simple template for microjam a minimalistic Jamstack approach
1
star
21

microjam-tufte

A Tufte Style Template for μJam
1
star
22

animatr

Animatr - tiny animation library for mechanical applications
HTML
1
star
23

polygon-data

Efficient Handling of Polygon Data With The ES6 Proxy Object
HTML
1
star
24

microjam-docs

A microjam template for project or product documentation
1
star