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.
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.
5.
6.
7.
8.
9.
10.
KaTeX parse error: Expected '}', got '\substack' at position 24: …_{2} \mathop{\̲s̲u̲b̲s̲t̲a̲c̲k̲{=\!=\!=\!=\!=\…
11.
KaTeX parse error: Expected '}', got '\substack' at position 30: …\; \mathop{\̲s̲u̲b̲s̲t̲a̲c̲k̲{-\!-\!-\!-\!-\…
12.
KaTeX parse error: Expected '}', got '\substack' at position 10: \mathop{\̲s̲u̲b̲s̲t̲a̲c̲k̲{-\!-\!-\!-\!-\…
13.
四、遗留问题
- 方程编辑器会将以下方程判断为无效方程
- 对应[测试数据.5]
KaTeX parse error: Expected '}', got '\buildrel' at position 47: …exp (a\mathord{\̲b̲u̲i̲l̲d̲r̲e̲l̲{\lower0pt\hbox…
- 对应[测试数据.7]
KaTeX parse error: Expected 'EOF', got '\buildrel' at position 2: \̲b̲u̲i̲l̲d̲r̲e̲l̲{溶解}\over\longr…
- 对应[测试数据.8]
以上3个方程在方程编辑器中,将被视为无效方程。MathJax显示则为有效方程。
- 方程编辑器目前不支持以下命令
序号 | 命令 | 说明 |
---|---|---|
1 | buildrel | |
2 | lower | |
3 | hbox | |
4 | scriptscriptstyle | |
5 | frown | |
6 | over | |
7 | boldsymbol | 使用bold可以实现粗体功能 |
8 | pmb | 使用bold可以实现粗体功能 |
方程编辑器中出现以上命令,将会被视为无效方程。
五、Next
部分LaTex无法支持的问题将在未来版本中继续解决。
下一步将尝试优化空方程的判定。
六、Finally
~杯汝来前~老子今朝~点检形骸~