Pandocでテキストファイルからドキュメント生成
以前から、テキストファイルからWord、PDF、epub出力するツールを探していた。
Haskellで作られたツールPandocでようやく意図できたものが出力できたのでメモ。
【元ネタ】
『ソフトウェアの基礎』のePub版を公開しました。 - みずぴー日記
【インストール】
Windowsでは、ワンクリックインストーラーを使えば、HaskellのGHCを入れなくてもツールを導入できる。
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をようやく追い駆け始めている。
| 固定リンク
「ソフトウェア」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- 実践した後に勉強するのがエンジニアの本来の道(2022.01.09)
コメント
ありがとうございます。大変役にたちました。
HTMLなどは良いのですが、pandoc 1.9.4.2 on windows 7 で日本語を rtf へ変換すると文字化けします。解決法をご存知でしたらご教示頂きたく。
投稿: Nat | 2012/12/06 13:49