Android完美解决LaTeX中文显示问题
在上一篇文章《Android实现方程编辑器》中,我们遗留了2个问题,其中一个是中文的显示问题。只要在公式中插入中文字符,将导致RuntimeException。之前的处理方式是try/catch,捕获到异常则处理为无效方程。更加合理的实现方案是支持中文显示。
一、目标
方程编辑器支持中文。
二、解决方案
在《Android插入方程技术方案分析》一文中,我们列举了几种开源的解析渲染库。其中大神sixgodIT的JLaTexMath-andriod已经完美实现对中文的支持,推荐使用该项目渲染中文LaTeX。
方案 | 描述 | 参考资料 |
---|---|---|
JLaTexMath-andriod | JLaTexMath for Android 完美支持、数学、物理、化学公式、汉字解析、图文混排 本项目借鉴自jlatexmath-android(由java Api 转化来的Android版本) 本项目针对化学、生物类的中文公式做了优化。 |
https://github.com/sixgodIT/JLaTexMath-andriod |
三、测试数据
1.
C O 2 + H 2 O ⟶ 叶 绿 素 日 光 CO _{2} +H _{2} O \mathrel{\mathop{\kern{0pt}\longrightarrow}\limits_{叶绿素}^{日光}} CO2+H2O叶绿素⟶日光
2.
KaTeX parse error: Expected '}', got '\substack' at position 63: …H_{2}O \mathop{\̲s̲u̲b̲s̲t̲a̲c̲k̲{= \!= \!= \!= …
3.
KaTeX parse error: Expected '}', got '\substack' at position 25: …H_{2}O \mathop{\̲s̲u̲b̲s̲t̲a̲c̲k̲{= \!= \!= \!= …
4.
C u S O 4 ⋅ 5 H 2 O CuSO _{4} \cdot 5H _{2} O CuSO4⋅5H2O
5.
% Δ p r i c e = 100 × [ exp ( a g e ) − 1 ] = 100 × [ exp ( − 0.008 ) − 1 ] = − 0.8 % \% \Delta price = 100\times [\exp (a\mathord{ g} e) - 1] = 100\times [\exp ( - 0.008) - 1] = - 0.8\% %Δprice=100×