MCPcopy Index your code
hub / github.com/aarkue/tiptap-math-extension

github.com/aarkue/tiptap-math-extension @v1.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.4.0 ↗ · + Follow
25 symbols 51 edges 15 files 0 documented · 0% 1 cross-repo links updated 9mo agov1.4.0 · 2025-09-14★ 10710 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Math/LaTeX Extension for the TipTap Editor

Use inline math expression / LaTeX directly in your editor!

npm license npm version npm downloads

Usage

See the demo at /example for a quick introduction on how to use this package. The package is now available on NPM as @aarkue/tiptap-math-extension. It can be installed using npm install @aarkue/tiptap-math-extension.

To correctly render the LaTeX expressions, you will also need to include the KaTeX CSS. If you are using vite you can use import "katex/dist/katex.min.css"; in the component which renders the tiptap editor. This requires that you also install the katex npm package using npm i katex (https://www.npmjs.com/package/katex). There are also different ways to include the CSS, for instance by using a CDN like jsdelivr.net. See https://katex.org/docs/browser for more information. Note, however, that only the CSS needs to be included manually, as the JS is already bundled with this plugin.

Features

Display Inline LaTeX

Writing a math expression surrounded by $-signs automatically creates a rendered LaTeX expression. The delimiters are also configurable via the corresponding option.

To edit or delete the LaTeX, simply press backspace with the cursor placed before the expression. The rendered LaTeX will disappear and the LaTeX source will become normal editable text again.

Evaluate LaTeX Expression

Note: Since version 1.2.0 this feature needs to be explicitly enabled. This can be done using the evaluate configuration option:

const editor = useEditor({
  extensions: [StarterKit, MathExtension.configure({ evaluation: true })],
  content: "

Hello World!

",
});

Calculation results can be shown inline, using the Evaluatex.js library.

Define variables using the := notation (e.g., x := 120). Then, expressions can include this variable (e.g., x \cdot 4=). End the calculating expressions with = to automatically show the computed result.

Screenshots + Demo

Try out the demo directly online at https://aarkue.github.io/tiptap-math-extension/!

2023-06-03_16-05

2023-06-03_16-05_1

https://github.com/aarkue/tiptap-math-extension/assets/20766652/96f31846-d4a8-4cb2-b963-ff6da57daeb1

Options

There are a few options available to configure the extension. See below for typescript definitions of all available options and their default value.

export interface MathExtensionOption {
  /** Evaluate LaTeX expressions */
  evaluation: boolean;
  /** Add InlineMath node type (currently required as inline is the only supported mode) */
  addInlineMath: boolean;
  /** KaTeX options to use for evaluation, see also https://katex.org/docs/options.html */
  katexOptions?: KatexOptions;
  /** Delimiters to auto-convert. Per default dollar-style (`dollar`) ($x_1$ and $$\sum_i i$$) are used.
   *
   * The `bracket` option corresponds to `\(x_1\)` and `\[\sum_i i \]`.
   *
   * Alternatively, custom inline/block regexes can be used.
   * The inner math content is expected to be the match at index 1 (`props.match[1]`).
   */
  delimiters?:
    | "dollar"
    | "bracket"
    | {
        inlineRegex?: string;
        blockRegex?: string;
        inlineStart?: string;
        inlineEnd?: string;
        blockStart?: string;
        blockEnd?: string;
      };

  /** If and how to represent math nodes in the raw text output (e.g., `editor.getText()`)
   * 
   * - `"none"`: do not include in text at all
   * - `"raw-latex"`: include the latex source, without delimiters (e.g., `\frac{1}{n}`)
   * - `{placeholder: "[...]`"}: represent all math nodes as a fixed placeholder string (e.g., `[...]`)
   * 
   * The option delimited-latex is currently disabled because of issues with it re-triggering input rules (see also https://github.com/ueberdosis/tiptap/issues/2946).
   * 
   * - ~`"delimited-latex"`: include the latex source with delimiters (e.g., `$\frac{1}{n}$`)~
   */
    renderTextMode?: "none"|"raw-latex"|{placeholder: string}, // |"delimited-latex"
}
export const DEFAULT_OPTIONS: MathExtensionOption = { addInlineMath: true, evaluation: false, delimiters: "dollar", renderTextMode: "raw-latex" };

See https://katex.org/docs/options.html for a complete list of the available KaTeX options.

Related or Used Projects

  • Tiptap Editor: The extensible editor for which this is an extension.
  • KaTeX: A LaTeX rendering engine for the web, used to render LaTeX expressions.
  • Evaluatex.js: Used to evaluate LaTeX expressions to a numeric value (e.g., 1 + (2 \cdot 3) = 7).
  • Vite: Used to serve the example demo project.

Extension points exported contracts — how you extend this code

Storage (Interface)
(no doc)
packages/tiptap-math-extension/src/inline-math-node.ts
MathExtensionOption (Interface)
(no doc)
packages/tiptap-math-extension/src/util/options.ts

Core symbols most depended-on inside this repo

getRegexFromOptions
called by 9
packages/tiptap-math-extension/src/inline-math-node.ts
getDelimiter
called by 4
packages/tiptap-math-extension/src/inline-math-node.ts
getVariableName
called by 3
packages/tiptap-math-extension/src/latex-evaluation/evaluate-expression.ts
updateResultSpan
called by 2
packages/tiptap-math-extension/src/latex-evaluation/update-evaluation.ts
evaluateExpression
called by 2
packages/tiptap-math-extension/src/latex-evaluation/evaluate-expression.ts
generateID
called by 2
packages/tiptap-math-extension/src/util/generate-id.ts
updateEvaluation
called by 1
packages/tiptap-math-extension/src/latex-evaluation/update-evaluation.ts
getVariableAliases
called by 1
packages/tiptap-math-extension/src/latex-evaluation/evaluate-expression.ts

Shape

Function 23
Interface 2

Languages

TypeScript100%

Modules by API surface

packages/tiptap-math-extension/src/inline-math-node.ts13 symbols
packages/tiptap-math-extension/src/latex-evaluation/evaluate-expression.ts4 symbols
packages/tiptap-math-extension/src/latex-evaluation/update-evaluation.ts2 symbols
packages/tiptap-math-extension/src/index.ts2 symbols
packages/tiptap-math-extension/src/util/options.ts1 symbols
packages/tiptap-math-extension/src/util/generate-id.ts1 symbols
example/src/TipTap.tsx1 symbols
example/src/App.tsx1 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add tiptap-math-extension \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact