mimetex for wordpress

世の中にはmimetexmathteximgtexやMediawikiのtexvcなど、TeXの表現を画像としてHTMLに埋め込むためのソフトがいくつかある。中でもmimetexはTeXの処理系が不要でキャッシュを使わなくても処理がそこそこ高速だ。pngじゃなくてgifなのはちょっとアレだが、そこは我慢する。

mimetexはFedoraやEPELにパッケージが入っているので、

# yum install mimetex

とするだけでCGIとして/cgi-bin/mimetex.cgi?x^2+y^2(x^2+y^2)などが使える。とても楽ちんだ。

WordPressにもプラグインはいくつかあるが、どれもけっこう大仰なものになっている。キャッシュはとりあえず過負荷になるまでは必要ないと思えば、簡単なショートコードだけで充分だ。

ただしPHPは「”」や「’」を受けるときに勝手に全角文字に変えられることがあるので注意が必要だった。どうなの? とは思うけど。

[tex]x^2+y^2[/tex]と記述すると、x^2+y^2のように表示されます。

  • mimetex.php
  • インストールは、ファイルをwp-content/pluginsに入れて管理画面からプラグインを有効に。
<?php
/*
Plugin Name: mimetex
Plugin URI: https://wtnb.mydns.jp/wordpress/
Description: tex記法で数式を記述できるようになります。
Author: Watanabe Takashi <t@wtnb.mydns.jp>
Author URI: https://wtnb.mydns.jp/wordpress/
*/
function tex_func($attrs, $content){
  $baseurl='/cgi-bin/mimetex.cgi';
  $content = str_replace("&#8216;", "'", $content);
  $content = str_replace("&#8221;", '"', $content);
  $content = str_replace("&#8220;", '"', $content);
  $content = html_entity_decode($content);
  $hs=htmlspecialchars($content, ENT_QUOTES, 'UTF-8');
  $ul=urlencode($content);
  return '<img src="'.$baseurl.'?'.$hs.'" title="'.$hs.'" alt="'.$hs.'" border="0" align="absmiddle" />';
}
add_shortcode('tex', 'tex_func');
?>
\Large A\ =\ \large\left(\begin{array}{c.cccc}&1&2&\cdots&n\\ \hdash1&a_{11}&a_{12}&\cdots&a_{1n}\\ 2&a_{21}&a_{22}&\cdots&a_{2n}\\\vdots&\vdots&\vdots&\ddots&\vdots\\n&a_{n1}&a_{n2}&\cdots&a_{nn}\end{array}\right)

ついでに、試しに書いてみたtracのプラグイン(マクロ)も置いておこう。[[Tex(x^2+y^2)]]のように使う。

  • Tex.py
  • インストールは、tracのpluginディレクトリに置く。マクロとして書いているのだが、最近のtracはwiki-macros以下にマクロを置いても見てくれないようだ。
# Tex.py -- using mimetex(/cgi-bin/mimetex.cgi)

mpath="/cgi-bin/mimetex.cgi"

# old style
def execute(hdf, args, env):
    return '<img src="'+mpath+'?'+args+' />'

# new style
from genshi.builder import tag
from trac.wiki.macros import WikiMacroBase

class TexMacro(WikiMacroBase):
    """enable Tex notation"""
    def expand_macro(self, formatter, name, args):
        return tag.img(src=mpath+'?'+args, title=args, alt=args, border=0)

コメント

  1. Pingback: ぱふぅ家のホームページ

  2. Pingback: ぱふぅ家のホームページ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です