MediaWiki 增加数学公式显示支持

八月 20th, 2010, in WEB开发, by None
最近心血来潮,于是乎为 magicwiki 增加数学公式显示的支持,有兴趣的朋友不妨前往围观。

原理

MediaWiki 对数学公式仅支持 TeX 标记语言的子集,包括 LaTeX 和 AMS-LaTeX,根据用户的喜好和表达式的复杂性生成简单的 HTML 标记或者 PNG 图片来显示公式。也就是说 Mediawiki 过滤 Tex 标记后,使用 Texvc 命令来渲染成图形。

方法一:texvc

为 MediaWiki 增加数学公式显示支持方法有很多种,如果拥有主机空间的控制权限(比如可使用 SSH),可尝试下面的方法。 准备工作是主机上必须安装好以下软件包:
  • ocaml
  • imagemagick
  • gs
  • cjk-latex (now called latex-cjk-all)
  • tetex-extra
  • binutils ("/usr/bin/as" is needed by make job)
  • gcc
然后 cd 到 MediaWiki 安装目录下的 math/ 子目录,执行 make 开始安装 texvc。 最后,在根目录 LocalSettings.php 中设置 $wgUseTeX = true; 这样就可以使用 math 渲染了。 在页面中输入
\sin\theta
进行测试,显示没问题。别高兴得太早,来点复杂的: \phi_n(\kappa) = \frac{1}{4\pi^2\kappa^2} \int_0^\infty \frac{\sin(\kappa R)}{\kappa R} \frac{\partial}{\partial R} \left[R^2\frac{\partial D_n(R)}{\partial R}\right]\,dR 情况貌似没有想像中顺利:“解析失败 (无法写入或建立数学公式输出目录)”出错了。 这是因为前者使用简单的 HTML 标记即可显示,而后者需要渲染成图片以显示复杂的数学公式,生成图片需要创建目录和文件,由于服务器权限不允许,所以出现在这样的错误。 解决方法参见"Failed to parse (Can't write to or create math output directory)"

方法二:使用 Mimetex

使用这种方法实质上是利用外部的 cgi 链接来帮我们生成公式图片,所以比较灵活,我们可以使用自定义的标签或者修改代码来实现。 自定义标签方法见:Extension:Mimetex alternative 修改代码使 math 也能过滤到使用 mimetex 渲染文章见:利用外链CGI为Mediawiki添加数学公式支持 第二种方法也即是修改 includes/Math.php 下的 renderMath 方法: #public static function renderMath( $tex, $params=array() ) { # global $wgUser; # $math = new MathRenderer( $tex, $params ); # $math->setOutputMode( $wgUser->getOption('math')); # return $math->render(); #} public static function renderMath( $tex, $params=array() ) { return 'LaTeX: ' . htmlspecialchars($tex) . ''; } 数学公式展示页:数学

发表回复

您的 email 地址不会被公开。 必填信息前已经标志为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>