如何在 MediaWiki 中嵌入数学

How to embed maths in MediaWiki

我正在尝试将一些数学内容从 old wiki 转移到我的新 MediaWiki。

旧页面使用 MathJax,如下所示:

Here is the k-degree Taylor series for [[$ f(x) $]] 
    expanding around [[$ x=0 $]]  

[[$ T_k(x) = f(0) + x\cdot f'(0) + \frac{x^2}{2!} f''(0) + \dots
     + \frac{x^k}{k!} f^k(0) $]]

这是我目前发现的:

http://www.mediawiki.org/wiki/Extension:MathJax -- 似乎已停产。

http://www.mediawiki.org/wiki/Extension:SimpleMathJax -- I tried this and it works on OSX Chrome but gives rendering errors on OSX FireFox (https://github.com/jmnote/SimpleMathJax/issues/1)

http://www.mediawiki.org/wiki/Extension:Math -- 这似乎是正在积极开发的地方,但我还没有设法让它工作。也很头疼。

我错过了什么吗?

在 MediaWiki 中启用数学内容的正确方法是什么?

据我所知,它看起来像:"render on server and provide PNG is faster, render on client using MathJax is simpler/cleaner"

SimpleMathJax 是一个绝对最小的安装。要是它能在 Firefox 上运行就好了!

数学扩展看起来很辛苦,看起来有点矫枉过正 -- 它似乎支持至少 4 种不同的渲染技术。

你确实想要https://www.mediawiki.org/wiki/Extension:Math这是标准的做事方式。

长期以来,数学渲染一直是维基百科上的一个问题。原来的系统使用PNG图像可以追溯到2005年左右。当时最好的,但是真的很难看,字体大小不匹配,基线都错了,没有抗锯齿。优点是它稳定并且适用于所有浏览器。

从那时起,人们一直在尝试改进数学渲染。第一次尝试是 Blahtex,它产生了 MathML,但从未引起开发人员的注意。

然后 MathJax 出现了。第一个实现是作为用户脚本 https://en.wikipedia.org/wiki/User:Nageh/mathJax 这很好用,但需要用户手动将其添加到他们的 javascript 皮肤文件中。

几年前,MathJax 被纳入主要的 Math 扩展,用户偏好(默认关闭)。

MathJax 是当前最好的渲染,但有两个主要问题,浏览器支持,它必须在所有可能的浏览器上工作,包括手机和旧系统上更受限制的浏览器。另一个是速度,因为它由 javascript 呈现,格式化方程式需要时间,对于更复杂的公式丰富页面,这可能需要一分钟。

MathML 是另一种可能的选择,但是 Firefox 是唯一具有中等支持的浏览器。

这导致了制作通用系统的问题。当前的开发是一个允许客户端 MathJax/MathML 为那些想要最佳渲染的人渲染的系统,旧的 PNG 渲染作为后备,以及一个使用 MathJax 在服务器端渲染 SVG 的新系统。

至于实际做什么。我认为最简单的方法是完全忽略扩展,只在全局 javascript 文件上使用 MathJax。参见 https://en.wikipedia.org/wiki/Wikipedia:Common.js_and_common.css。这将是一个非常标准的 MathJax 配置。

让我们看看 User:Nageh/mathJax 脚本是如何工作的,并根据您的设置对其进行调整。他所做的是在网络服务器服务器上安装 mathjax 的副本,在他的情况下,它全部安装在他的用户 space https://en.wikipedia.org/w/index.php?title=Special%3APrefixIndex&prefix=Nageh%2FmathJax&namespace=2 如果您有权访问服务器,则可以将代码安装在更合理的位置。为了争辩说MediaWiki/includes/MathJax。然后在 common.js 中只有一行

importScript("/MediaWiki/includes/MathJax/MathJax.js");

或可能更好

mw.loader.load("/MediaWiki/includes/MathJax/MathJax.js");

甚至更好

mw.loader.using("/MediaWiki/includes/MathJax/MathJax.js").done( function() {
  MathJax.Hub.Config( ... ); 
} );

在完成您需要的 MathJax 集线器设置之后。有关详细信息,请参阅 https://www.mediawiki.org/wiki/ResourceLoader

一年后,关于 MediaWiki 站点如何处理数学的情况变得更加混乱。如果我们都同意在 png 图像中显示的 texvc 和数学公式是丑陋和过时的,似乎 Mathoid,根据 https://www.mediawiki.org/wiki/Extension:Math,“是最推荐的选项;Mathoid 是将在维基百科中使用的渲染模式未来。” .

但是 Mathoid 需要像 Parsoid 这样的外部服务器,而且它们(Mathoid 和 Parsoid)都在大力开发中。因此,我寻找其他解决方案并找到并测试成功 'SimpleMathJax' (https://www.mediawiki.org/wiki/Extension:SimpleMathJax)。可以像下面这样设置

wfLoadExtension( 'SimpleMathJax' );

// MediaWiki 1.24 or earlier
// require_once "$IP/extensions/SimpleMathJax/SimpleMathJax.php";

适用于任何最新版本的 MediaWiki(测试的最新版本是 2016 年 12 月下旬的 mw1.28)。

然而,扩展本身的代码并未随 WikiMedia 基金会(支持 mathoid)的众多 MediaWiki 扩展一起发布,但您可以在 github https://github.com/jmnote/SimpleMathJax/archive/master.zip 上获取它并将其扩展为您的扩展子目录与其他扩展。

  • 数学渲染很漂亮,因为它使用了 MathJax 而 MathJax (.org) 是 "an open-source JavaScript display engine for LaTeX, MathML, and AsciiMath notation that works in all modern browsers."
  • 大多数标准 AMS LaTeX 代码似乎都可以正常工作(对齐等)。

它被称为 "simple" MathJax 可能是因为它没有 MW MathJax 扩展的野心来处理所有 LaTeX 和 TeX 设施,如编号方程和处理 TeX 宏,但它使用原始 javascript mathjax.org 的 CDN,因此安装和用于简短的数学文本非常简单。 - 如果你想处理更长甚至更大的数学文本,你可以尝试 'pandoc' 这将使用以下命令行将你的完整 LaTeX 文档转换为 mediawiki 源代码:

$ pandoc -o foo.wiki -f latex -t mediawiki foo.tex