2013-02-23

MediaWiki MathJax数学公式

原理

MediaWiki的插件一般由php脚本和javascript脚本组成,直接上传到服务器,并在配置文件内添加插件路径即可使用。

Math插件的安装比较繁琐,因为它还依赖于其他本地应用程序,如mineTex。Math是一个统一化的接口,用户使用同样的数学公式代码,却可以通过不同方式生成公式。这些方式包括:PNG图片,LaTex,Tex,HTML,MathML等。而Math并没有实现这些功能的模块,需要调用其它应用程序。

目前默认的后端是Texvc,它可以生成PNG图片。这种方式需要服务器安装mineTex本地应用程序。然而对于共享空间上的站点来说,可能无法安装软件。PNG图片的显示效果也不好,在屏幕分辨率高的情况下不够清晰平滑,不能随文本缩放。因此,MediaWiki未来将会采用另一种表现更好的方式——Mathjax。

MathJax是一个开源的JavaScript数学公式显示引擎,适用于几乎所有现代浏览器。它被广泛应用于Wiki,WordPress博客等站点。使用它非常简单,只要在网页上的head标签内加入

<script type="text/javascript"
   src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

即可。对于WordPress,MediaWiki等平台,若需要在整个站点启用此特性,则应在站点皮肤的HTML/PHP脚本中添加。

可以看出,这实际上是调用了MathJax在线引擎,JavaScript脚本存放于远程服务器上。若是在本地局域网内不能访问国际互联网,则可以下载MathJax并安装在本地,链接修改为本地站点。

步骤

对于MediaWiki,通过Math插件添加更加方便控制,且能应用于所有皮肤中。

第一步,下载Math插件

第二步,上传Math插件。将插件解压并将文件夹上传到extension目录中,命令文件夹为Math。

第三步,注册Math插件。打开LocalSettings.php,在插件注册部分添加:

require_once("$IP/extensions/Math/Math.php");

第四步,配置Math插件。打开/extensions/Math/Math.php,更改如下几条配置信息:
1.关闭Tex

$wgUseTeX = false;

2.开启MathJax

$wgUseMathJax = true;

3.设MathJax为默认

$wgDefaultUserOptions['math'] = MW_MATH_MATHJAX;

Math默认调用MathJax官方网站的引擎。若你在不连接国际互联网的情况下使用,或者希望使用自己的服务器提高效率,可以安装自己的MathJax引擎。

第一步,下载MathJax引擎

第二步,上传MathJax到服务器。

第三步,修改Math插件配置:

$wgMathJaxUrl = 'http://yoursite.org/mathjax/MathJax.js?config=TeX-AMS_HTML';

URL修改为你的MathJax引擎所在的位置。

对于学校内,企业内,组织内的网络系统,可以搭建一个开放MathJax引擎,供所有内部站点使用。

2013-02-04

无别

理想达到,青春不保。
自由情义,何为重要。
人行世道,殊途千条。
非是无缘,生而背道。
登高远眺,空落寂寥。
无失无得,何必怨抱。

自定义名字空间及别名

名字空间的作用

名字空间可以理解为类似C++,Java的命名空间。名字空间能够对维基页面进行组织,划分页面的本质属性或者内容区分。这比页面分类更加显著,从名字便可以判断。名字空间还能够避免重名,如维基百科的“维基百科:首页”和“首页”就是不同的,一个是站点的首页,一个是名为“首页”的词条。

名字空间的原理

每一个名字空间都有自己唯一的ID,ID是不会变更的。这个ID是页面的属性,将页面绑定在这个名字空间内。而ID对应的名字空间的名字,则可以变化更改。若新建的名字空间与原来曾有的名字空间同名,并不会令那些页面转移到新名字空间下。就像一个人可以改自己的名字,但这个人的本质不变;当然,其他重名的人,也不是这个人。

