Skip to content

快速开始

5 分钟上手 Scientific Expression Engine。

安装

bash
npm install @sciexpr/core @sciexpr/renderer katex
npm install @sciexpr/vue
npm install @sciexpr/ai @sciexpr/markdown markdown-it
npm install @sciexpr/chemistry @sciexpr/math @sciexpr/presets

渲染第一个公式

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

const ast = new ParserRegistry().parse('\\frac{1}{2}')
const html = new KatexRenderer().render(ast).value

解析化学式

typescript
const ast = new ParserRegistry().parse('H2SO4', { hint: 'auto' })
// → type: 'molecule'

Vue 组件

vue
<script setup>
import { Formula, Toolbar } from '@sciexpr/vue'
</script>
<template>
  <Formula source="\frac{1}{2}" />
  <Toolbar @insert="(latex) => console.log(latex)" />
</template>

Markdown 集成

typescript
import MarkdownIt from 'markdown-it'
import { formulaPlugin } from '@sciexpr/markdown'

const md = new MarkdownIt().use(formulaPlugin)
md.render('E = $mc^2$')

AI 集成

typescript
import { AIPipeline } from '@sciexpr/ai'

class MyProvider implements IAICompletionProvider {
  async complete(ctx) { /* 调用你的 AI */ }
}

const pipeline = new AIPipeline({
  completionProvider: new MyProvider(),
})

化学工具

typescript
import { ELEMENT_MAP, FormulaValidator, ReactionBalancer } from '@sciexpr/chemistry'

// 查询铁元素
ELEMENT_MAP.get('fe')  // { symbol:'Fe', nameCN:'铁', atomicNumber:26, ... }

// 验证化学式
new FormulaValidator().validateText('H2SO4')  // { valid: true }

// 检查反应平衡
new ReactionBalancer().checkConservation(
  ['2NaOH', 'H2SO4'], ['Na2SO4', '2H2O']
)  // { balanced: true }

数学工具

typescript
import { searchSymbols, MatrixUtils } from '@sciexpr/math'

// 搜索符号
searchSymbols('alpha')  // [{ latex:'\\alpha', unicode:'α', ... }]

// 矩阵乘法
new MatrixUtils().multiply([[1,2],[3,4]], [[5,6],[7,8]])
// → [[19,22],[43,50]]

// 生成 LaTeX 矩阵
new MatrixUtils().toLaTeX([['a','b'],['c','d']])
// → '\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix}'

基于 MIT 协议发布