latexdiffを日本語LaTeX文書でうまく扱えるようにする
今,後輩の卒論を添削しているのですが,LaTeX文書をきれいに比較(diff)してくれるようなものを探してたら, latexdiff という便利ツールを見つけました.
Pascal Junod » LaTeXdiff によると,こんな感じで綺麗にdiffできるようです.
- 赤字:新しい原稿で消した箇所
- 青字:新しい原稿で追加した箇所
インストール
私はMacでTeX Live 2012(MacTeX - TeX Users Group)を入れていたせいか,いつの間にかlatexdiffが入っていました.
必要ならソースからコンパイルもできるそうです.手順は以下を参照.
日本語LaTeX文書に対応させる
英文LaTeX文書であれば,以下の要領でいけると思います.
$ latexdiff input1.tex input2.tex > output.tex
$ platex output.tex
$ platex output.tex
$ platex output.tex
$ dvipdfmx output.dvi
ただし,日本語LaTeX文書だとUnicodeのNFD/NFC(濁点などを分離する・しない)の問題で, 余計なところまで差分と見なされてしまう場合があります.
参考:紹介マニアどらふと版: Mac OS X におけるファイル名に関するメモ(NFC, NFD等)
そこで,この問題を解決しつつlatexdiffを便利に使えるようにするシェルスクリプトを作りました.
まず,iconvをインストールしてください.
MacならHomebrew, Macportsなどで,Linuxならapt-getやyumなどでsearchすれば見つかると思います.
Homebrewには無いようです.無い場合はソースからコンパイルしてください.申し訳ございません.
次に,gistに置いてあるスクリプトをjlatexdiffという名前で保存し,PATHの通っているところに放り込んでください(私は~/binに入れています).
私はlatexmkを使っているのでこれがデフォルトですが, 使っていない人はスクリプトのplatex部分をコメントアウトして使ってください.
また,うちで使っているLaTeXはUTF-8を受け付ける仕様です. 他の文字コード用のを使っている人は,iconvを使って適宜スクリプトをいじってください.
使い方は以下の通りです.
$ jlatexdiff [old file name].tex [new file name].tex
不具合があれば,ご報告いただけると幸いです. なお,このスクリプトは以下のサイトを参考にしました.
latexdiffで幸せな添削ライフを!
おまけ: latexmkの簡単な紹介
latexmk は,
- めんどくさい複数回コンパイルを自動的にやってくれる
- texファイルから一気にpdfまで作ってくれる
という神ツールです.余裕がある人は,設定すると幸せになれます.
参考: