快速开始
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/physics @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}'物理工具
typescript
import {
FUNDAMENTAL_CONSTANTS, getConstant, searchConstants,
SI_BASE_UNITS, convert,
VectorOperations, VectorCalculus,
BraKetUtils,
} from '@sciexpr/physics'
// 查询物理常量 —— CODATA 2018
getConstant('c')
// → { symbol:'c', name:'真空中光速', value:299792458, unit:'m·s⁻¹', ... }
// 按分类搜索常量
searchConstants('Planck')
// → [{ symbol:'h', name:'普朗克常数', ... }, { symbol:'hbar', name:'约化普朗克常数', ... }]
// 单位换算
convert(1, 'eV', 'J') // → 1.602176634e-19
convert(0, '℃', 'K') // → 273.15
// 向量运算
const vec = new VectorOperations()
vec.dot([1,2,3], [4,5,6]) // → 32
vec.cross([1,0,0], [0,1,0]) // → [0, 0, 1]
vec.norm([3,4,0]) // → 5
// 矢量微积分 LaTeX 生成
const vc = new VectorCalculus()
vc.gradient('f') // → '\\nabla f'
vc.divergence('\\mathbf{F}') // → '\\nabla \\cdot \\mathbf{F}'
vc.curl('\\mathbf{F}') // → '\\nabla \\times \\mathbf{F}'
// Bra-Ket 量子力学记号
const bk = new BraKetUtils()
bk.ket('\\psi') // → '\\ket{\\psi}'
bk.bra('\\phi') // → '\\bra{\\phi}'
bk.braket('\\psi', '\\phi') // → '\\braket{\\psi|\\phi}'
bk.commutator('x', 'p') // → '[\\hat{x}, \\ \\hat{p}]'