MS Wordで書かれた原稿をテキストファイルでGit管理する
MS Wordで書かれた原稿を電子書籍化する作業を行ったのですが、個人的には使い慣れたRe:VIEWで管理したいものです。
そこで、MS Wordをテキストファイル化してRe:VIEWファイルに書き換えることにしました。
docx2txtを使ってMS Wordをプレーンテキストに変換する
ワードファイルのテキストをコピペしてテキストファイルに置き換えるのは流石に面倒ですし、ヒューマンエラーも発生しそうです。
そこで、何か良い方法はないかと思って、おもむろにGoogleで『docx2txt』と検索してみると、まったく同じ名前のソフトウェアを発見することができました。
ページはややレトロですが、ツール自体はメンテナンスもされているようで、これを導入することにしました。
リポジトリ作成
まずはリポジトリの作成です。とりあえず、次のようなファイル配置をしました。
. ├── Rakefile ├── script │ ├── docx2txt.pl │ └── docx2txt.sh └── src ├── Chapter1.docx └── Chapter2.docx
そして、Rakefileには次のようなスクリプトを書きました。
require 'rake' desc 'convert ./src/*.docx to ./src/*.txt' task :docx2txt do Dir.glob('./src/*.docx') do |docx| txt = File.basename(docx).sub(/\.docx$/, '.txt') if File.exist?("./src/#{txt}") puts "#{txt} exist." sh "rm ./src/#{txt}" end sh "./script/docx2txt.sh #{docx}" end end
テキストファイルへの変換
ファイルの配置が終ったら、rake docx2txt
コマンドを実行。
$ rake docx2txt ./script/docx2txt.sh ./src/Chapter1.docx Text extracted from <./src/Chapter1.docx> is available in <./src/Chapter1.txt>. ./script/docx2txt.sh ./src/Chapter2.docx Text extracted from <./src/Chapter2.docx> is available in <./src/Chapter2.txt>.
すると、
. ├── Rakefile ├── script │ ├── docx2txt.pl │ └── docx2txt.sh └── src ├── Chapter1.docx ├── Chapter1.txt ├── Chapter2.docx └── Chapter2.txt
こんな感じで無事にテキストファイルが作成されました。
とりあえず、これをコミットしておけば、今後もしワードファイルが更新されても、差分を確認することが可能になりました。
なお、docx2txt自体はファイルを上書きしないように作られていますが、Gitで管理していれば、上書き上等なので、Rakeの中でファイルの存在を確認し、削除するようにしました。
まとめ
MS Wordをコピーして貼り付けると、記号文字がちょっとアレな感じだったのですが、docx2txtを使って変換すると、いい感じに変換してくれたので、編集作業もとても楽に行うことができました。
作業が終ってから、この記事を書くにあたって調べてみると、docx2txtを使ってgit diffで直接差分を表示するという方法を紹介している記事を見つけたりして、人によってはこれだけで十分嬉しいかと思います。
やり方は他にも色々とあるかと思いますが、今回私が実際に利用した方法を紹介してみました。
追記
d:id:zariganitosh さんにコメントで、 テキストでないファイルのdiff(差分)をとる方法 - ザリガニが見ていた...。という記事を紹介していただきました。(コメントで すいません、リンク先の方法と同じでした。未承認としておいてください。
といただいたのですが、折角なのでこちらでご紹介させていただきます。)
上でリンクした記事と根本的な手法は同じですが、Word以外のバイナリファイルをGitで差分を確認する方法が紹介されています。