LoginSignup
1
1

More than 1 year has passed since last update.

git管理しているlatex原稿の差分をわかりやすく見る

Last updated at Posted at 2023-01-20

想定読者

  • LaTeX で論文を執筆している
  • コマンドラインで LaTeX のコンパイルができる
  • 基本的な git コマンドを使える
  • 論文の変更を git 管理している
  • git-latexiff コマンドがインストールされている
    • TeX Live で LaTeX 環境をインストールしていればついてくる

背景

  • 論文の修正をひと目でわかるようにしたい
    • 指導教員の修正,共著者からのコメント,査読対応など
  • Adobe Acrobat の差分作成機能は意図していない挙動が多い
    • 特に数式が多い論文は複雑になりがち
  • tex ファイルの diff を見るだけではよくわからないので pdf の組版結果を視覚的に比較したい

方法

git latexdiff <old> <new> --flatten --latexmk --tmpdirprefix <output-path> --main <main_tex_file>.tex
  • コマンドが正しく実行されると <output-path> 直下に git-latexdiff.12345のようなディレクトリが生成される
  • git-latexdiff.12345/new以下に差分をまとめたファイルが生成される
    • pdf がうまく出力されない場合は,git-latexdiff.12345/new/<main_tex_file>.texをお好みの環境でコンパイルすればよい
  • デフォルトで,削除は赤字に取り消し線,追加は青文字に下波線でハイライトされる

解説

  • <new>: 修正後の git のコミットハッシュ.省略可能.省略するとHEADが渡される.
  • <old>: 修正前の git のコミットハッシュ.
  • --flatten: <main_tex_file>.tex中の\input\includeをすべて展開する.メインファイル 1 個だけで執筆している場合は省略可
  • --latexmk: 差分結果を latexmk を使って pdf などで出力する.latexmkrcを作っていると便利.
  • --tmpdirprefix <output-path>: 作成された差分を格納するディレクトリへのパス
  • --main <main_tex_file>.tex: メインの tex ファイル名

応用

日本語の論文では上記コマンドそのままでは動かないので工夫が必要.

準備

同じディレクトリに latexmkrc を作成しておく.
例えば pLaTeX+dvipdfmx でコンパイルする場合は下記のように設定する.

latexmkrcの例
#!/usr/bin/env perl
@default_files = ("main.tex");
$latex          = 'platex -synctex=1 -halt-on-error';
$latex_silent   = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$dvipdf         = 'dvipdfmx %O -o %D %S';
$bibtex         = 'bibtex';

差分生成

さらに,--latexopt "-r latexmkrc" オプションで先ほど作成したlatexmkrcに従ってコンパイルするよう支持する.

git latexdiff <new> <old> -e utf8 -t CFONT --flatten --latexmk --latexopt "-r latexmkrc" --tmpdirprefix <output-path> --main <main_tex_file>.tex

TODO

  • 出力結果の例を画像で埋め込む
  • git のタグ名を指定して簡単に差分を取れるようにしたい
  • 差分を違う色などで表示できるようにしたい
    • 査読者 1 の対応は赤,査読者 2 の対応は緑など分けたい

もし良い方法をご存じの方がいればコメントで共有いただきたいです :bow:


参考文献

  1. git-latexdiff / Git Latexdiff · GitLab
  2. git + latexdiff で TeX の原稿を添削してもらいやすくする。 - やったことの説明
  3. Latexdiff で日本語を
  4. git で latex 管理 - Qiita
  5. latexmk の薦め - Qiita
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1