reStructuredTextは、プレーンテキストをより好ましいフォーマットの文書に変換するためのオープンソースのテキスト処理システム、 Docutils の一部である。DocutilsはPythonで書かれており、大半のLinuxディストリビューションにはパッケージが用意されている。LinuxおよびMicrosoft Windows環境ではソースからのインストールも可能だ。
reStructuredTextは、PythonのDocStringをはじめとする、ドキュメンテーションの領域で使われるマークアップ構文として登場した。目指したのはシンプルでわかりやすく、それでいて重要な用途にも使えるものだった。その後、より汎用的なマークアップ言語へと発展を遂げた。reStructuredTextには、文書フォーマットの変換が簡単に行える次のようなスクリプト群が付属している。
- rst2html.py:ネットで公開可能なHTML文書にエクスポートする。
- rst2latex.py:LaTeX形式へのエクスポート用スクリプト。LaTeX文書からはPDFやPostScriptファイルを生成できる。
- rst2s5.py:S5形式へのエクスポート用。S5ファイルを使うとWebベースのプレゼンテーションが生成できる。
- rst2xml.py:Docutils固有のXML出力へのエクスポート用。その結果はXSLTのような標準のXMLツールを使って任意の最終形式に変換できる。
どのスクリプトも実行は簡単だ。いずれも、入力として特殊な形式のテキストファイルが必要になる。ここでは「demo.txt」という次のサンプルファイルを入力として使うとしよう。
================= Title ================= Section ================= * this is a list item * a list item can span more than one line - just align the continuing text after the bullet and white space * another list item
この文書を処理するには「rst2html.py demo.txt demo.html 」というコマンドを実行すればよい。すると、次のようなHTMLコードが生成される(ここでは、HTMLコードのみに注目するため、埋め込まれたCSSコードは省略)。
<div class="document" id="title"> <h1 class="title">Title</h1> <h2 class="subtitle" id="section">Section</h2> <ul class="simple"> <li>this is a list item</li> <li>a list item can span more than one line - just align the continuing text after the bullet and whitespace</li> <li>another list item</li> </ul> </div>
どのスクリプトも、追加パラメータによってドキュメント生成の処理をかなりの範囲でカスタマイズできる。特に、S5スライドショーの生成でありがたかったのが、「rst2s5.py」スクリプトでデフォルト以外のテーマも使えたことだ。そのため、自分のセンスに合ったプレゼンテーションが得られる。
PDF文書を生成するには、最初にLaTeXファイルを生成し、それを入力としてLaTeXを実行する。そうするとPSおよびPDFの各ファイルが生成される。この場合は、PDFが直接生成されるわけではない。あるいは、シェルスクリプトを書いて後処理を実行したり、「 rst2pdf.py 」というスクリプトを使ったりすることもできる。後者のスクリプトは、Pythonで書かれたオープンソースのPDFライブラリ、 ReportLab を使って、reStructuredTextのファイルからPDFへの直接変換を行うものだ。rst2pdfは日々開発が進められていてなかなか便利なので、そのうちにほかの正式スクリプトと同じようにreStructuredTextに付属するようになるだろう。
また、OpenDocument Textファイルの生成には「 rst2odt.py 」が使えるかもしれない。今回は動作の確認を行わなかったが、順調に開発が進んでいるようだ。
