@md2docx/math
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

@m2d/math

test codecov Version Downloads Bundle Size

A plugin that transforms LaTeX-style math (inline and block) into DOCX-compatible equations using docx.

This package expects that the math nodes have already been extracted using remark-math plugin.


📦 Installation

npm install @m2d/math
pnpm add @m2d/math
yarn add @m2d/math

🚀 Overview

The @m2d/math plugin for mdast2docx enables support for LaTeX math rendering in DOCX exports. It parses inline and block-level math expressions written in LaTeX syntax and converts them into proper Word-compatible Math elements using the docx library.

Supports superscripts, subscripts, fractions, radicals, summations, symbols, and more.


✨ Features

  • Parses LaTeX-style math expressions
  • Converts math to docx.MathRun, docx.MathFraction, docx.MathRadical, etc.
  • Supports inline and block math ($...$, $$...$$)
  • Supports standard math macros like \frac, \sqrt, \sum, \alpha, and many others
  • Handles superscripts (^) and subscripts (_) intelligently
  • Gracefully ignores unsupported macros like \left, \right, etc.

🛠️ Usage

import { toDocx } from "@m2d/core";
import { mathPlugin } from "@m2d/math";

const plugins = [mathPlugin()];

const buffer = await toDocx(mdastTree, {
  plugins,
});

🧪 Example

Input Markdown (via MDAST)

This is inline math: $E = mc^2$

$$
\frac{a^2 + b^2}{c^2} = 1
$$

Output DOCX

  • Inline math ($E = mc^2$) → E = mc² as a Word MathRun.
  • Block math renders as full equation paragraphs.

⚙️ Internals

  • Uses latex-math to parse LaTeX math AST.
  • Converts LaTeX nodes to docx.MathRun[] elements.
  • Supports common math macros with fallback to Unicode symbols via an internal symbol map.
  • Integrates seamlessly with @m2d/core.

🧩 Supported Macros

Includes (but not limited to):

\frac, \sqrt, \sum, \int, \alpha, \beta, \theta, \leq, \geq, \neq, \infty, \cdot

⚠️ Limitations

  • Does not support full LaTeX environments (\begin{align}, etc.)
  • Complex expressions may need pre-processing
  • Does not render styled math (\textcolor, etc.)

⭐ Support Us

If you find this useful:


🧾 License

MIT © Mayank Chaudhari


Made with 💖 by Mayank Kumar Chaudhari

Package Sidebar

Install

npm i @md2docx/math

Weekly Downloads

9

Version

0.0.4

License

MPL-2.0

Unpacked Size

17.1 kB

Total Files

5

Last publish

Collaborators

  • mayank1513