TeX を Web 上で提供する方法

  ◆CONTENTS◆  

はじめに

TeX を使ってみよう のように,TeX 形式で文章を打ち込めば PDF でダウンロードできるサービスを提供するための方法を解説します。
ぜひ各組織でこのようなサービスを立ち上げていただければ幸いです。

準備

まずサーバが必要です。
通常の Web サーバ上で運用することもできますが,心配なら独立したマシンを調達します。
最近の Pentium/Celeron クラスの PC に Linux や FreeBSD 等を載せれば,うまくすれば数万円でできます。

通常は Linux などをサーバ用にインストールすれば Apache や PHP が入るはずです。
これらについては特に手を加える必要はありません。

もし \ が \\ になるようなら,php.ini で magic_quotes_gpc = Off にしてください。
Mac OS X 10.3 では /etc/httpd/httpd.conf の <IfModule mod_php4.c> ... </IfModule> の中に書き込めばいいようです。

Windows でも動作するようです。 → 「TeXを使ってみよう」をWindows上で動かせました (qa:35772)

最近の Linux ディストリビューションは TeX Live 2014 以降になっているので UTF-8 に対応した e-upTeX, XeTeX, LuaTeX, LuaJITTeX が収録されています。
ソースからコンパイルする方法は以下のページをご参照ください。

セキュリティ上の配慮

以下で $TEXMF と書いた部分は /usr/[local[/texlive*]/]share/texmf-dist のような名前のディレクトリを意味します。

TeX の設定ファイル $TEXMF/web2c/texmf.cnf が次のようになっていなかったら書き換えます。

% シェルにエスケープさせない
shell_escape = f
% 上位ディレクトリの読み書きを禁じる
openout_any = p
openin_any = p
% 1行めのコメントで TeX の種類を指定する機能を外す
parse_first_line = f

さらに,shell_escape_commands = ... の形で例外的に呼び出せるコマンドを列挙している場合がありますので,これも精査あるいは削除します。
shell_escape = f の場合は shell_escape_commannds = に列挙してあるコマンドも実行しません。

テスト1

次のようなファイルを処理してみてください。
エラーになれば大丈夫です。

\documentclass{article}
\begin{document}
\obeylines
\input /etc/passwd
\end{document}

テスト2

次のようなファイルを処理してみてください。
カレントディレクトリに hoge というファイルができなければ大丈夫です。

\documentclass{article}
\begin{document}
\write18{touch hoge}
\end{document}

参考リンク:Are Text-Only Data Formats Safe?

スクリプトの準備

まず適当な Apache のドキュメントが置ける場所に適当なディレクトリを作ります。
このディレクトリ自体は Apache のプロセスに書き込みができないようにしておきます。

この中に次の二つのファイルを置きます。

また,空のファイル count.txt と空のディレクトリ work を作ります。
これらは Apache のプロセスに書き込みができるようにします(ファイルは 666,ディレクトリは 777 にすればいいでしょう)。

ビットマップフォントの自動生成を許すなら $TEXMF/fonts/pk というディレクトリも Apache のプロセスに書き込みができるようにします。
ただ,今は標準的なフォントは Type 1 形式で用意されていますので,この必要はほとんどありません。
Latin Modern もインストールしておけばなおさらです。
もっとも,tfm の生成もありますので,$TEXMF/fonts/tfm/jknappen も書き込み可にしておかなければならないでしょう。

do.php の中身は適当に直します(特に TeX Live をインストールしたパス)。
次のようになっている部分も必要に応じて直します。 これは処理を10秒,1024Kバイトに制限する場合です。

ulimit -t 10 -f 1024

オンライン LaTeX エディタ

フリーソフトウェア (オープンソースソフトウェア)

フリーウェア (無料)

Web で数式

関連リンク




Last-modified: 2014-09-16 (火) 07:46:42 (16d)