なぜ俺たちはこんなことをしなければならないのか
苦しみ
はじめに Word があった
Word は客と共にあった
Word は神であった
.docx 自体はただの zip ファイルで、解凍すれば xml 等が得られるのだが、それらは解読しがたく、変更差分の管理などは苦しみがある
git のドキュメントでも同じ苦しみについて言及されている
8.2 Git のカスタマイズ - Git の属性
ここでは git の textconv が用いられている
textconv を使うと、生ファイルではなく、それらを指定のコマンドに与えた結果(として出力されるテキスト)を diff に渡することができる
そこで、docx2txt という.docxをテキスト変換するスクリプトを textconv に定義することでテキストの差分を得ている
Mac ならば、標準の textutil を使い同様の事ができるだろう
これらによって差分を得ることはできるものの、プレーンなテキストで示される差分とドキュメント自体とを紐付ける苦しみは続く
啓示
pandoc に Docx reader が加わったことで、さらなる救いの道が示された
救済
pandoc はマルチプラットフォームなドキュメントフォーマット変換ツールであり、Windows用の.msiインストーラまで提供されている
そして、 .docx をインプットとして markdown をアウトプットできる
これによりプレーンなテキストよりは幾分まともな差分を得ることができる
*.docx diff=pandoc
[diff "pandoc"]
textconv=pandoc --to=markdown
prompt = false
[alias]
wdiff = diff --word-diff=color --unified=1
git wdiff 糞糞.docx
pandocによる変換では、今のところ(pandoc 1.19.1)図形は無視され、画像は連番の参照情報が残されるだけだが、見出し、リスト、表等は生存することができる
以上、よろしくお願いいたします