最初用的是wp-latex,支持$latex latex_syntax $一直就这么用了。
因为这个插件是生成图片,这种方式显然不太好。发现MathJax之后,果断换成MathJax,最近发现空间快被占满了,而这个MathJax用掉了100多M,所以找个插件,可以用在线的MathJax服务器的,这样就可以把空间上的MathJax库删了。
latex for wordpress显然比较符合我的需求,但是发现不支持原先$latex latex_syntax $语法,最笨的办法莫过于把以前的blog文中的latex标记改过来,这绝对是个脏活。比较geek一点的做法是把数据库导出,用sed或awk做个全局替换,一两行代码可以解决,再把数据库导回去。
把插件从不支持改到它支持,这才显得有点hacker精神。
这一点也不难,无非是个正则表达式进行模式匹配的问题。修改插件的latex.php文件,找到匹配latex语句的函数:
function parseTex ($toParse) { // tag specification (which tags are to be replaced) $regex = '#\$\$(.*?)\$\$#si'; $toParse = str_replace(array("\(", "\)", "\[", "\]", "[latex]", "[tex]", "[/latex]", "[/tex]"), array("$$", "$$", "$$!", "$$", "$$", "$$", "$$", "$$"), $toParse); return preg_replace_callback($regex, array(&$this, 'createTex'), $toParse); }
做了一下修改,让它支持$latex latex_syntax $模式。这样子,以前博文里的latex标记,无需修改,就能够被正常解析。
function parseTex ($toParse) { // tag specification (which tags are to be replaced) $regex = '#\$latex(.*?)\$#si'; $toParse = str_replace(array("\(", "\)", "\[", "\]", "[latex]", "[tex]", "[/latex]", "[/tex]"), array("$latex", "$", "$latex!", "$", "$latex", "$latex", "$", "$"), $toParse); return preg_replace_callback($regex, array(&$this, 'createTex'), $toParse); }
Clik here to view.
