Android完美解决LaTeX中文显示问题

  • 一、目标
  • 二、解决方案
  • 三、测试数据
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
  • 四、遗留问题
  • 五、Next
  • 六、Finally

在上一篇文章《Android实现方程编辑器》中,我们遗留了2个问题,其中一个是中文的显示问题。只要在公式中插入中文字符,将导致RuntimeException。之前的处理方式是try/catch,捕获到异常则处理为无效方程。更加合理的实现方案是支持中文显示。

一、目标

方程编辑器支持中文。

二、解决方案

在《Android插入方程技术方案分析》一文中,我们列举了几种开源的解析渲染库。其中大神sixgodITJLaTexMath-andriod已经完美实现对中文的支持,推荐使用该项目渲染中文LaTeX。

方案 描述 参考资料
JLaTexMath-andriod JLaTexMath for Android
完美支持、数学、物理、化学公式、汉字解析、图文混排

本项目借鉴自jlatexmath-android(由java Api 转化来的Android版本)

本项目针对化学、生物类的中文公式做了优化。

https://github.com/sixgodIT/JLaTexMath-andriod

三、测试数据

1.

CO2+H2O⟶叶绿素日光CO _{2} +H _{2} O \mathrel{\mathop{\kern{0pt}\longrightarrow}\limits_{叶绿素}^{日光}} CO2​+H2​O叶绿素⟶日光​

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.

CuSO4⋅5H2OCuSO _{4} \cdot 5H _{2} O CuSO4​⋅5H2​O

5.

