Back to Plate

Equation

content/(plugins)/(elements)/equation.mdx

53.0.53.8 KB
Original Source
<ComponentPreview name="equation-demo" /> <PackageInfo>

Features

  • LaTeX syntax support for complex mathematical expressions.
  • Both inline and block equation formats.
  • Real-time rendering of equations using KaTeX.
  • Easy editing and navigation within equations.
  • Markdown shortcuts: type $...$ to create an inline equation, or $$ then Enter to create a block equation.
</PackageInfo>

Kit Usage

<Steps>

Installation

The fastest way to add equation functionality is with the MathKit, which includes the EquationPlugin and InlineEquationPlugin with Plate UI components, along with the $...$ and $$ Markdown shortcuts.

<ComponentSource name="math-kit" />

Add Kit

Add the kit to your plugins:

tsx
import { createPlateEditor } from 'platejs/react';
import { MathKit } from '@/components/editor/plugins/math-kit';

const editor = createPlateEditor({
  plugins: [
    // ...otherPlugins,
    ...MathKit,
  ],
});
</Steps>

Manual Usage

<Steps>

Installation

bash
npm install @platejs/math

Add Plugins

Include the equation plugins in your Plate plugins array when creating the editor.

tsx
import { MathRules } from '@platejs/math';
import {
  EquationPlugin,
  InlineEquationPlugin,
} from '@platejs/math/react';
import { createPlateEditor } from 'platejs/react';

const editor = createPlateEditor({
  plugins: [
    // ...otherPlugins,
    EquationPlugin,
    InlineEquationPlugin,
  ],
});

Configure Plugins

Configure the plugins with custom components to render equation elements.

tsx
import {
  EquationPlugin,
  InlineEquationPlugin,
} from '@platejs/math/react';
import { createPlateEditor } from 'platejs/react';
import { EquationElement, InlineEquationElement } from '@/components/ui/equation-node';

const editor = createPlateEditor({
  plugins: [
    // ...otherPlugins,
    InlineEquationPlugin.configure({
      inputRules: [MathRules.markdown({ variant: '$' })],
      node: {
        component: InlineEquationElement,
      },
    }),
    EquationPlugin.configure({
      inputRules: [MathRules.markdown({ on: 'break', variant: '$$' })],
      node: {
        component: EquationElement,
      },
    }),
  ],
});
  • node.component: Assigns EquationElement to render block equations and InlineEquationElement to render inline equations.
  • MathRules.markdown({ variant: '$' }): Enables the inline markdown shortcut.
  • MathRules.markdown({ variant: '$$', on: 'break' | 'match' }): Enables the block markdown shortcut and makes the trigger explicit.

Add Toolbar Button

You can add EquationToolbarButton to your Toolbar to insert equations.

</Steps>

Plate Plus

<ComponentPreviewPro name="equation-pro" />

Plugins

EquationPlugin

Plugin for block equation elements.

InlineEquationPlugin

Plugin for inline equation elements.

Transforms

tf.insert.equation

<API name="insert.equation"> <APIOptions type="InsertNodesOptions"> Options for the insert nodes transform. </APIOptions> </API>

tf.insert.inlineEquation

Inserts an inline equation.

<API name="insert.inlineEquation"> <APIParameters> <APIItem name="texExpression" type="string" optional> The LaTeX expression to insert. Empty equation if not provided. </APIItem> <APIItem name="options" type="InsertNodesOptions" optional> Options for the insert nodes transform. </APIItem> </APIParameters> </API>

Types

TEquationElement

typescript
interface TEquationElement extends TElement {
  texExpression: string;
}