数式を含む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)