%Δprice=100×[exp⁡(age)−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×[exp(age)−1]=100×[exp(−0.008)−1]=−0.8%

6.

Cu⟶△H2SO4(浓)CuSO4⟶NaOH溶液Cu(OH)2Cu \mathrel{\mathop{\kern{0pt}\longrightarrow}\limits_{\triangle }^{H_{2}SO_{4}(浓)}} CuSO _{4} \stackrel{NaOH溶液}\longrightarrow Cu (OH) _{2} Cu△⟶H2​SO4​(浓)​CuSO4​⟶NaOH溶液​Cu(OH)2​

7.

溶解⟶黏液→体壁→毛细血管→{溶解}\over\longrightarrow 黏液\rightarrow 体壁\rightarrow 毛细血管\rightarrow ⟶黏液→体壁→毛细血管→溶解​

8.

a+bi和a+bia+b\bold{i} 和 a+b\bold{i} a+bi和a+bi

9.

电梯上升10米里做的功电梯上升米里做的功电梯上升10米花的时间电梯上升米花的时间\frac{电梯上升10米里做的功\phantom{电梯上升米里做的功}}{电梯上升10米花的时间\phantom{电梯上升米花的时间}} 电梯上升10米花的时间电梯上升米花的时间电梯上升10米里做的功电梯上升米里做的功​

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.

解:∵A∪B={1, 2},则A,B均为{1, 2}的子集,即A,B∈{∅, {1}, {2}, {1, 2}},当A=∅时,B={1, 2},当A={1}时,B={1, 2}或B={2},当A={2}时,B={1, 2}或B={1},当A={1, 2}时,B={1, 2},或B={1},或B={2},或B=∅,共9种情况,故选:D解:∵A\cup B= \{1,\, 2\},则A,B均为\{1,\, 2\}的子集,\\即A,B\in \{\varnothing ,\, \{1\},\, \{2\},\, \{1,\, 2\}\},\\当A= \varnothing 时,B= \{1,\, 2\},\\当A= \{1\}时,B= \{1,\, 2\}或B= \{2\},\\当A= \{2\}时,B= \{1,\, 2\}或B= \{1\},\\当A= \{1,\, 2\}时,B= \{1,\, 2\},或B= \{1\},或B= \{2\},或B= \varnothing ,\\共9种情况,\\故选:D 解:∵A∪B={1,2},则A,B均为{1,2}的子集,即A,B∈{∅,{1},{2},{1,2}},当A=∅时,B={1,2},当A={1}时,B={1,2}或B={2},当A={2}时,B={1,2}或B={1},当A={1,2}时,B={1,2},或B={1},或B={2},或B=∅,共9种情况,故选:D

四、遗留问题

  • 方程编辑器会将以下方程判断为无效方程
  1. 对应[测试数据.5]

KaTeX parse error: Expected '}', got '\buildrel' at position 47: …exp (a\mathord{\̲b̲u̲i̲l̲d̲r̲e̲l̲{\lower0pt\hbox…

  1. 对应[测试数据.7]

KaTeX parse error: Expected 'EOF', got '\buildrel' at position 2: \̲b̲u̲i̲l̲d̲r̲e̲l̲{溶解}\over\longr…

  1. 对应[测试数据.8]

a+bi和a+bia+b\boldsymbol{i} 和 a+b\pmb{i} a+bi和a+biii

以上3个方程在方程编辑器中,将被视为无效方程。MathJax显示则为有效方程。

  • 方程编辑器目前不支持以下命令
序号 命令 说明
1 buildrel
2 lower
3 hbox
4 scriptscriptstyle
5 frown
6 over
7 boldsymbol 使用bold可以实现粗体功能
8 pmb 使用bold可以实现粗体功能

方程编辑器中出现以上命令,将会被视为无效方程。

五、Next

部分LaTex无法支持的问题将在未来版本中继续解决。

下一步将尝试优化空方程的判定

六、Finally

~杯汝来前~老子今朝~点检形骸~

Android完美解决LaTeX中文显示问题相关推荐

  1. android展示latex_Android完美解决LaTeX中文显示问题

    Android完美解决LaTeX中文显示问题 一.目标二.解决方案三.测试数据1.2.3.4.5.6.7.8.9.10.11.12.13. 四.遗留问题五.Next六.Finally 在上一篇文章&l ...

  2. Mac字体路径,解决matplotlib中文显示问题,超级好用~

    不需要用fc-list,找到字体路径,解决matplotlib中文显示问题. 1.找到字体路径 mac字体的路径一般都是在:/System/Library/Fonts 下 如果不放心可在:访达> ...

  3. 北大青鸟有php,完美解决PHP中文乱码 北大青鸟PHP技术

    北大青鸟武汉宏鹏鲁广校区PHP技术之完美解决PHP中文乱码. 用jsp时中文乱码就是一个很棘手的问题,近要开始写项目了,觉得解决中文乱码是和有必要的. 一.先是PHP网页的编码 1. php文件本身的 ...

  4. php显示json,PHP解决JSON中文显示问题

    PHP如何解决JSON中文显示问题?本文主要介绍了PHP JSON格式的中文显示问题解决方法,本文总结了3种解决中文显示\u开头字符问题的方法.希望对大家有所帮助. 返回json数据中文显示的问题 解 ...

  5. 解决matplotlib中文显示问题

    解决matplotlib中文显示问题 参考文章: (1)解决matplotlib中文显示问题 (2)https://www.cnblogs.com/weiweiwei233/p/9307619.htm ...

  6. 完美解决eclipse中文注释错位、缩进、被放大BUG

    完美解决eclipse中文注释错位.缩进.被放大BUG 1.常规操作 2.另辟蹊径 2.1.基本思路-字体融合法 2.2.操作步骤 2.2.1 软件准备 2.2.2 文件准备 2.2.3详细步骤 3. ...

  7. 解决 plt 中文显示问题

    @[数据可视化] 这两行代码解决 plt 中文显示问题 plt.rcParams['font.sans-serif'] = ['SimHei'](用来正常显示中文标签) plt.rcParams['a ...

  8. 解决QT5中文显示出现乱码

    Qt中的中文显示,经常会出现乱码.从网上看了一些博客,大都是Qt4中的解决方法, 网上搜到的都是这种: #include < QTextCodec > int main(int argc, ...

  9. 怎么解决mysql中文显示_怎样解决关于MySQL显示中文的问题?

    第一种方法,很精辟的总结: 经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧: WINDOWS 下导入应该这样 使 ...

最新文章

  1. 详解模板注入漏洞(下)
  2. LVM使用手册简化命令
  3. hashmap 判断key是否存在
  4. java 名称可以包含-吗_java – “标签属性名称包含无效字符”. “Android Manifest
  5. IOS基础之仿酷狗音乐第1天
  6. Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案
  7. 用Sql添加删除字段,判断字段是否存在的方法
  8. [学习笔记] 初次见面,请多关照 (公式推导+题集)——杜教筛
  9. Linux查看指定进程占用mem,Linux查看占用mem的进程脚本
  10. 计算机控制与网络,网络与通信技术在计算机控制的作用
  11. 支持向量机(SVM)-文本分类 (1)
  12. Leetcode每日一题:23.merge-k-sorted-lists(合并K个排序链表)
  13. 新手用手机学黑客编程一秒变黑客
  14. 8uftp,如何实现8uftp使用
  15. vue项目性能优化详解汇总
  16. 计算机键盘快速指南,菜鸟必看 Windows键盘快捷键入门指南
  17. Android常用的几种对话框
  18. CST材料库相关问题
  19. Python练手项目之微信机器人、恢复被撤回的微信消息
  20. 【移动端】企业微信移动app测试实战(2)、(3)

热门文章

  1. 多级文件系统(操作系统课设)
  2. Centos通过yum安装Jenkins
  3. 利用wrk工具压测腾讯CLB
  4. 【深度学习】卷积神经网络应用之双阶段目标检测|R-CNN、SPP-Net、Fast-RCNN、Faster-RCNN
  5. 企业数仓DQC数据质量管理实践篇
  6. 文章分类标签数据库设计
  7. 吞噬星空是鸿蒙三部曲吗,星辰变吞噬星空盘龙三部有什么关系
  8. LabVIEW的for循环事例
  9. python 常用转义字符对照表 键盘各键对应的ASCII码值
  10. Spring Boot 1.5.10项目引入knife4j接口文档