@sciexpr/presets
预设模板库 — 数学公式、物理模板、化学模板、希腊字母预设。
安装
bash
npm install @sciexpr/presets@sciexpr/presets 包含 4 大类预设:数学公式、物理公式、化学方程式、希腊字母。
数学模板 (40+)
五类数学公式模板,按分类/标签/ID 快速检索。
typescript
import {
CALCULUS_TEMPLATES, ALGEBRA_TEMPLATES, TRIG_TEMPLATES,
LINEAR_ALGEBRA_TEMPLATES, STATS_TEMPLATES,
ALL_MATH_TEMPLATES,
getTemplatesByCategory, searchTemplates, getTemplateById,
} from '@sciexpr/presets'分类
| 分类 | 模板数 | 示例 |
|---|---|---|
calculus | 8 | 导数定义、链式法则、泰勒展开 |
algebra | 7 | 求根公式、二项式定理、等比数列 |
trigonometry | 8 | 和角公式、倍角公式、欧拉公式 |
linear-algebra | 6 | 矩阵乘法、特征值、克拉默法则 |
statistics | 4 | 正态分布、贝叶斯定理 |
检索
typescript
// 按分类
getTemplatesByCategory('calculus')
// → [{ id:'derivative-def', name:'导数定义', latex:'f\'(x)=...', ... }, ...]
// 按关键词搜索
searchTemplates('积分')
// → [{ id:'integral-def', ... }, { id:'integration-by-parts', ... }]
// 按标签搜索
searchTemplates('derivative')
// → [{ id:'derivative-def', ... }, { id:'power-rule', ... }]
// 按 ID 获取
getTemplateById('quadratic-formula')
// → { id:'quadratic-formula', name:'求根公式', latex:'x = \\frac{-b \\pm ...}', ... }物理模板(60+)
按子分类组织的物理公式模板。
typescript
import { PHYSICS_TEMPLATES } from '@sciexpr/presets'| 子分类 | 模板数 | 示例模板 |
|---|---|---|
| 力学 | 19 | 平均速度、匀变速公式、牛顿定律、动量守恒、动能定理、简谐振动 |
| 旋转运动 | 5 | 向心力、角动量、力矩、转动惯量、转动动能 |
| 电磁学 | 12 | 库仑定律、高斯定律、法拉第定律、洛伦兹力、欧姆定律 |
| 热力学 | 7 | 理想气体状态方程、热力学第一定律、熵变、卡诺效率 |
| 量子力学 | 10 | 薛定谔方程、不确定性原理、德布罗意波长、泡利不相容、量子谐振子 |
| 相对论 | 5+ | 质能方程、时间膨胀、长度收缩、洛伦兹变换 |
typescript
// 按分类获取所有物理模板
getTemplatesByCategory('physics')
// → [力学模板..., 电磁学模板..., 量子力学模板..., ...]
// 按关键词搜索物理模板
searchTemplates('牛顿')
// → [{ id:'newton-2nd', name:'牛顿第二定律', ... }, { id:'newton-3rd', ... }]
// 搜索英文标签
searchTemplates('quantum')
// → [{ id:'schrodinger', name:'薛定谔方程', ... }, { id:'uncertainty-principle', ... }]模板结构
数学模板和物理模板共用以下结构:
typescript
interface FormulaTemplate {
id: string // 唯一标识
name: string // 名称
latex: string // LaTeX 源码
category: string // 分类:calculus/algebra/trigonometry/...
description: string // 描述
tags: string[] // 标签
}化学模板 (40+)
常见化合物、经典反应、电化学公式、离子预设、元素检索。
typescript
import {
COMPOUND_TEMPLATES, REACTION_TEMPLATES,
ION_TEMPLATES, ELEMENT_TEMPLATES,
searchCompounds, getAcids, getBases,
searchIons, getCations, getAnions,
searchElements, getElementsByPeriod, getElementsByGroup,
} from '@sciexpr/presets'常见化合物 (19)
typescript
// 按名称搜索
searchCompounds('硫酸')
// → [{ id:'h2so4', name:'硫酸', latex:'\\ce{H2SO4}', ... }]
// 获取所有酸
getAcids()
// → [{ id:'h2so4', ... }, { id:'hcl', ... }, { id:'hno3', ... }, ...]
// 获取所有碱
getBases()
// → [{ id:'naoh', ... }, { id:'caoh2', ... }]经典反应 (8)
typescript
REACTION_TEMPLATES.map(t => t.name)
// → ['中和反应','甲烷燃烧','光合作用','细胞呼吸','铁生锈','电解水','哈柏法','化学平衡']离子预设
typescript
// 获取所有阳离子
getCations()
// → [Li⁺, Na⁺, K⁺, NH₄⁺, Ca²⁺, Mg²⁺, Fe²⁺, Fe³⁺, ...]
// 获取所有阴离子
getAnions()
// → [F⁻, Cl⁻, Br⁻, I⁻, OH⁻, NO₃⁻, SO₄²⁻, CO₃²⁻, ...]
// 模糊搜索离子
searchIons('铁')
// → [{ id: 'ion-Fe2+', name: '亚铁离子', ... }, { id: 'ion-Fe3+', name: '铁离子', ... }]元素检索
typescript
// 按周期查询
getElementsByPeriod(3)
// → [Na, Mg, Al, Si, P, S, Cl, Ar]
// 按族查询
getElementsByGroup(17)
// → [F, Cl, Br, I, At, Ts]
// 模糊搜索
searchElements('氧')
// → [{ id: 'elem-O', name: '氧', symbol: 'O', ... }]Category Palette 数据(化学)
CHEM_PALETTE_CATEGORIES 提供 5 个化学子分类的 palette 数据。化合物/离子/元素从现有模板引用,希腊字母从 @sciexpr/math 统一引用。
typescript
import { CHEM_PALETTE_CATEGORIES } from '@sciexpr/presets'
// 5 个化学子分类
CHEM_PALETTE_CATEGORIES
// 0: compounds — 化学物质(H₂SO₄, NaOH, NaCl, H₂O, ...)
// 1: ions — 化学离子(Li⁺, Na⁺, Cl⁻, SO₄²⁻, ...)
// 2: chem-symbols — 常用符号(→, ⇌, ↑, ↓, Δ, pH, K_sp, ...)
// 3: chem-greek — 希腊字母(α, β, γ, λ, μ, σ, ...)含化学领域描述
// 4: chem-elements — 化学元素(H, He, Li, ..., U)希腊字母预设
typescript
import { GREEK_LOWERCASE_GROUP, GREEK_UPPERCASE_GROUP, searchGreek } from '@sciexpr/presets'
// 24 个小写字母 (含变体)
GREEK_LOWERCASE_GROUP.letters
// → [{ latex:'\\alpha', unicode:'α', name:'Alpha', ... }, ...]
// 11 个大写字母
GREEK_UPPERCASE_GROUP.letters
// → [{ latex:'\\Gamma', unicode:'Γ', name:'Gamma' }, ...]
// 搜索
searchGreek('alpha')
// → [{ latex:'\\alpha', unicode:'α', ... }]字母结构
typescript
interface GreekLetter {
latex: string // '\\alpha'
unicode: string // 'α'
name: string // 'Alpha'
englishName: string // 'alpha'
variants?: { // 变体(如 \\varepsilon, \\varphi 等)
latex: string
unicode: string
name: string
}[]
}