首先这是什么?
MathML全名叫做Mathematical Markup Language(数学-标记-语言),它被用来描述数学公式,主要频繁出现于电子书和办公格式。需要展示数学公式场合上。
这样的数学格式不是很久很久实现,MathML3.0现在的意义有多大作用?
角度有点不同,位于前端工程师角度来看,它的实现方式更加优秀,通常完成既是简单的数据格式需要配合复杂样式表,对于更复杂公式格式,要一套健全的管理模式,不管canvas还是svg实现办法都非常麻烦。如果公式格式渲染是由游览器客户端来完成,看起来使用就像“原生”(如写input)一样,或许这一切都迎刃而解,是时候使用并倡导MathML3.0了。
优缺点
有许多简单的符号(例如Wiki或markdown语法)来生成HTML页面。MathML也是如此:例如,计算器中使用的ASCII语法或功能更强大的LaTeX语言,在科学界非常流行。——MDN
优点:
-
- 编写数学表达式可能只需要标准的文本编辑器。
- 有许多工具可用,其中一些与经典的LaTeX-to-pdf工作流程兼容。
- 这样就可以访问LaTeX的高级功能,例如宏。
- 设置非常简单:只需上传少量Javascript和CSS文件和/或添加链接至文档标题即可。
- 这是一个纯粹的基于Web的解决方案:一切都由浏览器完成,并且无需安装或编译其他程序。
缺点:
-
- 这可能更难使用:人们必须学习语法,代码中的错别字可能轻易导致解析或渲染错误等
- 该界面不是用户友好的:只有代码编辑器,而没有立即显示数学表达式。
- 没有一种语法已经标准化,使得转换器之间的交叉兼容性变得困难。甚至流行的LaTeX语言也不断添加新的软件包。
- 如果访问者禁用了Javascript,则此方法将无效。
- MathML代码不会暴露给Web爬网程序(例如,数学搜索引擎或feed聚合程序的爬网程序)。特别是,您的内容将无法在Planet上正确显示。
- 转换必须在每次加载页面时完成,可能会很慢并且可能与HTML解析冲突(例如,“ <”表示标记,或“ $”表示金额)
- 您可能需要将Javascript转换器与页面上的其他Javascript程序同步。
进入生产!Hooo~
别急, 对于近期(截止2020年3月)MathML依旧没被大量游览器所支持,从观察来看PC上支持情况不乐观, PE上仅火狐一家。对于这样情况投入生产后总不能让用户必须使用火狐吧。
实际上MathML有一个向下兼容方式,如果只需要基本的数学结构,则只需要一个mathml.css样式表即可:
<link src="https://github.com/fred-wang/mathml.css" /> <script src="https://fred-wang.github.io/mathml.css/mspace.js"></script>
复杂的构造,则可以考虑使用较重的MathJax库作为MathML polyfill:
<script src="https://fred-wang.github.io/mathjax.js/mpadded-min.js"></script>
npm中:(https://github.com/mathjax/MathJax#readme)
npm install MathJax
感受 它就是SVG!
参考:
- https://developer.mozilla.org/en-US/docs/Web/MathML
- https://fred-wang.github.io/MozSummitMathML/
- https://mathml.igalia.com/project/