更新记录
2.0.0(2026-08-03)
- 初始版本
- 基于 UTS 实现,支持 uniapp(vue2/vue3)与 uniappx(uvue)双端
- 跨平台覆盖:Android / iOS / Harmony / Web / 小程序
- 各平台使用原生渲染引擎,高性能公式显示
- 支持 LaTeX 数学公式渲染(含分数、根号、积分、矩阵、方程组、定界符、希腊字母等)
- 支持设置字号(fontSize)、文字颜色(color)
- 支持块级 / 行内显示模式(displayMode)
- 支持
renderToImage导出图片 API(仅 Android / iOS / Harmony 原生端, 自动生成临时文件路径或返回 base64 dataURL) - 支持
load/error事件,load返回渲染尺寸 - 支持动态切换公式、字号、颜色,实时更新渲染
- 内置完整 demo:基础公式、自定义样式、动态交互、流式生成、公式库测试、图片导出
平台兼容性
uni-app(4.45)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | - | 5.0 | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.61)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | 5.0 | √ | √ | √ |
name: lime-katex 数学公式 description: 基于 UTS 实现的跨平台 LaTeX 数学公式渲染组件,支持 uniapp 和 uniappx,覆盖 Android、iOS、Harmony、Web 和小程序全平台。 tags:
- katex
- latex
- 公式
- 数学
- 原生 componentTag: l-katex plugin: lime-katex category: 原生组件 dependencies:
-
lime-shared
lime-katex 数学公式
一款基于 UTS 实现的跨平台 LaTeX 数学公式渲染组件,支持 uniapp 和 uniappx。各平台使用原生渲染引擎实现高性能公式显示,支持导出图片。
插件依赖:lime-shared
安装方法
- 在 uni-app 插件市场中搜索并导入
lime-katex - 由于普通授权版无法自定义基座,如需使用原生渲染请购买源码版
- 在页面中使用
l-katex组件
::: tip 注意🔔
- uniappx iOS 和安卓需要自定义基座
- Web 和小程序端需安装
katex:npm install katex:::
代码演示
基础使用
通过设置 tex 属性来渲染 LaTeX 公式。
<!-- 简单公式 -->
<l-katex tex="E = mc^2" />
<!-- 分数 -->
<l-katex tex="\frac{a}{b}" />
<!-- 希腊字母 -->
<l-katex tex="\alpha + \beta = \gamma" />
::: warning 注意 🔔
uniappx(uvue)端:\ 在模板属性中可能被转义为控制字符(如 \f → 换页符),
推荐使用 :tex 动态绑定并转义反斜杠:
<l-katex :tex="'\\frac{a}{b}'" />
:::
块级显示模式
设置 displayMode 为 true,公式将以块级方式居中显示(Web 和小程序端生效,原生端为行内渲染)。
<l-katex tex="\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}" :displayMode="true" />
设置字号和颜色
通过 fontSize 和 color 自定义公式的字号和颜色。
<l-katex tex="x^2 + y^2 = r^2" :fontSize="24" color="#FF0000" />
自定义样式
通过 lClass 和 lStyle 自定义组件容器样式。
<!-- 通过 lStyle 设置样式 -->
<l-katex tex="E = mc^2" :lStyle="{ padding: '10px', background: '#f5f5f5' }" />
<!-- 通过 lClass 配合 CSS 样式 -->
<l-katex tex="E = mc^2" lClass="custom-katex" />
<style>
.custom-katex {
padding: 10px;
background: #f5f5f5;
}
</style>
API 文档
Props 分类
🎯 基础配置
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
| tex | LaTeX 公式文本 | string | '' | - |
🎨 样式与外观
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
| fontSize | 字号(px) | number | 20 | - |
| color | 文字颜色,支持 #RGB、#RRGGBB、#AARRGGBB 格式 | string | '#000000' | 任意合法颜色值 |
| lClass | 根元素自定义类名(externalClasses) | string | UTSJSONObject | - | - |
| lStyle | 根元素自定义样式 | string | UTSJSONObject | - | - |
⚙️ 行为与交互
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
| displayMode | 显示模式:true 为块级显示,false 为行内显示(Web 和小程序端生效) | boolean | false | true / false |
Events
| 事件名 | 说明 | 回调参数 | 类型说明 |
|---|---|---|---|
| load | 公式渲染完成时触发 | event | 包含 width、height 信息(原生端) |
| error | 公式渲染失败时触发 | event | 包含 errMsg 错误信息 |
渲染为图片(renderToImage)
通过 API 方式将公式渲染为 PNG 图片,可在任意位置调用(不依赖组件实例)。
::: warning 注意 🔔
renderToImage 仅 APP 端(Android / iOS / Harmony)支持,依赖原生渲染引擎。
Web 和小程序端无此 API,如需在 Web/小程序展示图片请使用 KaTeX 服务端渲染或其他方案。
:::
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| tex | LaTeX 公式文本 | string | - |
| dataURL | 是否返回 dataURL(data:image/png;base64,...),为 false 时返回临时文件路径 |
boolean | false |
| fontSize | 字号(px) | number | 20 |
| color | 文字颜色,支持 #RGB、#RRGGBB、#AARRGGBB 格式 | string | '#000000' |
| backgroundColor | 背景颜色(仅鸿蒙端生效) | number | 0xFFFFFFFF |
| success | 成功回调,返回 { tempFilePath, width, height } |
function | - |
| fail | 失败回调 | function | - |
| complete | 完成回调(成功或失败都会触发) | function | - |
import { renderToImage } from '@/uni_modules/lime-katex'
// 生成临时文件路径
renderToImage({
tex: 'E = mc^2',
fontSize: 24,
color: '#FF0000',
success: (res) => {
console.log(res.tempFilePath, res.width, res.height)
}
})
// 生成 dataURL
renderToImage({
tex: 'E = mc^2',
dataURL: true,
success: (res) => {
// res.tempFilePath 为 data:image/png;base64,... 字符串
img.value = res.tempFilePath
}
})
平台渲染方案
| 平台 | 渲染方式 | 导出图片 | 说明 |
|---|---|---|---|
| Android | 原生渲染 | ✅ | 原生渲染 |
| iOS | 原生渲染 | ✅ | 原生渲染 |
| Harmony | 原生渲染 | ✅ | 原生渲染 |
| Web | v-html 渲染 | ❌ | 需安装 katex npm 依赖 |
| 小程序 | KaTeX.js → rich-text | ❌ | 与 Web 同引擎(KaTeX.js),输出转为 rich-text 展示 |
导出图片说明:
renderToImage仅 Android / iOS / Harmony 原生端可用,Web 和小程序端无此 API。 另注意\color/\textcolor为双参数命令且仅支持#RGB/#RRGGBB十六进制颜色。
公式支持范围(各平台对比)
各平台公式渲染能力存在差异:Web 端覆盖最全,iOS 端覆盖最窄(iOS 为能力下限)。 以下为各平台实测支持情况。
运行环境与渲染引擎对应关系
::: warning 重要说明 🔔 公式支持能力取决于实际使用的渲染引擎,而非单纯的操作系统,请先确认你的运行环境:
| 运行环境 | 组件渲染引擎 | 导出图片引擎 | 对应上表列 |
|---|---|---|---|
| uniappx app(uvue) | 原生引擎 | 原生引擎 | Android / Harmony / iOS 列 |
| uniapp app(vue) | KaTeX.js(等同 Web) | 原生引擎 | Web 列(渲染)/ 对应平台列(导出图片) |
| uniapp Web(vue/uvue) | KaTeX.js | 无(无导出能力) | Web 列 |
| 小程序 | KaTeX.js(转 rich-text) | 无(无导出能力) | Web 列 |
:::
说明:
- uniappx app 端:组件渲染与导出图片均使用原生引擎,能力对应表格中 Android / Harmony / iOS 列。
- uniapp app 端(vue):组件渲染走 KaTeX.js(
useKatexWeb),公式能力等同 Web 列 (约 600+ 命令,覆盖最全);但若使用renderToImage导出图片,则调用原生引擎, 公式支持范围受对应平台列限制(如 Android 不支持\tag编号、iOS 不支持\operatorname等)。 - Web / 小程序端:组件渲染均使用 KaTeX.js(小程序端将解析结果转为 rich-text
展示),公式能力等同 Web 列;两端均无
renderToImage导出能力(API 返回错误码 9020005)。 - 编写跨端通用公式时,建议仍以 iOS 原生引擎为基准(三者中最窄),保证各端一致。
总体规模
| 平台 | 命令/符号规模 | 环境数量 | 宏定义 |
|---|---|---|---|
| Web | 约 600+ | 33 | ✅ \newcommand/\def/\let |
| Android | 约 900(284 命令 + 612 符号) | 22 | ✅ \newcommand/\renewcommand/\newenvironment |
| Harmony | 约 840(317 宏 + 40 预置命令 + 487 符号) | 31 | ✅ \newcommand/\def/\newenvironment |
| iOS | 约 380(358 符号 + 14 盒子命令 + 11 字体命令) | 17 | ❌ 不支持 |
关键命令支持对比
| 命令/能力 | Web | Android | Harmony | iOS |
|---|---|---|---|---|
\frac \sqrt \sum \int 等基础运算 |
✅ | ✅ | ✅ | ✅ |
\alpha 等希腊字母 / 常用符号 |
✅ | ✅ | ✅ | ✅ |
字体 \mathbb \mathcal \mathbf \mathrm \mathit \mathsf \mathtt \mathfrak |
✅ | ✅ | ✅ | ✅ |
\mathscr \boldsymbol \pmb |
✅ | ⚠️ 无 \pmb |
✅ | ❌ |
\overbrace \underbrace \overline \underline |
✅ | ✅ | ✅ | ✅ |
\overset \underset \stackrel |
✅ | ✅ | ✅ | ✅ |
\left \right \big \Big \middle 定界符 |
✅ | ✅ | ✅ | ⚠️ 无 \middle |
\smash \phantom \vphantom \hphantom \llap \rlap \clap |
✅ | ✅ | ✅ | ✅ |
\cancel \bcancel \xcancel \sout |
✅ | ⚠️ 仅 \st |
⚠️ 无 \sout |
✅ |
\color \textcolor |
✅ | ⚠️ 仅 \textcolor |
✅ | ⚠️ 仅 #RGB/#RRGGBB |
\boxed \fbox \shadowbox |
✅ | ✅ | ✅ | ❌ |
\xrightarrow \xleftarrow 可伸缩箭头 |
✅ | ✅ | ✅ | ❌ |
\raisebox \rotatebox \scalebox \resizebox \rule |
✅ | ✅ | ✅ | ❌ |
\hspace \vspace \kern |
✅ | ✅ | ✅ | ⚠️ 无 \vspace |
\operatorname{argmax} |
✅ | ✅ | ✅ | ❌(需 \mathrm{argmax} 替代) |
\pmod \mod \pod |
✅ | ✅ | ✅ | ⚠️ \bmod 需兼容替换 |
\tag \notag \nonumber 编号 |
✅ | ❌ | ✅ | ❌ |
\substack \genfrac \sideset |
✅ | ✅ | ✅ | ❌ |
\unicode \char |
✅ | ⚠️ 仅 \char |
✅ | ❌ |
\includegraphics |
⚠️ 需 trust | ✅ | ✅ | ❌ |
\href \url 链接 |
⚠️ 需 trust | ❌ | ❌ | ❌ |
化学公式 \ce \chemfig(mhchem) |
⚠️ 需 contrib 扩展 | ❌ | ✅ 内置 | ❌ |
环境(\begin{...})支持对比
| 环境 | Web | Android | Harmony | iOS |
|---|---|---|---|---|
matrix \ pmatrix \ bmatrix \ Bmatrix \ vmatrix \ Vmatrix |
✅ | ✅ | ✅ | ✅ |
smallmatrix |
✅ | ✅ | ✅ | ✅ |
array(含 | 竖线、\hline) |
✅ | ✅ | ✅ | ✅ |
cases |
✅ | ✅ | ✅ | ✅ |
aligned \ split \ gathered |
✅ | ✅ | ✅ | ✅ |
align \ alignat \ gather \ equation |
✅ | ✅ | ✅ | ❌ |
flalign \ multline |
✅ | ✅ | ✅ | ❌ |
rcases \ dcases \ darray \ subarray |
✅ | ❌ | ⚠️ 仅 subarray |
❌ |
matrix* \ pmatrix*(可选对齐) |
✅ | ❌ | ❌ | ❌ |
CD(交换图) |
✅ | ❌ | ❌ | ❌ |
建议
- 写公式前以 iOS 为基准:三端中 iOS 命令覆盖最窄,公式库中的公式若含
\operatorname、\pmod、\newcommand、\tag、\xrightarrow、\boxed等,iOS 端会渲染失败。 - 等价替代写法(保持三端一致):
\operatorname{argmax}→\mathrm{argmax}a \pmod n→a \;\text{mod}\; n\xrightarrow{a}→\overset{a}{\rightarrow}\boxed{x}→\fbox{$x$}(Web/Android/Harmony 可用)
- 宏定义类命令(
\newcommand/\def):Web/Android/Harmony 支持,iOS 不支持,应避免使用。 \bmod已在 iOS 端做了兼容替换(自动转为\;\text{mod}\;),可直接使用。- 公式库 220 条内置公式均已按上述兼容性原则验证,三端可正常渲染。
Vue2 使用说明
插件使用了 composition-api,如需在 Vue2 项目中使用,请按照官方教程配置。
关键配置代码(在 main.js 中添加):
// vue2
import Vue from 'vue'
import VueCompositionAPI from '@vue/composition-api'
Vue.use(VueCompositionAPI)
快速预览
导入插件后,可以直接使用以下标签查看演示效果:
<!-- 代码位于 uni_modules/lime-katex/components/lime-katex -->
<lime-katex />
插件标签说明
| 标签类型 | 示例 | 说明 |
|---|---|---|
| 组件标签 | l-katex |
默认组件标签,直接使用组件功能 |
| 演示标签 | lime-katex |
默认演示标签,查看完整演示效果 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 73494
赞赏 592
下载 12475144
赞赏 1936
赞赏
京公网安备:11010802035340号