在Web上编写数学方程的最佳方法是什么?

43
我正在开发一个数学相关的网页,并正在寻找一种能够轻松地在网页上编写数学公式的解决方案。目前有几种解决方案可供选择:
  • 使用LaTeX并将其发布为图像。
  • 使用MathML。
这两种解决方案都不是理想的,似乎有些过时。用图像替换应该是文本的内容从来都不是一个好主意,而且MathML不符合所有浏览器/操作系统的标准。
我希望有一种现代化的解决方案来使用图像或MathML,也许可以利用sIFR来显示数学公式?经过一番研究,我仍然没有找到任何真正的解决方案。
请注意,我正在寻求一种新的公式发布方式。我不希望图像成为显示在网页上的输出结果,而是希望将这些公式呈现为文本数据。MathML是我找到的最接近的解决方案,但仍不理想。我一直想知道是否可以利用类似于sIFR的替代工具来创建Flash中的公式。有人有关于这方面的建议吗?
编辑:距离我上次更新这篇文章已经有一段时间了,但随着HTML5被浏览器采用,现在有一个新的工具可以将LaTeX和MathML结合起来使用,即MathJax!。MathJax绝对是最好的选择!
类似问题:Math equations on the web

与此StackOverflow问题相同:https://dev59.com/pnRA5IYBdhLWcg3w8SiJ - John D. Cook
标题相同,但我正在寻找一种不涉及图像的特定解决方案。这些解决方案已经过时,本问题是关于寻找一种新的方法在文本形式中插入方程,可能可以使用CSS或Flash进行样式设置,而不是使用图像。 - Mike B
2
顺便问一下,有人知道 Stack Overflow 上是否有这些选项吗? - Unknown
截至去年年初,SE现在使用MathJax。http://www.mathjax.org/2011/04/12/news/stack-exchange-becomes-mathjax-partner/ - Mike B
是的,math.se现在已经使用了多种数学渲染库有一段相当长的时间了,出于...某些原因... - Tortoise
12个回答

17
jsMath软件包是一种选项,它使用LaTeX标记和本地字体。引用自他们的网页http://www.math.union.edu/~dpvc/jsMath/:

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

例如,请参见这个页面或者那个页面

这非常接近我所寻找的内容,我很高兴看到至少有一些关于这些主题的研究。 - Mike B

9

这看起来很不错,希望在接下来的几周里我能进行适当的测试,看看它的表现如何。 - Mike B
你好!您的jqmath能够与ASCIIMath一起使用吗?我正在尝试实现两个目标,这些目标我已经通过MathJax实现了。(但我想要一个更快的网页。)1. 能够在此处输入“数学”。2. 能够在文本区域中输入数学并实时查看结果形式。(使用JavaScript更新显示结果的div的内容。)使用jqmath是否容易实现这一点?使用MathJax的解决方案是使用他们的ASCIIMathML.js实现第1点,并使用原始的ASCIIMathML.js实现第2点。 - Friend of Kim
@50ndr33 jqMath使用Unicode而不是ASCIIMath ASCII符号。请参见https://dev59.com/MF7Va4cB1Zd3GeqPIlKM以了解您的第2点。 - Dave Barton
mathscribe.com 现在挂了。 - kungfooman

4

我在我的网站上使用无边框表格和合并单元格来显示数学公式。对于大多数公式来说,这种方法非常有效。然而,由于标记通常比较复杂,在处理硬核数学网站时会比较耗时。

以下是代码:

