Skip to content

@sciexpr/renderer

多格式渲染器。

安装

bash
npm install @sciexpr/renderer katex

KaTeX HTML

typescript
import { KatexRenderer } from '@sciexpr/renderer'

const html = new KatexRenderer().render(ast).value

Unicode

typescript
import { UnicodeRenderer } from '@sciexpr/renderer'

new UnicodeRenderer().render(ast).value
// → "x² + y₂" (Unicode上下标) / "α+β" (希腊字母) / "H₂O" (化学式)

MathML

typescript
import { MathMLRenderer } from '@sciexpr/renderer'

new MathMLRenderer().render(ast).value
// → '<math xmlns="..."><mrow>...</mrow></math>'

AST → LaTeX

typescript
import { LatexReverseRenderer } from '@sciexpr/renderer'

new LatexReverseRenderer().render(ast).value
// → '\\frac{1}{2}'

注册表

typescript
import { RendererRegistry, KatexRenderer, UnicodeRenderer } from '@sciexpr/renderer'

const registry = new RendererRegistry()
registry.register(new KatexRenderer())
registry.register(new UnicodeRenderer())

registry.render(ast, 'html')     // KaTeX HTML
registry.render(ast, 'unicode')  // Unicode 纯文本

自定义渲染器

typescript
class SvgRenderer implements IRenderer {
  id = 'svg'; outputFormat = 'svg' as const
  render(ast) { return { value: '<svg>...</svg>', format: 'svg' } }
}
registry.register(new SvgRenderer())

基于 MIT 协议发布