この記事のやつはもうやってない
最近はlatexmkで自動コンパイルして,査読をお願いするときだけlatexdiffを使って差分ファイルを作っている
デモ
これがぼくのかんがえたさいきょうのてふかんきょうだ。
概要
omakeでディレクトリの変更を監視して、TeXファイルを自動コンパイルする。 コンパイル時にlatexdiff-gitで前回のコミットとの差分を出力し、それもコンパイルする。
はじめに
最近周りでTeXを書いている人があまりいない。Word派の主張を聞いているとどうもコンパイルがイケてないらしい。 実際、TeXを書いているときにいちいちmakeとか叩くのは正直だるい。 (コマンドとか無理という主張はどうしようもないので無視した)
探しているとこんな最高の記事を見つけた。 導入するついでに以前書いたものを合体させて、 自動で本体と差分のpdfを出力するようにする。
- OMake 0.9.8.5
- latexdiff 1.0.2
omake
omakeについては、こちらを参考にした。 omakeはなんかよくわからんけど、makeの代わりに使えるもの。 まだ全く調べてないけど、今回使ったディレクトリ監視だけでなく他にも色々できそう。
aptでインストールする。 famというのはディレクトリの監視に必要らしい。
$ sudo apt-get install omake fam
$ omake --install
とすると、OMakefileとOmakerootというファイルが生成される。
latexdiff
こちらを参考にして日本語に対応する必要がある。
latexdiffについては以前こんなものを書いた。 以前の記事では以下のようなコマンドを叩いて差分ファイルを生成していたが、
git ldiff HEAD~1 > diff.tex
色々いじっているうちに、 latexdiff-gitというコマンドが用意されていることに気づいた。 このコマンドを使うと以下のように簡単に前回のコミットとの差分をTeX形式で出力できる。
latexdiff-git -r -e utf8 test.tex
合体させる
こちらと こちらの記事にあるOMakefileにlatexdiffの部分を追記して、以下のようなOmakefileを作った。
TARGET = test DIFF = test-diff IMAGE_DIR = figs LATEX = platex BIBTEX = pbibtex DVIPDFM = dvipdfmx LATEXDIFF = latexdiff-git DIFFFLAGS = -r -e utf8 --force # Bounding Box生成コマンド EBB = extractbb # グロブ展開に失敗したときに空の文字列を返すようにする GLOB_OPTIONS = i # Bounding Boxの生成ルール .SUBDIRS: $(IMAGE_DIR) %.xbb: %.png $(EBB) $< %.xbb: %.jpg $(EBB) $< %.xbb: %.pdf $(EBB) $< TEX_FILES = $(glob *.tex */*.tex) BIB_FILES = $(glob *.bib) EPS_IMAGE_FILES = $(glob $(IMAGE_DIR)/*.eps) OTHER_IMAGE_FILES = $(glob $(IMAGE_DIR)/*.png $(IMAGE_DIR)/*.jpg $(IMAGE_DIR)/*.pdf) IMAGE_FILES = $(EPS_IMAGE_FILES) $(OTHER_IMAGE_FILES) XBB_FILES = $(addsuffix .xbb, $(removesuffix $(OTHER_IMAGE_FILES))) # コンパイルに必要なファイル TEXDEPS[] = $(TEX_FILES) $(BIB_FILES) $(IMAGE_FILES) $(XBB_FILES) LaTeXDocument($(TARGET), $(TARGET)) LaTeXDocument($(DIFF), $(DIFF)) .DEFAULT: $(TARGET).pdf $(DIFF).pdf $(DIFF).tex:$(TARGET).tex $(LATEXDIFF) $(DIFFFLAGS) $< .PHONY: clean clean: rm $(glob *.toc *.log *.pdf *.dvi *.fls *.aux *.maf *.mtc *.bbl *.blg) $(XBB_FILES)
Emacsユーザーなら
after-save-hook にmakeを設定するだけでもいいじゃないかという気もする。