Important
Active development and maintenance of @m2d/math has moved to the unified md2docx monorepo.
- 🏠 Monorepo: github.com/md2docx/md2docx
- 📂 Package Source:
packages/math - 📖 Documentation: md2docx.js.org/docs/math
- 💬 Issues & Pull Requests: Please submit all new issues, feedback, and PRs in the md2docx issue tracker.
This standalone repository is now archived and retained for historical reference only. Releases and npm updates continue from the monorepo.
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-mathplugin.
npm install @m2d/mathpnpm add @m2d/mathyarn add @m2d/mathThe @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.
- 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.
import { toDocx } from "@m2d/core";
import { mathPlugin } from "@m2d/math";
const plugins = [mathPlugin()];
const buffer = await toDocx(mdastTree, {
plugins,
});This is inline math: $E = mc^2$
$$
\frac{a^2 + b^2}{c^2} = 1
$$- Inline math (
$E = mc^2$) →E = mc²as a Word MathRun. - Block math renders as full equation paragraphs.
- Uses
latex-mathto 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.
Includes (but not limited to):
\frac, \sqrt, \sum, \int, \alpha, \beta, \theta, \leq, \geq, \neq, \infty, \cdot
- Does not support full LaTeX environments (
\begin{align}, etc.) - Complex expressions may need pre-processing
- Does not render styled math (
\textcolor, etc.)
If you find this useful:
- ⭐ Star mdast2docx on GitHub
- ❤️ Consider sponsoring
MIT © Mayank Chaudhari
Made with 💖 by Mayank Kumar Chaudhari