因为我想让更多人读到这篇文章,所以先加个序文在后面。我主管MathJax项目曾经有四年了,这两年来,我征询过非常多出书职员,首要关于他们数学相干的任务流程,特别是在TeX-to-XML和XML-to-web方面,前端后端都有。我是W3C数字出书兴味组的特邀专家(感激Jean和Tzviya!),比来我又分开了W3C数学任务组(David在2014年晚些时分约请我参加的)。可以说MathML是我专业生涯的一大部分(努力的一部分)。
我比来在a11ySlackers上宣布了一篇简洁的文章,或许我们可以说是总结?这篇文章的内容是我对MathML的考虑,在文章中,我许诺写一篇博文来胪陈此事。基于草稿,我花了数月工夫写出了这篇6000字的文章。我看了看,有时觉得它太长有时又觉得太短,好吧,它可能有点用途,也许没有效处,管它呢。
不必说,我个人网站上的观念都是我的个人观念(真风趣)。没有任何我客户的观念,更不要说MathJax团队了。我感到它们对任何人任何事而言应当都没有特殊的协助,可能特殊的部分除外,但可能会对鼓舞实行更开放更现实的会商有点感化。
MathML是一个失败的收集规范。*
我们可以做的更好,我们应当做的更好。
MathML-in-HTML5正在做这些。
*有点人更偏向于以为是“阅读器规范”,由于它是“一个在阅读器华夏生完成的收集规范”,而一些收集规范其实不依靠阅读器的完成。同时是在阅读器中“原生”支撑,而不是经过传送到阅读器中的收集组件实行支撑。
MathML能否是一个优秀的XML言语曾经可有可无,就我个人而言,我以为这个言语是很好的,它明显也是一个胜利对外宣布的XML言语,并办事于规范中一个主要的脚色,例如JATS和BITS。
问题是:MathML曾经在WEB失败了。
侥幸的是,很多技巧曾经胜利而且现今MathML曾经不再是必须的,但也不在知足于WEB上的函数,我们有非常多全体处理计划,而不是一个。我们应当供认这些并向前开展更新型化更小型化的规范在实践中协助开辟者。
以下有几点缘由让我多说两句。
1、MathML不管在标准层面上仍是完成层面上都还没有被阅读器厂商明白支撑。
你可能很轻易的以为它们是用来(办公!chromevox?(是个插件?)Tools程式)可是阅读器厂商实践上没有。一部分在Gecko和Webkit上完成的MathML完整是意愿者的任务,根本上没有薪水,无人羁系,没有义务。
没有一个阅读器厂商表现在代码上去标准,没有一个阅读器方面开辟者在MathML呈现,18年后,乃至没有一个阅读器厂商情愿献出一小部分的开辟职员努力于MathML开辟。
这应当是本篇故事完毕的地方,说真的,悲痛的是甚么都没有。MathML在XML的胜利保住了,不是WEB上的好处产品。
MathML是一个欠佳的WEB规范,将来迁徙到HTML5会有更好的开展。
2、阅读器对MathML完成是另辟门路。
假如你常常看地下的爬虫数据,你会留意到很难找到MathML的收费的案例。假如你眼光久远些,你将很难找到他人供给的依靠当地完成的demo;乃至在Gecko和WebKit人们常常运用MathML-to-HTML5转换器。另外一个目标,虽然在过来两年对MathML完成正在渐渐的变味,人们也没有去埋怨(我的意思WebKit中止 drawing surds(在safari8中测验考试)可是明显没人去存眷即使是文件bug)。实践上开辟职员的困难是不克不及仔细的开辟与MathML相干的初级版本。(比方,Gecko曾经下架或许不完好的支撑根本API,如作风,数据,MathML元素事情处置顺序)。
3、MathML未能供给有效的语义内容
好吧,说假话,我不晓得。问题是:它简直不成能发生有效的内容(大量手工休息除外)。据我所知,没有一个单线程的有效数字编码MathML内容凑集,这首要是长久的研讨项目和一个手工制造项目。不妨,究竟我们需求持续研讨,但关于web来讲还不是一个规范。
4.前端开辟职员以为MathML表示出的失败是由于它应当供给一套可用的CSS特点,而没有需要束缚MathML元素的设计特点。
如今<mstyle>, <mspace>, <mpadded>, <mphantom>, <menclose>, <mfenced>, <mtable>, <mstack>对开辟者而言可能听起来会很风趣,可是它是一个严重的问题。该网站曾经创立了一个有效的别离存眷点。MathML是和自身的办法是相互抵触的。
5.MathML的失败是由于它没有充沛的结构具体阐明。
假定一个MathML完成者可能晓得或许存眷它的庞杂性和传统性结构,你怎样画一个根号?没有明白的阐明,你怎么去画一个分数符号?也没有明白阐明。怎样分开开数字?更没有明白阐明。但这也没错,心爱的完成着们,你应当支撑愈加流畅难明的数学结构特色,比方极限,里手的字典,巨大的间距,直列结构的差别和显示作风等等,你晓得它们是何等主要,对吗?并且确保完成5个分歧的垂直堆叠,由于,缘由——kthx, xxo.](笑而不语)
6、MathML的表示失败是由于数学式所需的CSS结构是迟缓的完成一切的结构特点,如许会让它过期。
现在,很多Tools允许你运用CSS衬着数学运算,固然很乱可是无处不在(好吧,亲爱的IE7运用者,不包含你,我很负疚)。事先MathML的完成明显的进步了WEB结构特征。
7、MathML的表示失败在于未能供给足够的语义。
尼尔·索弗发明性的编写了MathPlayer软件,让MathML的数学运算表示方面被大多人所了解和承受。愈加精确的说OCR意味着一切的图文实践是可以承受的。
现真相况是,几十时高中数学你也需求高质量的MathML展示(这自身就很罕见)联合弱小的(可是没法防止会失败)启示式算法提取成心义的语义信息,在短时间趋向内饰可以承受的可是对WEB上的数学语义来讲不是真实的处理方法。
MathML 在比来十年都不那末活泼。在产业化的XML天下里,MathML 是胜利的,而人们想要更多的功用,但改良却迟迟没有到来。它看起来没有人想要去危及其在 web 上经过。 MathML 成为一个 web 规范对用户来讲是负面的,那些用户运用它是由于 MathML 被困在了保护形式。
你晓得 MathWG 的 charter 在这个月就要到期吗?你会留意到假如不是续签,WG 还会存在吗?你会留意到假如 WebKit 和 Gecko 被扯掉,他们的 MathML 今天会完成吗?我真不晓得大大多数人会怎样做。
下一步需求做甚么。
A)MathML需求从HTML5中剔除。
我见过的很多人,都过错的以为阅读器制作商已经地下表现在HTML5的一套规范里边完成它们,可是他们没有(即便HTML5是作为一个“规矩”尽力争夺过)。
我以为MathML既然只是一套规范,以为没有效处的人的论据(它只是一个规范)将持续禁止替换产物的开展,可以在实践任务中协助处理WEB上的数学运算问题。
在这一点上,不断以来在WEB上MathML有效的禁止数学运算的精确度,这大大的损伤了每个人,我们需求从HTML5中剔除掉它来为更好的规范的发生腾出地方。
B)数学结构应当在CSS和SVG中完成,我们应当做的更好更容易。
在Server上,它可能生成HTML + CSS和SVG衬着任何MathML内容,你要留意,不需求客户端JS(完整可以)。由此发生的标志是很轻易证明的,在一些状况下是很艰苦去完成的,可是运用HTML和CSS职员晓得怎么处理。这让我们的规范做的像flexbox和css网格;这是值得持续改良的规范并完成而不是等着Godot。
编写一个本人的数学衬着Tools也是很难完成的。可是我们需求更多发明性的设法,编写一个在CSS和SVG里的数学衬着器比编写一个RWD框架或许一个一个矢量图形库应当更容易些。
我们不需求MathML衬着的工具即便很多项目(像是MathMLJax)运用它作为一个外部格局。MathML作为一个WEB规范失败的地方在于它侵害了web本身,由于它阻断了关于进步现有规范来协助现有的数学Tools的许诺,终极“MathML会处理一切问题的会商(TM)“。
本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协定,假如我们的任务有进犯到您的权益,请实时联络我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务