PHPでmimeTeXを使って数式を作成(Windowsアプリ版)

(1/1)
PHPでTeXを表示する」では、 mimeTeX を使って、TeX を表示するプログラムを作ったが、これをWindowsアプリに移植する。

サンプル・プログラム

PHPでWindowsアプリ開発:TeX数式作成

サンプル・プログラムの解説:mimeTeXの利用

0104: /**
0105:  * TeX画像作成
0106:  * @param   string $tex TeX文
0107:  * @param   int    $parent 親ウィンドウID
0108:  * @return  なし
0109: */
0110: function makeTeX($tex$parent) {
0111:     global $Tempfname;
0112: 
0113:     $fname = $Tempfname;
0114:     $exec = MIMETEX . " -e {$fname} ¥"{$tex}¥"";
0115:     system($exec);
0116: 
0117:     //テンポラリから読み込む
0118:     $img = '';
0119:     $infp = fopen($fname, 'rb');
0120:     while (! feof($infp))    $img .= fgets($infp, 4096);
0121:     fclose($infp);
0122: 
0123:     //ウィンドウに表示
0124:     $dib = FreeImage_Load(FIF_GIF$fname, 0);
0125:     $width  = FreeImage_GetWidth($dib);
0126:     $height = FreeImage_GetHeight($dib);
0127:     $bmp = wb_create_image($width$heightFreeImage_GetInfoHeader($dib), FreeImage_GetBits($dib));
0128:     FreeImage_Unload($dib);
0129:     wb_set_image(wb_get_control($parentIDC_RES_IMAGE), $bmp);
0130: }

mimeTeXhttps://www.pahoo.org/e-soul/webtech/cpp01/mimetexwin/program/mimetex.zip からダウンロードできる。Windows用バイナリである mimetex.exe を解凍したら、"mimetex\" の下に配置する。

これを組み込み関数  system  によって呼び出し、出力を画像としてテンポラリファイルに保存する。
この部分の手順は、「PHPでTeXを表示する」で使ったものと同じである。

テンポラリファイルのウィンドウへの表示については、「PHPで Windows用週間天気予報プログラムを作る」で利用した FreeImage を利用する。

サンプル・プログラムの解説:TeX画像の保存

0132: /**
0133:  * TeX画像保存
0134:  * @param   int $parent 親ウィンドウID
0135:  * @return  なし
0136: */
0137: function saveTeX($parent) {
0138:     global $Tempfname;
0139: 
0140:     if (file_exists($Tempfname)) {
0141:         $fname = wb_sys_dlg_save($parent, 'TeX画像保存', "GIFファイル¥0*.gif¥0¥0", '', 'mimetex.gif');
0142:         if ($fname != FALSE) {
0143:             copy($Tempfname$fname);
0144:         }
0145:     }
0146: }

テンポラリファイルとして保存したTeX画像(GIFファイル)をファイルとして保存するには、はWinBinder関数 wb_sys_dlg_save を用いている。

コンパイル

コマンドラインから "bamcompile mimetexwin.bcp" を実行する。コンパイルが完了すると、"mimetexwin.exe" が生成される。"mimetexwinwin.exe" は、DLL不要で、単独で動作するEXEプログラムである。

参考サイト

(この項おわり)
header