<style type="text/css">
  table.math{font:17px georgia, times, serif;border-collapse:collapse;border:none;}
  td.a{text-align:center;}
  td.b{padding:0 2px;}
  td.c{border-top:1px solid #505050;border-left:1px solid #505050;border-bottom:1px solid #505050;}
  td.d{border-top:1px solid #505050;border-right:1px solid #505050;border-bottom:1px solid #505050;}
  td.e{text-align:center;border-top:1px solid #505050;}
</style>
<table class="math">
  <tr>
    <td class="a">1</td>
    <td class="b" rowspan="2">&times;</td>
    <td class="c" rowspan="2">&nbsp;</td>
    <td class="a">8</td>
    <td class="b" rowspan="2">+</td>
    <td class="a">1</td>
    <td class="d" rowspan="2">&nbsp;</td>
  </tr>
  <tr>
    <td class="e">x + 2</td>
    <td class="e">x + 2</td>
    <td class="e">x &minus; 1</td>
  </tr>
</table>

以下是上述代码的输出结果:

输入图像描述


3

LaTeX已经在网络和学术界广泛使用,用于渲染方程式。

一个很好的例子是维基百科,可以查看这个页面作为一个例子。

http://en.wikipedia.org/wiki/Latitude

我知道这是一种概括,但是:使用图像是在浏览器兼容的方式下实现许多网络事物的可行方法 - 只要您考虑到一些缺点。 (例如Google地图,圆角,图表,高级排版)

此外,“过时”可以解释为“经过尝试,测试并具有完整功能”

感谢指出sIFR - 我稍后会研究它,我已经列出了一些要探索的东西,比如打印?(HTML + 图像可以很好地完成此操作,sIFR呢?....)


我对它们的问题在于,它们不像文本数据那样容易爬取,输出在网页上呈现的方式完全不同于文本,并且不可访问。在学术界,浏览器有插件可以将方程式呈现为文本,所以我想知道是否可以用我们已经拥有的工具(Flash、JavaScript等)来做到这一点。如果尚未找到解决方案,这可能是一个有趣的问题需要解决。sIFR是一个很好的替代工具,文本始终看起来很好,但它仍然不是真正的替代品。 - Mike B
如何查询一个方程?最好在页面上包含足够可搜索/可爬取的文本信息,并确保您的方程式对人类可读。这些学术插件对您不可用吗?毫无疑问,将其作为标准之一肯定更好。 - Mesh

1

看起来是个好主意!它是像 sIFR 一样替换文本使用的,还是需要使用 Flash 来构建它? - Mike B
有Flash IDE(Windows)的插件面板,或者您也可以使用AS3。 - jiv-e

1

1

我一直在使用Confluence wiki的LaTeX插件来在Web(或内部网络)上编写方程式。它会在Web浏览器中显示图像,但如果您编辑页面,则仍然可以看到LaTeX源代码。

我不知道您用什么来托管网站,但您可能可以采用类似的方法:将LaTeX源代码嵌入页面,并将其呈现为Web浏览器的图像。


1

0

这将取决于您的主要目的和受众。

MathML(MathML2)听起来很有前途,但在各种浏览器和MathML方程编辑器(或生成器)之间仍存在许多兼容性问题。许多复杂的方程式在不同的浏览器中无法保持或显示相同。许多数学编辑器、转换器、生成器声称支持MathML。但结果并不相同,尽管输出可能看起来相似。而且在MathML 2中定义许多复杂的方程式并不容易/不可能。 如果您只有一些简单的方程式,并且如果您的受众可以使用某个特定的浏览器,那么这可能是一个选项。 如果MathML3得到广泛支持,那么MathML可能是可行的选择。

如果您的数学表达式不需要交互,并且在页面上是静态的(不需要动态生成),那么PNG或JPG图像可能是一个不错的选择。在大多数情况下,图像的大小并不是很大,在页面上显示数十个方程式非常快速,因为我们大多数人都有高速互联网。与任何基于脚本的渲染方法相比,PNG图像与之间没有太大区别,因为基于脚本的方程式通常只有几KB,并且从本地计算机下载所有脚本后渲染图像需要时间。
此外,还有许多应用程序支持重新编辑基于PNG或JPG的方程式图像。MathMagic(www.mathmagic.com)支持可重新编辑的PNG(透明PNG也是如此)、GIF、JPG、BMP。MathType(www.dessci.com)支持可重新编辑的GIF。MathMagic还可以读取MathType图像。
如果需要矢量图像格式用于屏幕和高质量输出(例如打印),SVG可能是最好的选择。此外,在某些情况下,PDF也可以是一种选择。许多Mac方程式编辑器支持PDF格式,因为它是一种(几乎本地的)Mac OS X格式。但是,在Windows上只有少数支持PDF。最新的MathType Mac版本似乎支持PDF。MathMagic在Mac和Win上都支持PDF。MathMagic似乎也支持SVG。
如果方程式是由一些有限的作者创建的,那么有许多选项可以组合以获得最佳结果。例如使用最新的 MS Word 内置的 MathML/XML 方程式编辑器,然后将页面转换为 Web。或者使用一些第三方所见即所得的方程式编辑器(如 MathType 或 MathMagic)进行快速编写和编辑,然后将方程式保存为 MathML、LaTeX 或 Wiki 兼容的方程式格式,并与在线方程式渲染引擎(如 codecogs.com 或 MathJax)一起使用。
如果内容还应用于其他格式,例如电子书/ePub,还应考虑其他因素,包括方程式的质量和与 InDesign 等解决方案的集成。
如有任何不正确之处,请纠正我。

0

解决方案是使用http://www.codecogs.com/components/equationeditor/equationeditor.php

该网站允许您以LaTeX格式输入公式,并使用其TeX服务器将公式转换为图像,您可以在那里显示您的数学公式。

让我举个例子,假设我想打印一个积分公式,我只需输入:

img style="display: block; float: none; margin-left: auto; margin-right: auto" title=" \int_{a}^{b}(x+2)dx " src="http://latex.codecogs.com/gif.latex?\int_{a}^{b}(x+2)dx"

请参考上面代码的第3行,在src =“http://latex.codecogs.com/gif.latex?[put your TeX Code here]”中的问号后插入LaTex数学公式。


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