Gitで論文を管理していて、先生のチェックを反映して修正したものを見てもらう時、その差分がわかるようにしたいことがあると思います。下記ページを参考にlatexdiff-vcを実行したのですが、\input{}で複数ファイルを使用している場合に必要な、–flattenコマンドが実行できませんでした。(現在原因不明、windows固有の問題?)
Gitで管理しているLaTeXのdiffをpdfで見る(TeXLive2015版)
問題のエラー
実行したコマンド(–flattenにkeep-intermediateを指定しています)
latexdiff-vc -e utf8 --git --flatten=keep-intermediate --force -d diff -r HEAD main.tex
実行結果(エラー内容)
Working on main.tex
Checking out old dir into: ./latexdiff-vc-HEAD (rev: HEAD)
指定されたパスが見つかりません。
Something went wrong in executing: git archive --format=tar HEAD | ( cd ./latexdiff-vc-HEAD ; tar -xf -) at c:/pf/w32tex/share/texmf-dist/scripts/latexdiff/latexdiff-vc line 603.
エラー内容を見ると、git archive –format=tar HEAD | ( cd ./latexdiff-vc-HEAD ; tar -xf -)が実行できていないようですが、本来は作成されたlatexdiff-vc-HEADのディレクトリにHEADのコミット分がtar.gz形式で保存されるはずです。
代替案方針
ここはどうにもできなかったため、次のような方針で差分のtexファイルを生成したいと思います。
- git archive –format=tar {commitID} で参照したいコミットをtarで保存し、解凍
- 比較したいcommitIDそれぞれで1を実行し、
latexdiff --flatten
で\include
したファイル込みで2つのコミット間の差分を作成する - 差分をコンパイル
batファイルを作成
論文本文はmain.texとします
@echo off
echo difference between %1 (old) and %2 (new)
@REM 一時保存フォルダを作成し、各コミットをtar形式でアーカイブ
mkdir %1
mkdir %2
git archive %1 --format=tar > %1\%1.tar.gz
git archive %2 --format=tar > %2\%2.tar.gz
@REM 各コミットのアーカイブを解凍
tar -xzvf %1\%1.tar.gz -C %1
tar -xzvf %2\%2.tar.gz -C %2
@REM 差分texファイルを作成
latexdiff --flatten %1\main.tex %2\main.tex > diff.tex
@REM 一時保存フォルダを削除
rd /s /q %1
rd /s /q %2
実行方法
generate_latexdiff.bat {commit ID old} {commit ID new}
あとは生成されるdiff.texをコンパイルするだけで、差分がわかる形式のpdfが生成できます。このとき、diff.texの生成先をmain.texと別にする場合は画像やbibファイルを用意しておく必要があります。
コメント