0から始めるwikipediaのローカル用変換:数式対応
ほぼすべてこちらに書いてある通りなのですが,
個人の日記は突如消えることもありますので分散ということでメモを作成。
自分がPerlを知らずに無理やりやってるので基本を無視しまくりだとは思いますのでご了承を。
WikipediaをEPWING形式に変換する
http://bamboo-hill.air-nifty.com/diary/2010/01/wikipediaepwing.html
まぁそもそも自作しなくても,公開してくださってる方はおられるんですけどね。
boreder.jp/saba http://www.border.jp/saba/main/
Ceena::BitTorrentTracker http://www.ceena.net/
Boookends http://sites.google.com/site/boookends/title
現在は図版対応への動きがちょっとあるようですが,まだ一般公開はされていません。
Wikipediaが図版を配っているわけでもありませんし,今後に期待しつつも今回は数式のみ対応で。
自分の環境:Windows Vista x86,HDD空き容量は30GB以上を推奨
◆手順
0:Wikipedia日本語版の最新版を落としてくる
1:cygwinというソフトをインストールしてPerlを使えるようにする
2:Wikipediaのデータファイルとそれを変換するプログラムを集める
3:cygwin上で変換処理
4:EBZip形式へ圧縮あるいはそのまま使用
◆手順0:Wikipedia日本語版の最新版をダウンロード
・こちらから latest に入って「jawiki-latest-pages-articles.xml.bz2」をダウンロードします。
http://download.wikimedia.org/jawiki/
特定の日付のが欲しければそちらで,以後latestを日付に置き換えてください。
◆手順1:cygwinというソフトをインストールしてPerlを使えるようにする
・こちらからSetup.exeを拾ってくる。
http://www.cygwin.com/ Cygwin Information and Installation
・このsetupはネット上から最新ファイルを集めてくるためのクライアントであり,
何かの入れ忘れに気づいても,もう一度これを実行することで追加できます。
・途中の「Select Packages」と出たときに以下のものを選択しておく。
「Base」「Devel」「Perl」「Archive」「Libs」「Graphics」
Perl/perl-Image-Magick は「Src」もチェックしておくらしい
・環境変数の設定を行う。
システムのプロパティ→詳細設定→環境変数 でユーザ変数のところに以下の内容を登録する。
「変数名」CYGWIN
「変数値」ntsec
「変数名」HOME
「変数値」/home/[半角スペースのない適当な英字ユーザー名]
「変数名」MAKE_MODE
「変数値」UNIX
「変数名」SHELL
「変数値」/bin/bash
・インストール後にcygwinを起動:以後コマンドは以下のような形式で書きます。
$ perl -v
これはcygwinに「perl -v」と入力してEnter,という意味になります。
これでインストールされたPerlのバージョンをチェックすることが出来ます。
5.8以上じゃないとダメらしいけど今なら5.10.1とかになると思います。
・PerlMagickをインストール
C:\cygwin\usr\src\ の中にある
ImageMagick-6.4.0-6.tar.bz2 みたいなのを解凍してフォルダを作っておきます。
自分はなぜかcygwin上で解凍にミスったので普通に解凍ソフトで開いてしまいました。
見つからなかったらsetupを起動してもう一度探してみてください。
$ cd /usr/src/ImageMagick-X.X.X.X/PerlMagick x.x.xのところはフォルダ名に合わせる
$ perl Makefile.PL
$ make
$ make install
・mimeTeXをインストール
ダウンロード先:http://www.forkosh.com/mimetex.html
インストールコマンド
$ wget http://www.forkosh.com/mimetex.zip
$ unzip mimetex.zip
$ gcc -DAA -DAA mimetex.c gifsave.c -lm -o mimetex.exe
$ cp -p ./mimetex.exe /usr/local/bin/
この場合ダウンロード(wget)も解凍もcygwin上で行っていますが,
例えば以下のフォルダ内にダウンロードしてきたZIPを置けば「unzip」からでOKです。
あるいは解凍したものを置いておけば「gcc」からでOKです。
C:\cygwin\home\[ユーザ名]\
自分はブラウザ上でダウンロードは出来てもcygwinからは出来ない環境だったのでこうしました。
以後もwgetコマンドは使わずに手動ダウンロードのやり方で記述してあります。
◆手順2:Wikipediaのデータファイルとそれを変換するプログラムを集める
・FreePWINGのインストール
ここの「ソースコードのダウンロード」から最新版を持ってきます。
FreePWING http://www.sra.co.jp/people/m-kasahr/freepwing/
現時点だと freepwing-1.6.1.tar.bz2 が最新かと思います。
cygwin起動直後の作業フォルダは C:\cygwin\home\[ユーザ名]\ なので
ここにファイルをそのまま,あるいは解凍したフォルダを置けばOKです。
$ tar xvf ./freepwing-1.6.1.tar.bz2 cygwin上で解凍するならこれで
$ cd freepwing-1.6.1.tar.bz2 フォルダに移動します
$ ./configure
$ make
$ make install
・Wikipedia-fpwのインストール
こちらから wikipedia-fpw-20091202-src.tar.gz みたいなのをダウンロードします。
Kazuhiro's blog http://ikazuhiro.s206.xrea.com/staticpages/index.php/wikipedia-fpw
これを置く場所がWikipediaの変換作業スペースになりますので
とりあえず C:\cygwin\home\[ユーザ名]\wikipediaEPWING\ にでも置くことにします。
$ cd ./wikipediaEPWING
$ tar zxvf wikipedia-fpw-20091202-src.tar.gz 日付のところは最新版に合わせる
$ rm wikipedia-fpw-20091202-src.tar.gz
$ mv wikipedia-fpw-20091202 wikipedia-fpw
ここでwikipedia-fpwフォルダ内にある wikipedia-fpw.conf を編集します。
内部は日本語で書いてあるのでわかるかと思いますが,
数式の有無や相互参照の有無などが弄れるようです。
・編集箇所:数式有り,Windows−Cygwin環境の場合
>相互参照有り cygwinが落ちることがあるらしい,詳細はKazuhiroさんとこに。
>数式有り
>数式の色を白背景黒文字に まぁこれは趣味の問題で
>mimtexのパスをフルパスで指定 'mimetex' => 'C:/cygwin/usr/local/bin/mimetex.exe',
これは必要なのかどうか不明ですが一応。
さて,ダウンロードしておいた jawiki-latest-pages-articles.xml.bz2 を
C:\cygwin\home\[ユーザ名]\wikipediaEPWING\ の中におきます。
$ bunzip2 -v jawiki-latest-pages-articles.xml.bz2 これに数分かかります。
$ mv jawiki-latest-pages-articles.xml wikipedia.xml
$ mv wikipedia.xml ./wikipedia-fpw/
$ cd wikipedia-fpw
◆手順3:cygwin上で変換処理
1つ目のコマンドを打ったら数時間止まりません。
Core2Duo E6550で数式無し約3時間。数式有りにしたら約7時間かかりました。
2つ目はすぐ終わりますが,3つ目は8分ぐらいかかります。
あとこれを始めるとHDDが10GB以上減りますので残量チェックしてから始めましょう。
$ fpwmake ここでエラー吐いた場合は下記※
$ fpwmake catalogs 古いcatalogsがあるとダメ,上書きはしてくれないらしい
$ fpwmake package
$ mv wikipedia-fpw-20091202.zip ../
これでwikipediaEPWINGフォルダ内に「wikipedia-fpw-20091202.zip」が出来ています。
最後のコマンドは使わなくても「wikipedia-fpw」フォルダ内にZIPがありますけど。
これを適当に移動して解凍したら「WIKIP」というフォルダが出来て,
EBWinなどで使える状態になっています。完了!
wikipediaのデータを更新してやり直す場合にはfpwmakeの前に
「wikipedia-fpw」フォルダ内を一掃してしまったほうがいいのかもしれません。
その際には wikipedia-fpw.conf を退避→上書きするなりして設定変更に注意で。
多分本体のxmlを上書きしてcatalogsを削除すればそのままいけるかなとは思いますけど。
※Entry: 31; 形式言語 のあたりでFatel Errorとか表示された場合は
・とりあえず全部閉じる。不安ならPC再起動。
・cygwinのsetup.exeからbaseをreinstallする
・アクセサリからコマンドプロンプトを起動
C:\cygwin\bin\
ash
と入力してash.exeをコマンドプロンプト内に起動
$ /bin/rebaseall
$ exit
exit
でコマンドプロンプトを終了。
その後cygwinを立ち上げて
$ cd ./wikipediaEPWING/wikipedia-fpw
$ fpwmake
から再開します。自分は数式有りにしたらこのエラーが出ました。
「形式言語」のページに数式があるので設定が間違っていたら引っかかるんでしょう。
◆手順4:EBZip形式へ圧縮あるいはそのまま使用
今回はEBZipについては省略しますが,
EBWinという辞書検索ソフトについてくるEBShrinkを使えばいいかと思います。
操作は簡単ですので見たらわかります。登録して出力先指定してボタン一発です。
・検索ソフト
自分が愛用している辞書ソフトはDDWinですが,圧縮形式に対応しておらず,
この状態のwikipediaは検索できません。
EBWinというソフトもあり,こちらだと対応済みで問題なく検索できるようです。
iPhone/iPod touchへ転送して使うとか,HDD容量を節約する,などであれば
辞書をそれぞれEBZip圧縮してEBWin,EBZip対応のiPhoneアプリを使う,ということになるのかな。
DDWinは使いやすくていいソフトだと思いますが開発が停止していますし,
Windows 7 x64への対応も終わっているEBWinに今後は移ることになるんでしょうかね。
ちなみにEBZipにすることで大体6割ぐらいのサイズになるようです。
いまどきHDD容量数GBはたいした問題ではない,といえばその通りなのですが…
以上,「perl・・・だと・・・?」からスタートして
wikipediaオフライン版数式対応を作るまでのメモでした。
コマンドプロンプトに抵抗がなければ何とかなるものです。