TeX ファイルのコンパイルの効率化 — make の利用
since Dec. 5 2003
 

 

   

UNIX ワールドではプログラム開発において,ソースから効率的,確実にターゲットを生成するために Make を利用するのは周知のとおりである.Make は目的とするファイル (ターゲット) の構築に際して依存するファイルのタイムスタンプを調べて,依存ファイルに変更が発生した場合,あらかじめ決めておいた手順を自動的に実行することによりターゲットを作る.TeX ファイルのコンパイル,関連ファイルの生成においても,この機能を活用することにより,作業負担を軽減することが可能である.

私は TeX 文書用の Makefile (後述) を作成して次のようなレシピを設定している.

  目的   コマンド
  TeX 文書のコンパイル (DVI ファイルの生成)   make
  PDF ファイルの生成   make pdf
  PS ファイルの生成   make ps
  バックアップの作成   make back
  アーカイブ・ファイルの生成   make tgz
  アーカイブ・ファイルの書庫への登録 (SI)   make SI

文書,スタイル・ファイルに変更が発生した場合にのみ pLaTeX のコンパイルが走る.最新の PDF が必要な場合は,現状の PDF より新しい DVI ファイルがあれば所定の PDF 生成ツールが実行される.等など,"make ターゲット名" とコマンドを投入すれば自動的にレシピが実行される.

次のような Makefile を作成して TeX ファイルと同じディレクトリに保存してご活用いただきたい.上表に記述した機能が利用できるはずである.下線部はユーザの作成する文書,環境に応じて修正が必要である.一部ユーザにとって不要と思われる変数も定義しているが,事情に合わせて変更いただきたい.Makefile の書式・文法の説明はここでは割愛する.

# 
#  Makefile for TeX documents compiling 
#  Isao YASUDA, Dec. 5 2003
#

#  Document definitions
DOC        = pushkin_lyubomudry      # TeX 文書の .tex 拡張子を
                                     # とった文字列を指定する
STY        = ronbun.sty wabun.sty    # スタイル・ファイルの指定

VER        = 1.0                     # プロジェクト・バージョン
TMPDIR     = /tmp                    # バックアップ用ディレクトリ
TM         = laura                   # アーカイブ(書庫)のサーバ
WWW        = /usr/local/www/data/dav # アーカイブ格納ディレクトリ

#  Programm definitions              # 実行プログラムの設定
LATEX      = /usr/local/bin/platex
DVIPS      = /usr/local/bin/dvips
DVIPDFM    = /usr/local/bin/dvipdfmx
TAR        = /usr/bin/tar
RM         = /bin/rm
SCP        = /usr/bin/scp            # 書庫サーバへのコピー用
SSH        = /usr/bin/ssh            # 書庫サーバでのシェル実行用

#  Option definitions                # Dvipdfmx 等のオプション指定
DVIPDFMOPT = -v
DVIPSOPT   = -D 720 -mode esphi -O 0mm,0mm -N0 

#  Suffixes definitions
.SUFFIXES: .tex .dvi .ps .pdf .sty

#  Recipes
.tex.dvi: $(STY)
	$(LATEX) $<
	$(LATEX) $<

.dvi.pdf:
	$(DVIPDFM) $(DVIPDFMOPT) -o $@ $<

.dvi.ps:
	$(DVIPS) $(DVIPSOPT) -o $@ $<

dvi: $(DOC).dvi

ps:  $(DOC).ps

pdf: $(DOC).pdf

all: $(DOC).pdf $(DOC).ps

back:
	$(TAR) zcvf $(TMPDIR)/$(DOC).tar.gz ./*.tex ./*.sty

clean:
	$(RM) -f *.dvi *.aux *.log *.pdf *.ps *.gz *~ *.core

tmpclean:
	$(RM) -f *.aux *.log *~ *.core

tgz: pdf tmpclean
	$(TAR) zcvf $(DOC)-$(VER).tar.gz \
	./*.tex ./*.sty ./*.pdf ./Makefile

SI: tgz
	$(SCP) $(DOC)-$(VER).tar.gz $(TM):/home/isao
	$(SSH) $(TM) sudo mv $(DOC)-$(VER).tar.gz $(WWW)
	

TeX のインデックス作成や BibTeX 文献データベースの取り込みはここには含まれないが,応用は可能である.