网上数学渲染问题(2020)

2021-06-29 22:31:52

自从我第十四岁开始在十四岁开始工作以来,Sitehas经历了许多修订,并希望为更好的改变。这博客最初使用Python /烧瓶后端动态地服务,拥有自定义登录系统和“编辑器”(虽然是一个输入框)。关于我网站的更奇怪的事情,我是我的表现形式。

对我来说很清楚,即使在我的年轻时期,也要写出原始的HTML WassubOpptimal。不知何故(也许通过github)我听说了马克下降,并意识到一种人类可读的标记语言可能是一种重大的方式。当然,留下了什么,渲染内容。我发现的最简单方法是只需坚持一个javascript脚本,调用标记为标记,以在pageload上运行并将所有标记转换为漂亮的HTML。

每个页面加载都会发生这种渲染。每次我在我的网站上导航页面上的页面,一两秒钟,我会看到我所写的原始,UnroweredMarkdown,然后将会消失并被替换为页面的内容。渲染也没有错误。如果我的连接特别慢(谢谢,康卡斯特),或者如果我忘了禁用Umatrix,我将被遗漏频繁出现#,_,* ......最终我意识到我的错误,并转换为渲染后端的啰嗦。现在,我的内容将出现已经格式化的用户,并且他们不会为JavaScript程序进行磁带来完成阅读我写的内容。所有事情都很好。

有时候,我回顾了我的网站的早期迭代,并微笑了我所做的愚蠢错误。然而,我无法自然取笑原始的标准渲染解决方案,因为在某种程度上,它仍然存在。

当我在Google上搜索“网站上的网站”时,以下两个链接位于我的搜索顶部:

实际上,这些是两个最受欢迎的数学渲染解决方案(我的经验)。然而,这两个Solutiosn共享某些东西,彼此共同,并随着我的网站的早期迭代 - 他们使用客户端渲染进行静态内容。在我看来,这是荒谬的。每次你都要访问使用Mathjax或Katex的网站,任何数学输电都到达你的机器以乳胶标记的形式。例如,e-x 2 e ^ { - \ frac {x} {2}} e-2 x看起来像e ^ { - \ frac {x} {2}}。然后渲染图软件(Mathjax或Katex)然后拍摄此标记,并将其转换为您可以显示浏览器和CSS。就像我的旧网站一样,所有这一切都会在加载页面时发生。这不是一个unmonmonthing,无论是:数学itackexchange和chegg使用mathjax等网站,还有更多可以发现这个列表。根据这个页面,khan学院,gitterand gitlab使用Katex。其中一些网站甚至没有启用JavaScript加载它们的内容,更少的Rendermath。

一个怀疑论可能会说不可能提前向HTML ANDCS渲染乳胶。这甚至可能是真的。 UserOn“我们可以用服务器端Mathjax替换客户端Mathjax”在2015年Mathoverflow Meta上的线程指出MathJax不支持HTML输出:

我从Mathjax开发人员找到了[评论]确认HTML + CSS尚未使用服务器端版本运行。 。 。

还是我们? MathJax版本2.6在其更改日志中具有以下注释:

改进了CommonHTML输出。 CommonHTML输出现在提供与HTML-CSS和SVG输出相同的布局质量和MathML支持。它平均比其他输出快40%,并且它在所有浏览器上产生的标记相同,因此也可以通过Mathjax-node在服务器上预先生成。

[commonhtml]是Mathjax版本2.6以来的Mathjax的主要输出模式。其主要优势是其质量,一致性以及其输出与浏览器,操作系统和用户环境无关的事实

因此,不仅可以明确实现服务器生成的数学输出,而且用于生成这种输出的算法已经在客户端使用!如果你看起来很难,你甚至可以找到几个使用这个算法服务器端的人,但其中许多人患有其他问题......

将数学转换为图像(例如PNG或SVG文件)诱人很诱人。此方法是在此博客上拍摄和此高级Web机械文章。 Wolfram Mathworld还将他们的数学呈现为图像。但是,在我的作业中,这不是正确的方法。对于用户而言,我对我来说是不方便的,我怀疑是需要辅助技术的人。在这里,我看到的问题我看到了图像数学:

图像是不可能与复制/粘贴一起使用的。我无法在渲染图像中选择一个单词,数字或符号。我有时这样做,这是一个有目的的问题。

图像并不像响应,并且很难样式。在使用图像时难以改变线条破碎,字体,甚至颜色难以改变。当用于内联数学时,它们就像疼痛的拇指一样伸出粗糙,并且溃疡非常奇怪(或消失)如果用户扩展会在页面上操纵颜色。

对需要屏幕读者的用户完全不透明。读者支持MathML,[注意:MathML是基于XML的数学标记,意味着用作其他数学处理器的低levelouput目标。虽然它在Firefox中支持,但它需要在Chrome中的Polyfill,并将我们带回前端的JavaScript。 ]图像更难与之合作。我链接的SITESTHAT,使用图像没有标题与他们的数学,使其完全无法进入。

使用图像而不是基于JavaScript的渲染器让我想起了虚假的二分法谬误。为什么我们不能做我们做的事情,而是使用服务器?

如果您在Google上查找“Mathjax Setup”,则使用大约多种链接告诉您如何获取渲染工作客户端的链接。 IT'CONVAVENT:单个JavaScript< src>标签,也许有点代码在页面底部有一些设置。

如果您查找“Mathjax渲染服务器端”,则资源是潮流的。实际上,我在这样的搜索后呈现的前两个基于图像的解决方案。还有一个网站看起来有希望:Antoine Amarilli的博客文章关于服务器端渲染。该页面承诺使用MathJax-node生成HTML的自托管方式,甚至提供了非常引人注目的示例输出。我决定尝试这种方法,但无济于事。首先,Mathjax基础架构改变了:

随着MathJax重组其存储库,要进行以下工作,您可能需要手动安装Mathjax-node-CLI,以及安装MathJax-node和可能的MathJax-node-Page。再次,我没有尝试过。再次感谢指向这一点!

这确实如此。但是,较大的问题是Page2htmlprick,它在一个HTML页面中呈现了所有数学的page2htmlprick。我找到了tex2html和text2htmlcs,它可以唯一没有周围HTML的方程式。我还找到了MJPage,它用SVG Forms替换了一个页面中的数学表达式。这个实际上看起来非常好 - SVGS甚至有标签与磨牙乳胶代码。但是,这些标签很难读取(可能是使用屏幕读者的人数),并且SVG映像othersweplyswore维持了上述大部分问题。此外,在初始渲染之后,该页面的表现比基于JavaScript的替代方案更加缓慢。 [注意:这是纯粹的轶事,并且需要更彻底的分析一成本。 ]

简而言之,找到服务器端LaTex渲染的资源更难。尤其很难找到与MoreThan静态页面一起使用的这些资源。我可以使用正则表达式来解压缩我需要从HTML呈现,调用它上的Tex2htmlcs,并拼接它回到页面。但是德语用户怎么能呈现他们的数学? Whatabout有人像我在你的年轻人那样写博客引擎?不知何故,我们希望为用户提供更好的体验,左右的替代方案,或多或少没有外部帮助......

今天的大多数网站使用客户端,基于JavaScript的渲染技术进行数学。 Serveris可以完成的工作已经超越了成千上万的浏览器,他们必须运行相同的codeto获得相同的结果。不知何故,这是最好的解决方案 - 最可访问的替代方案使用图像,这是用户体验的下坡。我希望服务器端渲染成为常见的,更好地记录。