Flutter Math: 使用纯 Flutter 渲染 LaTeX 数学公式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
znjw
V2EX    Flutter

Flutter Math: 使用纯 Flutter 渲染 LaTeX 数学公式

  •  
  •   znjw 2020-10-27 13:22:52 +08:00 4029 次点击
    这是一个创建于 1892 天前的主题,其中信息可能已经有所发展或是发生改变。

    介绍一下我开发的一个 Flutter 插件:Flutter Math,最近刚刚发布了 0.2.0 版。Flutter Math 是一个完全使用 Dart 和 Flutter 渲染 LaTeX 数学公式的插件,可以看作是移植在 Dart 和 Flutter 平台上的 KaTeX 。其支持的 LaTeX 语法大致与 KaTeX 相同(少数当前版本暂不支持的语法详见 Github 仓库),对数学公式的渲染结果几乎像素级还原 KaTeX 。

    相比已有的 flutter_tex 插件,本插件完全的基于 Dart 和 Flutter,不包含任何 WebView 和 Javascript,性能远超过 flutter_tex 。大家如果频繁遇到 flutter_tex 带来的卡顿以及崩溃,欢迎试用 Flutter Math 。所有的组件都同时支持手机端和 Web 端[^1],[^2]。可以在此查看 Web 端效果 Flutter Math Demo

    渲染样例

    x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

    二次方程解

    i\hbar\frac{\partial}{\partial t}\Psi(\vec x,t) = -\frac{\hbar}{2m}\nabla^2\Psi(\vec x,t)+ V(\vec x)\Psi(\vec x,t)

    薛定谔方程

    \hat f(\xi) = \int_{-\infty}^\infty f(x)e^{- 2\pi i \xi x}\mathrm{d}x

    傅里叶变换

    使用方法

    1. 在 pubspec.yaml 文件中添加对flutter_math的依赖
    2. 在代码中使用Math.tex(expression)组件展示渲染结果。可以通过提供可选参数mathStyletextStyle控制公式样式,onErrorFallback自定义输入错误时如何展示报错信息。样例如下
      Math.tex( r'\frac a b', mathStyle: MathStyle.text, // 行内公式 textStyle: TextStyle(fontSize: 42), ) 

    0.2.0 版本新加入可选择版本SelectableMath,基本与 Flutter 自带的SelectableText效果相同。

    项目仓库地址:GitHub 地址。目前版本为 0.1.4,更多信息以及暂不支持的 KaTeX 特性欢迎查阅 GitHub 页面。欢迎打星,欢迎 fork !


    [^1]: Web 端 debug 可能会出现栈溢出错误,这是一个已知 Dart 编译器 bug 并且短期内 stable/beta 通道修复可能性较小。请升级到带有 Dart2.11.0-254.0.dev 或更高版本的 Flutter 。

    [^2]: Web 端部分符号右侧渲染不全,这是目前 Flutter 的 DomCanvas 后端自身 bug,暂无解决办法。

    1 条回复    2020-11-19 08:54:09 +08:00
    sunbreak
        1
    sunbreak  
       2020-11-19 08:54:09 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2315 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 02:08 PVG 10:08 LAX 18:08 JFK 21:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86