更新记录

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

安装方法

  1. 在 uni-app 插件市场中搜索并导入 lime-katex
  2. 由于普通授权版无法自定义基座,如需使用原生渲染请购买源码版
  3. 在页面中使用 l-katex 组件

::: tip 注意🔔

  • uniappx iOS 和安卓需要自定义基座
  • Web 和小程序端需安装 katexnpm 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}'" />

:::

块级显示模式

设置 displayModetrue,公式将以块级方式居中显示(Web 和小程序端生效,原生端为行内渲染)。

<l-katex tex="\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}" :displayMode="true" />

设置字号和颜色

通过 fontSizecolor 自定义公式的字号和颜色。

<l-katex tex="x^2 + y^2 = r^2" :fontSize="24" color="#FF0000" />

自定义样式

通过 lClasslStyle 自定义组件容器样式。

<!-- 通过 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 列

:::

说明:

  1. uniappx app 端:组件渲染与导出图片均使用原生引擎,能力对应表格中 Android / Harmony / iOS 列。
  2. uniapp app 端(vue):组件渲染走 KaTeX.js(useKatexWeb),公式能力等同 Web 列 (约 600+ 命令,覆盖最全);但若使用 renderToImage 导出图片,则调用原生引擎, 公式支持范围受对应平台列限制(如 Android 不支持 \tag 编号、iOS 不支持 \operatorname 等)。
  3. Web / 小程序端:组件渲染均使用 KaTeX.js(小程序端将解析结果转为 rich-text 展示),公式能力等同 Web 列;两端均无 renderToImage 导出能力(API 返回错误码 9020005)。
  4. 编写跨端通用公式时,建议仍以 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(交换图)

建议

  1. 写公式前以 iOS 为基准:三端中 iOS 命令覆盖最窄,公式库中的公式若含 \operatorname\pmod\newcommand\tag\xrightarrow\boxed 等,iOS 端会渲染失败。
  2. 等价替代写法(保持三端一致):
    • \operatorname{argmax}\mathrm{argmax}
    • a \pmod na \;\text{mod}\; n
    • \xrightarrow{a}\overset{a}{\rightarrow}
    • \boxed{x}\fbox{$x$}(Web/Android/Harmony 可用)
  3. 宏定义类命令\newcommand/\def):Web/Android/Harmony 支持,iOS 不支持,应避免使用。
  4. \bmod 已在 iOS 端做了兼容替换(自动转为 \;\text{mod}\;),可直接使用。
  5. 公式库 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 默认演示标签,查看完整演示效果

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。