
\title{数式を使う}

\tableofcontents

\chapter{数式処理}

Web ページ上で数式を表示させるのには多くの方法があります。
どれも一長一短ですので、色々と試して、自分が最も良いと思った方法でサイトを作るのがよいでしょう。

このページでは、mil が公式にサポートしている数式処理の導入方法を解説します。

\chapter{phptexpng}

これは PHP で書かれた、シンプルなプログラムで、
\begin{quotation}
	数式 $\longrightarrow$ \TeX ソースコード $\longrightarrow$ dvi ファイル $\longrightarrow$ png 画像
\end{quotation}
という処理をして数式の画像を生成します。

\section{利点}

利点としては、
\begin{itemize}
	\item \TeX の非常に美しい数式を使うことができる
	\item \TeX コードから生成しているため、独自のスタイルファイルやフォント、マクロを自由に使うことができ、柔軟性が非常に高い
\end{itemize}
といった所でしょう。

\section{欠点}

しかし欠点として、
\begin{itemize}
	\item \color{red}{レンタルサーバではほぼ 100\% 使用できない}
	\item 処理が比較的遅い
	\item 日本語が扱えない
\end{itemize}
というのが挙げられます。

\section{なぜ使用できないか}

phptexpng は PHP の exec という函数を使っています。
これは、C 言語で言う system 函数と同じで、シェルコマンドを実行するものです。

しかしシェルコマンドが実行できることは、非常に危険であり、一般的にレンタルサーバではこの行為を禁止しています\footnote{PHP にはセーフモードという機能があり、これを有効化することにより、このような危険な函数を使用禁止にすることができます}。
ただもし禁止されていても管理者に相談をすれば例外的に認められる事があるかもしれません。

なお、phptexpng ではユーザの入力によらずにコマンドを実行しているため、
セキュリティーホールにつながることはありません\footnote{万が一攻撃方法を見つけた場合には速やかにお知らせください}。

\section{環境のセットアップ}

\subsection{コマンドのインストール}
以下のシェルコマンドが使用できるようにインストールをしてください。
\begin{itemize}
	\item platex
	\item dvipng
\end{itemize}

\subsection{テスト}
使用できるかどうかのテストをします。
これは任意ですので、スキップしても構いません。

\subsubsection{\TeX ソースの用意}
\begin{quotation}
\\documentclass{jarticle} \br
\\begin{document} \br
\\thispagestyle{empty} \br
\\[ y=\\frac{1}{x} \\] \br
\\end{document}
\end{quotation}
上のような \TeX ソースコードを適当な名前(例えば、foo.tex)で保存します。

\subsubsection{dvi 化}
\begin{quotation}
	\$ platex foo.tex
\end{quotation}

\subsubsection{png 化}
\begin{quotation}
	\$ dvipng -T tight -bd 1000 --freetype0 -Q 5 --gamma 1.5 -o foo.png foo.dvi
\end{quotation}

以上で foo.png が、
\begin{equation}
	y = \frac{1}{x}
\end{equation}
となっていればテスト成功です。

\section{確認}
\begin{quotation}
	mil/util/tex/tex2png.php?q=\$y\%3Dax\%2Bb\$
\end{quotation}
へアクセスし、「$y=ax+b$」と表示されていることを確認してください。

\chapter{mimeTeX}

\url{http://www.forkosh.com/mimetex.html}{mimeTeX} は web 上で数式を生成する場合の最もポピュラーな方法です。
バイナリ形式の CGI として動作します。

\section{利点}
\begin{itemize}
	\item CGI なのでほぼすべてのサーバで動作する
	\item 動作がとても高速
\end{itemize}
そもそも web ページ上で数式を表示させるために作られたプログラムですので、サーバ上で動かす必要条件はすべて揃っていると言っても過言ではないでしょう。

\section{欠点}
\begin{itemize}
	\item 数式が汚い\footnote{主観…ではないと思います}
\end{itemize}
数式を多用するサイトでこれは致命的だと思います。

\section{インストール}
\subsection{バイナリの入手}
\subsubsection{コンパイル済みの物を使う}
公式サイト(\url{http://www.forkosh.com/mimetex.html})で各プラットフォーム向けのバイナリが配られているので、それを使うと簡単でしょう。
どれを使えばいいのかは、サーバ管理者へお問い合わせください。

\subsubsection{自分でコンパイルする}
もしコンパイルできる環境にあり、コンパイルをできる知識があるのならば、自分でコンパイルする方が良い選択でしょう。
また、公式サイトに自分のサーバのプラットフォーム向けのバイナリがない場合には自分でコンパイルするしかありません\footnote{たとえば、Mac や 玄箱などは PPC ですので、自分でコンパイルする必要があります}。

コンパイルは簡単ですし、すぐに終わります。
やり方は公式サイトをご参照ください。

\subsection{動作確認}
\begin{quotation}
	mimetex.cgi?x=y
\end{quotation}
などとして、適切に数式が表示されることを確認してください(この場合には、「$x=y$」となるはずです)。

\subsection{アップロード}
FTP などを用いて、サーバ上に入手した CGI をアップロードします。

\subsection{設定}
\begin{quotation}
	mil/util/tex/math2png.php
\end{quotation}
を適当なエディタで開き、
\begin{quotation}
	define('MIMETEX_URL', '/cgi-bin/mimetex.cgi'); \br
	 \br
	define('PROGRAM', PHPTEXPNG);
\end{quotation}
という部分を、
\begin{quotation}
	define('MIMETEX_URL', '<<mimetex.cgi の URL>>'); \br
	 \br
	define('PROGRAM', MIMETEX);
\end{quotation}
としてください。ただし、「<<mimetex.cgi の URL>>」という部分は適切に変更します。

\section{確認}
これで適切に数式が表示されれば成功です。

\chapter{Blahtex}
\url{http://gva.noekeon.org/blahtexml/}{Blahtex} は TeX 形式の数式を MathML 化するプログラムですが、 png 画像化にも対応しています。
また、MediaWiki\footnote{Wikipedia でも使われています…というか Wikipedia のために作られた Wiki プログラムです}でも使われており、実績もあります。

\section{利点}
\begin{itemize}
	\item 数式が綺麗
	\item MathML も出力できる
\end{itemize}

\section{欠点}
\begin{itemize}
	\item バイナリが配られていないので、自分でコンパイルしなければならない
	\item 標準出力に画像を出力するわけではないので、扱いが面倒
\end{itemize}

…ということなので今のところ未対応とさせていただきます。

/*
\chapter{数式ホスティングサーバを使用する}

phptexpng を使用できないためのために、数式の画像化処理を肩代わりするサービスです。
*/






















