** tex.inc.php [#ybcef194] |RIGHT:100|LEFT:360|c |~サマリ|LaTeXのインストールなしでLaTeX数式を表示させるプラグイン| |~リビジョン|1.0| |~対応バージョン|1.4.7| |~投稿者|[[abicky]]| |~投稿日|&new{2010-04-18 (日) 10:41:04};| #contents **概要 [#x0e2251d] PukiWikiでTeXの数式を表示するためのプラグイン.~ ref.inc.phpをベースに作成しました.なので強制的にGPLライセンスになるのかと思って一応GPLということにしておきます. **特徴 [#v6f0bfb4] --Google Chart APIを使用するため,サーバ側のインストール作業がほとんど不要(math2やmimetexとの比較) --ブラウザに依存しない(mathmlとの比較) --TeXの数式なので数式が綺麗(mathmlとの比較) --数式画像をキャッシュするので2回目以降の表示が速い(jsmathとの比較) --オプションが豊富(math2, mimetex, jsmath, mathmlとの比較) **使い方 [#k5946f4c] #tex($数式$ [,options] [,parameters]) &tex($数式$ [,options] [,parameters]); options left: 左寄せ(デフォルト) center: 中央揃え right: 右寄せ around: 回り込み link: 元ファイルへのリンクを貼る url: Google Chart API のURLを表示する noimg: 画像を展開しない zoom: 縦横比を保持する(拡大率の小さい方に合わせる) parameters WIDTHxHEIGHT: WIDTH px,HEIGHT pxにする ※WIDTH, HEIGHT は数値 NUM%: NUM%のサイズにする ※NUM は数値 #RRGGBB: 数式の色を16進数で指定(デフォルトは#000000) bg#RRGGBBAA: 背景色を16進数で指定.AAは不透過度(デフォルトは#ffffff00) TITLE: タイトルをTITLEにする **サンプル [#adc56d9c] [[こちら:http://abicky.site90.com/pukiwiki/index.php?Plugins%2Ftex.inc.php#adc56d9c]]を御覧下さい **ダウンロード&インストール [#kf0112c3] +WIKIHOMEディレクトリにteximgディレクトリをパーミッション707で作成する +[[こちら:http://abicky.site90.com/pukiwiki/index.php?Plugins%2Ftex.inc.php#kf0112c3]]から最新版をダウンロードし,tex.inc.phpという名前でWIKIHOME/pluginディレクトリに保存する **数式を手軽に表示させる(PukiWiki 1.4.7のみで確認)[#e4e67eaa] LaTeXのようにドルマークで挟んだり,\[ \]などで挟んだりすることで数式を書きたい場合は以下のような変更を加えることで実現できます.~ ※この記法でオプションは使えません ***数式をドルマークで挟むことでインライン要素として表示させる [#xb883a83] -WIKIHOME/lib/make_link.phpを書き換える --InlineConverterクラスの$convertersを以下のように変更('TeX'を追加) $converters = array( 'plugin', // Inline plugins 'TeX', // LaTeX Mathematical Expression 'note', // Footnotes 'url', // URLs 'url_interwiki', // URLs (interwiki definition) 'mailto', // mailto: URL schemes 'interwikiname', // InterWikiNames 'autolink', // AutoLinks 'bracketname', // BracketNames 'wikiname', // WikiNames 'autolink_a', // AutoLinks(alphabet) ); --以下の内容を適当なところに追加 // LaTeX Mathematical Expression class Link_TeX extends Link_plugin { function Link_plugin($start) { parent::Link_plugin($start); } function get_pattern() { $this->pattern = '(?<!\\\\)\$((.+?))(?<!\\\\)\$'; return $this->pattern; } function get_count() { return 2; } function set($arr, $page) { list($all, $this->plain, $this->param) = $this->splice($arr); $matches = array(); return parent::setParam($page, 'tex', '', 'plugin'); } } --1行にドルマークを2つ表示させたい場合はInlineConverterクラスのconvert関数も書き換える $retval .= array_shift($arr) . array_shift($this->result); ↓ $retval .= str_replace('\$', '$', array_shift($arr)) . array_shift($this->result); ※ドルマークを表示させる場合は\$と表記します -サンプル -サンプル~ [[こちら:http://abicky.site90.com/pukiwiki/index.php?Plugins%2Ftex.inc.php#xb883a83]]を御覧下さい ***数式を\[ \]などで挟むことでブロック要素として表示させる [#ve184619] -WIKIHOME/lib/convert_html.phpを書き換える --Bodyクラスのparse関数内で //Default の前に以下の内容を追加 // LaTeX Mathematical Expression if (substr($line, 0, 2) == '\[') { if (strpos($line, '\]') === false){ while (! empty($lines)) { $next_line = preg_replace("/[\r\n]*$/", '', array_shift($lines)); $line .= $next_line; if (strpos($next_line, '\]') !== false) break; } } $this->last = & $this->last->add(TeX($this, $line)); continue; } else if (substr($line, 0, 6) == '\begin'){ if (strpos($line, '\end') === false){ while (! empty($lines)) { $next_line = preg_replace("/[\r\n]*$/", '', array_shift($lines)); $line .= $next_line; if (strpos($line, '\end') !== false) break; } } $this->last = & $this->last->add(TeX($this, $line)); continue; } --以下の内容を適当なところに追加 function & TeX(& $root, $text) { if(exist_plugin_convert('tex')) return new Div(array('', 'tex', $text)); else return new Paragraph($text); } -サンプル -サンプル~ [[こちら:http://abicky.site90.com/pukiwiki/index.php?Plugins%2Ftex.inc.php#ve184619]]を御覧下さい **不具合 [#v109e88f] --URLエンコード後の数式の文字数が200を超えると画像を取得できない(Google Chart APIの仕様)~ ※\bm x は \mathbf{x} に変換されるなどの処理をしているので,使用者が書いた数式の文字数が200文字を超えなくても画像を取得できないことがあります. **コメント [#zba6412e] 不具合や感想などがあれば[[こちら:http://abicky.site90.com/pukiwiki/index.php?Plugins%2Ftex.inc.php#bcdbc56c]]で投稿お願いします.