名字空间具有名字和别名,就像一个人会有好几个名字。名字是默认显示的,而别名会链接到名字。别名让同一个名字空间具有多种书写方式,这样做的好处很多。首先如果你输入WP别名,会比输入Wikipedia更快,简写有时很有效;其次,可以避免混淆,误把近义词当作名字空间,结果没产生任何实际效果;还有就是本地化,中文用户可能更喜欢输入“分类:”“维基百科:”而不是“Category:”“Wikipedia:”。

MediaWiki具有一系列系统名字空间,比如主名字空间,帮助,项目,分类,模板,特殊及相应的讨论等等。这些名字空间不可更改。它们占据了0-99的名字空间ID,虽然并未全用。因此我们只能使用100以后的名字空间。

自定义名字空间

和大多数设置一样,自定义名字空间需要在LocalSettings.php里面完成。因此第一步就是打开站点的LocalSetting.php文件。

自定义设置一般都会写在配置文件的末尾,以免和系统默认设置混淆。加一段注释,如#Namespace Setting,会让配置文件更加清晰。

名字空间ID是整数,为了避免大意出错,通常会设置一个常量。因为一般会将名字空间和相应的讨论页名字空间定义在一起,所以它们总是成对出现。使用NS_前缀可以清晰地表达这个常量是一个名字空间ID。来看看下面这个例子:

define("NS_FOOL", 100);
define("NS_FOOL_TALK", 101);

然后就可以自定义新的名字空间了。

$wgExtraNamespaces[NS_FOOL] = "Fool";
$wgExtraNamespaces[NS_FOOL_TALK] = "Fool_talk";

如果你想要将这些名字空间设置为内容名字空间:

$wgContentNamespaces = array( NS_MAIN, NS_HELP, NS_FOOL, NS_TALK );

*这里的常量都代表着一个数字,NS_MAIN是0,NS_FOOL是100。
*内容名字空间和主名字空间本质相同,也会出现在主名字空间的搜索结果中。

这样,我们就为一对名字空间赋予了名字。以后在这些名字空间下创建的页面,会自动被归入相应的ID下。当名字空间的名字被修改后,那些页面也会随着变化。

最后,让我们来为它们添加别名。一个名字空间可以拥有无数多的别名,无论英文,中文还是保定话。

如果你只想设置一两个名字空间别名:

$wgNamespaceAliases['F'] = NS_FOOL;
$wgNamespaceAliases['F_talk'] = NS_FOOL_TALK;

如果你想设置一大堆名字空间别名:

$wgNamespaceAliases = array(
        'F' => NS_FOOL,
        '笨蛋' => NS_FOOL,
        '二傻' => NS_FOOL
    );

好了,现在维基站点就能够使用这些名字空间了,用名字和别名都可以。

2013-02-03

黄贯中:年少无知

如果 命运能选择

十字街口你我踏出的每步更潇洒

如果 活着能坦白

旧日所相信价值不必接受时代的糟蹋

 

年少多好 顽劣多好

不甘安於封建制度里

迷信上街真理会达到

旗帜高举 群众声讨

不惜牺牲一切去上诉

权贵的想法太俗套

只可惜生活是一堆挫折

只可惜生命是必须妥协

 

年少多好 贫困多好

一蚊积蓄足以快乐到

廉价结他抒发我暴躁

财富得到 年岁不保

捐输不必讲究有回报

人世间总会有异数

只可惜生活是一声发泄

只可惜生命是一声抱歉 怕追到

 

如果 命运能选择

十字街口你我踏出的每步更潇洒

如果 活着能坦白

旧日所相信价值不必接受时代的糟蹋

 

年少多好 朋友多好

一番争执不会有被告

游戏竞争不会记入脑

年岁增长 无法修补

青春的诗总会老 时间多恐怖

如果 命运能选择

十字街口你我踏出的每步无用困惑

如果 活着能坦白

旧日所相信价值今天发现还未老

如果 命运能演习

现实中不致接纳一生每步残酷抉择

留守 过去的想法

我会否好像这样生於世上无目的鞭挞