有没有一个JavaScript LaTeX 方程渲染器?

52

我正在寻找一个纯客户端的 JavaScript 库,可将 LaTeX 公式渲染为 HTML/CSS。我不喜欢所有我看到的都是从服务器请求图像的实用工具。

使用示例:

latex('\frac{a}{b}')

输出:

<div style="position: relative; display: inline-block; height: 2em; width: 1em">
  <div style="position: absolute; top: 0em">a</div>
  <div style="position: absolute; top: 1em; border-top: 1px solid black">b</div>
</div>

我之所以问这个问题是因为如果这个功能不存在,我会考虑编写它,可能作为一个jQuery插件。


请参考更广泛的问题:https://dev59.com/NXVD5IYBdhLWcg3wBWzd - Charles Stewart
1
你真的想要查看下面回答中展示的Katex。这是由可汗学院团队开发的非常棒的开源工具。鼓掌 - Joshua Pinter
6个回答

55

MathJax是jsMath的升级版本,由同一位主要开发者Davide Cervone负责,并且得到了公司的支持。它不是在jsMath的基础上构建的,而是实质上对其进行了重新设计。它遵循与jsMath几乎相同的原则,但增加了对MathML的支持,并更好地利用现代浏览器、Web字体和JavaScript技术。虽然Davide将回答关于jsMath的问题,但很可能不会在其上进行任何未来的开发,并且强烈鼓励其用户转向MathJax。我的公司Design Science是其支持者之一。


35

jsMath 渲染 TeX 公式。它也被 mathoverflow.net 和数学软件 sage 的网页界面所使用。我想他们知道自己在做什么 ;)

从主页上看:

jsMath 包提供了一种方法,可以在跨多个浏览器和操作系统(如 Windows、Macintosh OS X、Linux 和其他 unix 发行版)的 HTML 页面中包含数学内容。它克服了传统使用图像来表示数学的一些不足之处:jsMath 使用本地字体,因此当您更改浏览器文本大小时它们会自动调整大小,它们以您打印机的全分辨率进行打印,并且您无需等待下载几十个图像才能在网页中看到数学公式。对于网页作者而言,也有一些优势,无需预处理网页以生成任何图像,而且可以使用TeX 表示法输入数学公式,因此创建和维护您的网页非常容易。


1
我认为jsMath在LaTex支持方面并不多,只有足够的plain TeX来呈现方程式。尽管如此,它表现出色,我认为它是这种情况下最好的工具。 - Jim Lewis
3
MathJax仍然活跃,最后更新于2010年4月。它已经超越了jsMath。 - duffymo
@duffymo:我不认为jsMath已经死了(还没有)。仍然有错误报告并得到回答。 - Felix Kling
你用了“死”的词,不是我。我说MathJAX在2010年4月15日发布了最后一个版本。jsmath网页上写着“最后修改于2009年3月”。不确定这是指网站本身还是软件。 - duffymo
3
-1 here and +1 for MathJax answers instead.(意思是不支持原来的方式,改为使用MathJax回答) - Chinasaur
3
我会再说一遍,因为很多人会看到这个 - 不要使用jsMath,使用MathJax - 它是与jsMath相同作者的产品,安装比jsMath简单100倍,并且有着积极的开发。 - Karel Bílek

26

KaTeX

卡恩学院发布了它的开源数学公式渲染库KaTeX。它非常快速,目前我认为这是当前最佳选择。

快速: KaTeX 同步呈现其数学公式,并且不需要重新排版页面。

打印质量: KaTeX 的布局基于 Donald Knuth 的 TeX 系统,这是数学排版的黄金标准。

独立性: KaTeX 不依赖其他任何库,可以轻松地与您的网站资源捆绑使用。

服务器端渲染: KaTeX 无论在哪种浏览器或环境下都会产生相同的输出结果,因此您可以使用 Node.js 预渲染表达式并将其作为普通 HTML 发送。


很好!感谢您的更新。 - chepukha
自 MathJax 3 版本以来,它不再是最快的选项(请参见:速度比较)。 - Sr. Schneider

20

有两个相关的数学公式库,分别是MathJaxjsMath

更新:截至2015年5月2日,我推荐使用Khan Academy的KaTeX


他明确要求非基于服务器的解决方案,因此你所建议的选项无效。 - Pablo Santa Cruz
8
@Pablo: jsMath运行在浏览器中。我认为这个答案并不是“无用的”,给你点赞+1。 - Felix Kling
3
“我正在寻找一个纯客户端JavaScript库…” - 这两个是在浏览器中运行的JavaScript库。它们为什么无效? - duffymo
2
据我所知,MathJAX是建立在jsmath之上的。实际上,它是“活跃”的,因为jsmath不再活跃。它们是相同的技术,因此两者都适用或两者都不适用。 - duffymo
是的,没错。谢谢,Felix。 - duffymo
显示剩余2条评论

2

欢迎提供解决方案的链接,但请确保您的答案即使没有链接也是有用的:在链接周围添加上下文,以便其他用户了解它的内容和原因,然后引用您链接的页面中最相关的部分,以防目标页面不可用。仅仅提供链接的答案可能会被删除。 - Zoe stands with Ukraine

2

Mathquill是一个开源项目,纯粹使用JavaScript解析Latex并渲染数学公式。您可以在此处查看:链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接