npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@aarkue/tiptap-math-extension

v1.3.3

Published

Math/LaTeX Extension for the TipTap Editor

Downloads

3,297

Readme

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: "<p>Hello World!</p>",
});

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;
      };
}
export const DEFAULT_OPTIONS: MathExtensionOption = { addInlineMath: true, evaluation: false, delimiters: "dollar" };

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.