数式を含むTeX文書からPukiWikiにローカルで変換する方法.
サーバー上でTeXが使えるならば,
-[[自作プラグイン/mimetex.inc.php:http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fmimetex.inc.php]]
-[[自作プラグイン/tex.inc.php:http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Ftex.inc.php]]
-[[自作プラグイン/math2.inc.php:http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fmath2.inc.php]]

などが使えるが,TeXがない+自分で管理しているサーバでない場合用に,
ローカル上で作成したTeX文書を変換して数式画像とPukiWikiフォーマットに変更された文書を生成する方法を記述する.


***全体の流れ [#w6338ae7]
+TeXで文書を生成(例えば,test.tex)し,それがTeXを通ることを確かめておく.
+rx_tex2wikiで数式用TeXとPukiWiki用テキストを抽出する(test.eq.texとtest.wiki.txt).
+test.eq.texをTeXに通して,dviファイル生成.
+dvipngでdviファイルをgif画像に変換する.
+PukiWikiで新規ページを作って,test.wiki.txtの内容をコピー,
4で生成した画像ファイルを添付する.

2,4については以下参照.

***数式用TeXとPukiWiki用テキストの抽出 [#t247b9f1]
TeXの数式はインライン要素(文章中で"$"に囲まれた部分)とブロック要素の2種類がある.
ブロック要素は例えば,
 \begin{equation}
   〜
 \end{equation}
のように囲まれた領域である.

手動でやる場合は,これらの数式環境を抽出して,下で紹介する方法で画像化,当該部分を
 #ref(equation.gif,,100%)
のように変更すればよい.
ただ,長いTeXだととても面倒なので,ある程度自動化するプログラム(rx_tex2wiki)を実装した.
rx_tex2wikiのダウンロードは以下.

#ref(rx_tex2wiki_v1.07.zip)

-変更履歴
--v1.07 : quote環境を引用">"で置き換える機能追加,同じインライン数式が同じ行にあったときのバグ修正
--v1.05 : verbatim環境に対応,改行記号を変換するように変更,複数ファイルのD&Dに対応
--v1.03 : "\["の後にスペースなどがあっても認識するように変更
--v1.02 : パラメータ指定を追加・変更
--v1.0 : とりあえずひととおりの機能を作ったバージョン


-rx_tex2wikiの使い方~
ダウンロードしたzipファイルを解凍すると,rx_tex2wiki.exeというファイルのみが入っている.
これに*.texファイルをD&Dするだけ.
D&D後,*.texファイルと同じフォルダに,*.wiki.txtと*.eq.texが作成される.
それぞれ,
--*.wiki.txt : いくつかのTeXの命令をPukiWikiのフォーマットに変更したもの.基本的にはdocument環境内のみを対象としている.数式の画像名は連番が自動的につけられ,その順番は*.eq.texでの記述順と対応している.
--*.eq.tex : 数式のみ取り出した数式画像生成用TeXファイル.下記の方法で画像化すれば,*.wiki.txt内のrefに指定された画像名と対応するものを生成できる.ただし,dviファイルは手動で生成する必要あり.

-変換表 : 対応する命令
|TeX命令名・環境名|TeXの例|対応するPukiWikiフォーマット|備考|
|数式環境(インライン)|$数式$|&ref(*.eq*.gif,パラメータ,スケール,タイトル);|このPukiWikiの設定だと解像度150で70%ぐらいがちょうどいい.&br;画像タイプとスケールの設定は下参照|
|数式環境(ブロック)|\[&br; 数式&br;\]|#ref(*.eq*.gif,パラメータ,スケール,タイトル)||
|equation環境|\begin{equation}&br; 数式&br;\end{equation}|#ref(*.eq*.gif,パラメータ,スケール,タイトル)|数式番号なし版(equation*)でも可|
|section環境|\section{セクション名}| *セクション名 ||
|subsection環境|\subsection{セクション名}| **セクション名 ||
|subsubsection環境|\subsubsection{セクション名}| ***セクション名 ||
|paragraph環境|\paragraph{セクション名}| -セクション名 ||
|enumerate環境|\begin{enumerate}&br; \item〜&br;\end{enumerate}| +〜 | 各\itemが連番になる |
|itemize環境|\begin{itemize}&br; \item〜&br;\end{itemize}| -〜 | 各\itemが箇条書きになる |
|figure環境|\begin{figure}&br; \includegraphics[〜]{画像ファイル名}&br \caption{キャプション}&br;\end{figure}| | &ref(*.eq*.gif,,100%); |&br;|CENTER:キャプション| | tabular環境などを使って画像を複数指定していても最後の1つのみ対応&br;キャプション無しの場合は単純に#ref(*.eq*.gif,,100%) |
|verbatim環境|\begin{verbatim}&br;〜&br;\end{verbatim}| #code(C){{〜}} | 私がverbatim環境を基本的にCのコードを載せるために使っているので,C,C++用のpukiwiki環境で囲むようにしている |

数式の重複チェックはしているので,同じ数式画像が出力されることはないはず.ただし,厳密に同じである必要がある(例えば,x^nとx^{n},xyとx yなどは違うものとして認識する).

-設定~
元のTeXファイルのプリアンブルに"%%TEX2WIKI"で始まる行を書くことで,変換のプロパティを設定できる.
設定できる項目は以下.
--画像のスケール(パーセント,ピクセル数)
 %%TEX2WIKI_EQUATION_SCALE=70%
 %%TEX2WIKI_EQUATION_SCALE=100x100
--画像のタイプ(拡張子で指定)
 %%TEX2WIKI_EQUATION_TYPE=gif
--参照パラメータ(nolink,around,centerなど)
 %%TEX2WIKI_EQUATION_PARAMETER=nolink,zoom
--画像のタイトル
 %%TEX2WIKI_EQUATION_TITLE=title

パラメータを指定しなかった場合は,#ref(*.eq*.gif,,70%) となる.

***dvipngを使った数式の画像化 [#tc74afac]
[[dvipng:http://sourceforge.net/projects/dvipng/]]を使うことで,dviファイルから画像を生成する.複数ページのdviファイルはそれぞれのページごとに画像化され,連番付のファイルとして保存される.上記の*.eq.texでは1つのページに1つの数式のみとなるようにしてあるので,これをTeXに通して,dviを生成,*.eq.dviをdvipngに通すことで,PNGかGIFファイルを生成できる.数式にフルカラーは必要ないので,ここではGIFを生成する.GIFを生成するためのコマンドは以下.
 dvipng %1 -T tight -D 150 -bd 1000 --freetype1 -Q 5 --gamma 1.1 --gif
%1にdviファイル名を指定する.各オプションの意味は,コマンドラインで単純に
 dvipng
とすれば出てくる.上記のコマンドではできる限り空白を削除,解像度150,背景色白,FreeTypeフォント使用,アンチエリアシング精度5,ガンマ補正1.1,GIF出力を設定している.
複数ファイルのD&Dに対応したバッチファイルを以下に置く.
#ref(dvi2gif.bat)

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS