elyxerでlyxからhtmlを生成してみた

elyxerというpythonで記述されたconverterがあり、lyx標準のxhtmlよりプリティな出力が得られるらしいので試してみた。

パッチとインストール

本家からダウンロードして

% sudo python install.py

でインストール完了だが、このままだと、includeしたlisting環境が一行おきの表示(つまり改行が余分についてしまう)となるので、以下のパッチを当てた方がいい。

diff -ru elyxer-1.2.3/src/elyxer/gen/include.py elyxer-1.2.3.patch/src/elyxer/gen/include.py
--- elyxer-1.2.3/src/elyxer/gen/include.py	2011-02-02 07:32:37.000000000 +0900
+++ elyxer-1.2.3.patch/src/elyxer/gen/include.py	2013-02-24 21:45:21.000000000 +0900
@@ -90,7 +90,11 @@
   def readlisting(self):
     "Read a document as a listing."
     listing = Listing()
-    listing.contents = self.readcontents()
+    lines = self.readcontents()
+    result = list()
+    for line in lines:
+      result.append(Constant(line.string.strip('\n')))
+    listing.contents = result
     listing.parameters = self.parameters
     listing.process()
     self.contents = [listing]

パッチを当てたら、

$ sh make

でビルドし直した後、上記のようにしてインストールする。

pythonのパッチを作るのははじめてだが、pythonたしかにわかりやすいw

使い方

コマンドラインから

% elyxer.py --html inputfile.lyx output.html

のようにする。オプションがたくさんあるが、例えばチャプターごとにページを分けたいときは

% elyxer.py --html --splitpart 1 inputfile.lyx output.html

のようにする。output.htmlの他、output-n.htmlの形でセパレートされる。
自動でナビゲーションもつく。

現在の困った点は、パッチを当てないとincludeしたlisting環境が間延びしてしまう事の他は、同じくlisting環境のパラメタがデフォルトのプリアンブルを解釈してくれないため、各環境に埋め込まないといけない点くらい。

epsで作った図もきちんとビットマップにしてくれる。便利。