前期工作
问题提出
经过第六周的讨论,决定在前端通过HTML表示文本,为了保证接口的统一,需要寻求在HTML中表示数学公式的解决方案。
问题解决
对于网页公式显示问题,网上的首选解决方案是使用KaTeX对公式进行渲染,但是考虑到我们所需要的使用场景是在SVG中的<foreignObject>,使用KaTeX并非最优解;同时过于依赖现成框架,缺少创新性。
通过查询资料,得知了MathML可以用于解决上述问题
Mathematical Markup Language (MathML) is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents. It is part of HTML5 and an ISO standard ISO/IEC 40314 since 2015.
然而,除了Firefox,包括chrome在内的浏览器并不支持MathML;而本项目构建所使用的electron框架正是chrome内核,因此MathML的显示适配问题亟待解决。
首先考虑替换electron所使用的内核,但是可行性较低;然后考虑通过CSS样式强行显示,在研究过程中发现了MathML.css库,为其他浏览器显示MathML提供了支持。
- 对于某些标签的适配还是存在一些问题的,需要手动调整修改
至此,前期工作基本完成,数学公式的显示问题已解决。
LaTeX解析
考虑到用户插入数学公式使用LaTeX语法显然是最合适的解决方案,因此接下来考虑如何将LaTeX转化到MathML。
调研准备工作
第一步依然是查找网络上现有的解决方案,这时得知了MathJax的存在
MathJax is a modular javascript framewo