読者です 読者をやめる 読者になる 読者になる

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

最新版

自動コンパイルをくっつけて新しく書きました。 ksknw.hatenablog.com

はじめに

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

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

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

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

latexdiff

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

サイトはこちら 。 普通にapt-getからインストールできた。 こちら を参考にして、日本語に対応する必要がある。

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

before.tex

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

\end{document}

after.tex

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

\end{document}

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

$ latexdiff -e ISO-2022-JP before.tex after.tex > diff.tex

文字コードnkf –guess とかで調べる。(この機会にutf-8に統一したほうがいいかなとおもった。) ちなみに指定しないと、日本語が文字化けしてコンパイルできなかった。

コンパイルするとこんな感じのPDFファイルができる。便利。 f:id:ksknw:20150725224928p:plain

gitdiffと連携

このままでも使えなくはないけど、変更前のファイルを残しておかないといけない。 めんどくさいし、なによりださい。

もともとgit使って管理しているなら、前のコミットをlatexdiffの入力として使える。 以下のサイトを参考にした。 https://wiki.math.cmu.edu/iki/wiki/tips/20140301-git-latexdiff.html

.gitconfigに以下を書く。

[alias]
    wdiff = diff --color-words --ignore-all-space
    ldiff = difftool -y -t latex

[difftool.latex]
    cmd = latexdiff -e ISO-2022-JP "$LOCAL" "$REMOTE"

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

git ldiff HEAD~1 > diff.tex

f:id:ksknw:20150725224931p:plain

無事、変更点の色が変わった。

追記

latexdiff-gitというコマンドがあること気づいた。これを使うと上記のように.gitconfigをいじらなくても

latexdiff-git -r -e utf8 test.tex

とすれば、差分ファイルが出力される。

まとめと今後

TeXファイルにおいて、変更部分をわかりやすくするために、latexdiffとgitを使う方法を試した。 今後の課題は以下。

普通は変わらないと思うので、今は気にしていないけど、以下のようにすればいいような気がする。

cmd = latexdiff -e `nkf --guress "$LOCAL"` "$LOCAL" "$REMOTE"
  • 現状の状態では、TeXファイル以外もlatexdiffされて大変なことになるので、どうにかしないといけない。

ここ の下の方に普通に書いてあるのでやる。

  • 英語では1単語の単位で変更点が表示されるのに対して、日本語だと句読点単位になってしまう。

こちら で日本語でも、それっぽくするやつの話をしている。 そのうち導入するつもり。

参考にしたサイト

CTAN Comprehensive TEX Archive Network

Gautam Iyer's Wiki.

Quickhack Diary