git + latexdiff でTeXの原稿を添削してもらいやすくする。

(latexdiffのバージョンが古かったりで微妙だったので書き直した 2018年3月)

はじめに

論文や報告書で,TeXの文章を人に添削してもらう機会は多い. それなりに長い文章を添削してもらうとき,前回の添削からどこをどう訂正したのかわからないと, 何度も読まないといけないだろうし,申し訳ない.

自分が訂正した部分をわかりやすくするために,

などがあると思うが,どれも手動でやらなければならないので,めんどくさい. 画期的なソリューションが必要である.

探してみるとlatexdiffというのがあり,gitから呼ぶと便利らしいので,使ってみる.

latexdiff

latexdiffは2つのTeXファイルの差分をTeXファイルで出力してくれるアプリケーション.

サイトはこちら . 普通にapt-getからインストールできた.

$ sudo apt-get install latexdiff
$ latexdiff --version
Latexmk, John Collins, 1 January 2015. Version 4.41

とりあえず,以下のTeXファイルを適当に作る.

before.tex

\documentclass{jarticle}
\begin{document}
消したところは赤で表示される.

\end{document}

after.tex

\documentclass{jarticle}
\begin{document}
追加したところは青で表示される.

\end{document}

あとは以下のコマンドを叩く.

$ latexdiff -e utf8 -t CFONT before.tex after.tex > diff.tex

文字コードnkf –guess とかで調べる. ちなみに指定しないと,日本語が文字化けしてコンパイルできなかった.

コンパイルするとこんな感じのPDFファイルができる.便利.

f:id:ksknw:20180314221745p:plain

latexdiff-git

このままでも使えなくはないけど,変更前のファイルを残しておかないといけない. めんどくさいし,なによりださい. もともとgit使って管理しているなら,前のコミットをlatexdiffの入力として使える.

$ latexdiff-git -r -t CFONT -e utf8 test.tex

とすれば,差分ファイルが出力される.

直前以外のコミットと現在のファイルの差分を出力したいときは

$ latexdiff-git -r HEAD~1 -e utf8 -t CFONT main.tex

などでリビジョンを指定することもできる.

複数ファイルにまたがるとき

ここまでのやり方だと,inputのようなコマンドを使用しているときに,うまく差分ファイルを生成することができない. こちらによると,flattenというオプションを指定すればいいらしい.

以下のようなファイルで実際にやってみると,ちゃんとdiffファイルが生成された.

$ latexdiff -e utf8 --flatten main.tex main2.tex > diff.tex
\documentclass{jarticle}
\begin{document}
\input{before.tex}

\end{document}

参考にしたサイト