reSTからOOo Writer形式のドキュメント(.odt)を作る

なんとなくできるんじゃないかと思ったけどほんとにできた。

準備

必要なものは

  • Python
  • docutils

実際に試したのは Python 2.6 + docutils 0.6 の組み合わせ。

背景 - OOo が重すぎる

というのも機械が非力(PPC G4)だからなんだけど。最近は妙に Office 仕事が多くて、この前時代マシンには荷が重すぎることがよくある。

ずーーっと前の自分ならこういう場合はテキストから変換する方法を考えていたように思うけど、最近はもう気力がないので一時的に私物の Intel マシンを投入したりとか、そりゃどうかなぁと思いながらやりくりしてたんだけど、急に思いついた。

Python の docutils に変換機能あった気がする

そうそう。最近まともに Python を動かせる(≠使える)ようになってるから、一応ね。あと、OOo を利用したドキュメント変換ツールにも Python バージョンがあったのを覚えていたから。普段からぼけっとパッケージマネージャの検索結果とか眺めておくといいよ(違

準備

$ sudo easy_install-2.6 docutils

※ easy_install のコマンドファイル名は適宜読み替えてちょ。

確認

MacPorts で入れた Python で確認。

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin $ ls rst*
rst2html.py*		rst2odt.py*		rst2xml.py*
rst2latex.py*		rst2odt_prepstyles.py*	rstpep2html.py*
rst2man.py*		rst2pseudoxml.py*
rst2newlatex.py*	rst2s5.py*

お。rst2odt.py なんてのがあんじゃん1

自分の環境では

/opt/local/bin

に PATH が通っているので

/opt/local/bin/rst2odt.py

に symbolic link を用意して使うことにした。

使い方

サンプルの reST データをこんな風に用意。

見出し
======

simple table


小見出し
--------

official な table ってどう書くんだっけな

==========  ==========
テーブルは  こうだっけ
----------  ----------
どうだった  かな
==========  ==========

 * 箇条書き
 * bullet

もしかして
==========

見出しでセクションが分かれる仕様か?  --no-sections でイケた。

で、変換はこう。

$ rst2odt.py --no-sections sample.rst sample.odt

デフォルトだと見出しごとにセクションが切られてしまうので、それを避けたい場合は上のようなオプションを使う。

で、OSX だと

$ open sample.odt

とするとほんとに OOo のファイルじゃん!て感じでとても簡単に使える。

参考

残った課題

実は変換して生成したいのは odt ( Writer ) ではなく ods ( Calc ) なんだけど、とりあえずこれはこれで使ってみようと思う。ただし

そうなると見た目が気になる

ただの表ならいいんだけど、文書になるとやっぱり見出しとか地の文とか気になる。全部欧文のフォントが指定されていても美しくない。日本語のテンプレートを作れるようにはなっていた方がいいかなとは思っているんだけど、そこはまだ全然未開拓のまま残っている。

関連エントリ

  1. HTML や LaTex に変換する機能があることは知っていた。 

More