最近心血来潮,于是乎为 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
情况貌似没有想像中顺利:“解析失败 (无法写入或建立数学公式输出目录)”出错了。
这是因为前者使用简单的 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 '
';
}
数学公式展示页:数学

