« RedmineとTracの機能比較part3 | トップページ | ソフトウェア構成管理はチケット駆動開発がサポートする »

2012/09/28

Pandocでテキストファイルからドキュメント生成

以前から、テキストファイルからWord、PDF、epub出力するツールを探していた。
Haskellで作られたツールPandocでようやく意図できたものが出力できたのでメモ。

【元ネタ】
『ソフトウェアの基礎』のePub版を公開しました。 - みずぴー日記

Pandocのリンク: プログラマの思索

Pandoc - Demos

【インストール】
Windowsでは、ワンクリックインストーラーを使えば、HaskellのGHCを入れなくてもツールを導入できる。

Pandoc - Installing

pandoc --help
で認識すればOK。

Rubyのgem、Pythonのeasy_installに相当するHaskellのライブラリインストールコマンドcabalをインストールするのは面倒だったから。

【epub, word出力方法】
Pandoc - Creating an ebook with pandocに従って、ProGitのテキストファイルをepubやWordへ変換してみる。

まずGitHubから、ProGitのテキストファイルを落とす。
ProGitの本文はmarkdownで書かれているので、TracのWikiに慣れていれば誰でも簡単に修正できる。

git clone http://github.com/progit/progit.git

cd progit/ja

以後、Windowsではコマンドに失敗するとファイルが消えてしまう。
失敗したら以下のコマンドで元に戻す。
git reset --hard

タイトルファイルを作る。
vi title.txt

% Pro Git
% Scott Chacon

epub用のメタデータファイルを作る
vi metadata.xml

<dc:rights>Creative Commons Non-Commercial Share Alike 3.0</dc:rights>
<dc:language>en-US</dc:langue>

以下のコマンドを実行する。

pandoc -S --epub-metadata=metadata.xml -o progit.epub title.txt \
01-introduction/01-chapter1.markdown \
02-git-basics/01-chapter2.markdown \
03-git-branching/01-chapter3.markdown \
04-git-server/01-chapter4.markdown \
05-distributed-git/01-chapter5.markdown \
06-git-tools/01-chapter6.markdown \
07-customizing-git/01-chapter7.markdown \
08-git-and-other-scms/01-chapter8.markdown \
09-git-internals/01-chapter9.markdown

progit.epub が作られる。
目次も作られているし、iPod touchでStanzaやiBooksに入れれば、読みやすい。

但し、図の画像ファイルがepubに入っていないので、その部分はPerlコマンドで一括置換する必要がある。

perl -i -0pe \
's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' \
*/*.markdown

Wordで出力するには、以下のコマンドを実施すればいい。

pandoc -f markdown -s title.txt \
01-introduction/01-chapter1.markdown \
02-git-basics/01-chapter2.markdown \
03-git-branching/01-chapter3.markdown \
04-git-server/01-chapter4.markdown \
05-distributed-git/01-chapter5.markdown \
06-git-tools/01-chapter6.markdown \
07-customizing-git/01-chapter7.markdown \
08-git-and-other-scms/01-chapter8.markdown \
09-git-internals/01-chapter9.markdown \
-o progit.rtf

PDF出力するには、pdflatexを入れないと駄目なので止めた。
rtfファイルをWordで開けるので、印刷モードでPDF出力すれば問題ない。
完全な自動化とは言いづらいが。。

でも、テキストファイルならばGitやMercurialでバージョン管理でき、差分が分かりやすいので、書きやすくなる。
執筆記事や講演資料などもmarkdownで書けるならば、章立てや整形も楽ちん。

Pandocは出力形式が豊富なので問題ない。
最近のドキュメント生成ツールは、epub出力がデフォルトみたい。
epub出力できれば、スマフォで簡単に読めるし、通勤電車や待ち時間のような隙間時間に、本を広げる場所も必要なく気軽に読めるのが良い。

【追記】
本当は、Sphinxを使いこなしたかったが、Windowsとはとても相性が悪い。
PythonやSphinxはインストールできるものの、PDF変換ライブラリrst2pdfやWord出力ライブラリのインストールにいつも失敗する。

おそらくWindowsでPythonを動かそうというのが間違っている気がする。
やはりプログラミングをバリバリこなしたいならば、Unixが良いのだろう。

最近思うのは、Windowsでプログラミングしづらいこと。
RubyやPython、Java、Perlなどのプログラミング言語、GitやMercurial、Subersionのようなバージョン管理ツールはOSにデフォルトで入っていて欲しい。
MicrosoftはOfficeにこだわりすぎて、時代に遅れ始めている気がする。

Microsoft決算、上場後初の赤字 aQuantive買収の営業権減損で - ITmedia ニュースというニュースはIT業界ではほとんど話題にもならなかったが、僕にとっては衝撃的だった。
実際、Microsoftは、AppleやGoogleに比べるとスマートフォン開発に乗り遅れていて、ポストPCをようやく追い駆け始めている。

|

« RedmineとTracの機能比較part3 | トップページ | ソフトウェア構成管理はチケット駆動開発がサポートする »

ソフトウェア」カテゴリの記事

コメント

ありがとうございます。大変役にたちました。

HTMLなどは良いのですが、pandoc 1.9.4.2 on windows 7 で日本語を rtf へ変換すると文字化けします。解決法をご存知でしたらご教示頂きたく。

投稿: Nat | 2012/12/06 13:49

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« RedmineとTracの機能比較part3 | トップページ | ソフトウェア構成管理はチケット駆動開発がサポートする »