From: j8takagi Date: Thu, 5 Dec 2013 02:49:02 +0000 (+0900) Subject: .dファイル作成時に遅延変数が正しく評価されない問題を修正 X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;ds=inline;h=4fbade4507b1e801145df318226ec0ce4301e280;p=makefiles.git .dファイル作成時に遅延変数が正しく評価されない問題を修正 --- diff --git a/latex_mk/latex.mk b/latex_mk/latex.mk index f157113..b8c069a 100644 --- a/latex_mk/latex.mk +++ b/latex_mk/latex.mk @@ -80,10 +80,10 @@ LATEXINTEXT := .bbl .glo .idx .ind .lof .lot .out .toc # .blg: BiBTeXログ LOGEXT := .log .ilg .blg -ALLINTERFILES = $(addprefix *,.aux $(LATEXINTEXT) $(LOGEXT) .fls .d .*_prev) +ALLINTEXT := .aux .dvi $(LATEXINTEXT) $(LOGEXT) .fls .d .*_prev # make完了後、中間ファイルを残す -.SECONDARY: $(wildcard ALLINTERFILES) +.SECONDARY: $(foreach t,$(TEXTARGETS),$(addprefix $(basename $t),$(ALLINTEXT))) # ファイル名から拡張子を除いた部分 BASE = $(basename $<) @@ -110,14 +110,14 @@ OUTFILESre = $(eval OUTPUTFILES := \ # $(BASE).texで読み込まれる中間ファイルを$(BASE).flsから取得する # .idxは、.indへ置換 -LATEXINTERFILES = \ +LATEXINTFILES = \ $(sort $(subst .idx,.ind, \ $(filter $(addprefix $(BASE),$(LATEXINTEXT)),$(INPUTFILES) $(OUTPUTFILES)) \ )) -LATEXINTERFILES_PREV = $(addsuffix _prev,$(LATEXINTERFILES)) +LATEXINTFILES_PREV = $(addsuffix _prev,$(LATEXINTFILES)) -# TeXファイル - .tex +# 分割され、\includeや\inputで読み込まれるTeXファイル - .tex TEXFILES = $(filter %.tex,$(INPUTFILES)) # 対応する画像ファイルの拡張子 @@ -139,8 +139,7 @@ GRAPHICFILESre = $(eval GRAPHICFILES := \ )) # そのほかの読み込みファイル -OTHERFILES = \ - $(sort $(filter-out %.aux $(LATEXINTERFILES) $(TEXFILES) $(GRAPHICFILES),$(INPUTFILES))) +OTHERFILES = $(sort $(filter-out %.aux $(LATEXINTFILES) $(TEXFILES) $(GRAPHICFILES),$(INPUTFILES))) # \bibliography命令で読み込まれる文献データベースファイルをTeXファイルから検索する BIBDB = $(BIBDBre) @@ -182,7 +181,7 @@ COMPILE.dvi = \ ($(SED) -n -e '/^Output written on toc_hyperref.dvi/,$$p' $(BASE).log; exit 1) # ターゲットファイルと必須ファイルを比較し、内容が異なる場合はターゲットファイルの内容を必須ファイルに置き換える -CMPPREV = $(CMP) $@ $< || $(CP) -p -v $< $@ +CMPPREV = $(CMP) $@ $< && $(ECHO) '$@ is up to date.' || $(CP) -p -v $< $@ ###################################################################### # .dファイルの生成と読み込み @@ -205,20 +204,26 @@ GENERETE.fls = \ # 依存関係を.dファイルに書き出す %.d: %.fls + # 変数の展開 + @$(ECHO) "extract LATEXINTFILES:$(LATEXINTFILES) TEXFILES:$(TEXFILES) GRAPHICFILES:$(GRAPHICFILES) BIBDB:$(BIBDB)" # .dファイルの依存関係 @$(ECHO) '$(BASE).d: $(BASE).tex $(BASE).fls' >$@ + # 中間ファイルの依存関係 + $(if $(sort $(LATEXINTFILES) $(BIBDB)),@( \ + $(ECHO); \ + $(ECHO) '# LaTeX Intermediate Files'; \ + $(ECHO) '$(BASE).dvi:: $(sort $(LATEXINTFILES_PREV) $(if $(BIBDB),$(BASE).bbl_prev))'; \ + $(ECHO) ' @$$(COMPILE.tex)'; \ + $(ECHO); \ + $(ECHO) '$(BASE).dvi:: $(BASE).aux'; \ + $(ECHO) ' @$$(COMPILES.tex)'; \ + ) >>$@) # \includeまたは\input命令で読み込まれるTeXファイルの依存関係 $(if $(TEXFILES),@( \ $(ECHO); \ $(ECHO) '# Files called from \include or \input - .tex'; \ $(ECHO) '$(BASE).aux: $(TEXFILES)'; \ ) >>$@) - # そのほかのファイル(TEXMFROOT以外にあるスタイルファイルなど)の依存関係 - $(if $(OTHERFILES),@( \ - $(ECHO); \ - $(ECHO) '# Other files'; \ - $(ECHO) '$(BASE).aux: $(OTHERFILES)'; \ - ) >>$@) # 画像ファイルの依存関係 $(if $(GRAPHICFILES),@( \ $(ECHO); \ @@ -236,15 +241,11 @@ GENERETE.fls = \ $(ECHO) '# Bibliography files: .aux, BIBDB -> .bbl -> .div'; \ $(ECHO) '$(BASE).bbl: $(BIBDB) $(BASE).tex'; \ ) >>$@) - # 中間ファイルの依存関係 - $(if $(sort $(LATEXINTERFILES) $(BIBDB)),@( \ - $(ECHO); \ - $(ECHO) '# LaTeX Intermediate Files'; \ - $(ECHO) '$(BASE).dvi:: $(sort $(LATEXINTERFILES_PREV) $(if $(BIBDB),$(BASE).bbl_prev))'; \ - $(ECHO) ' @$$(COMPILE.tex)'; \ + # そのほかのファイル(TEXMFROOT以外にあるスタイルファイルなど)の依存関係 + $(if $(OTHERFILES),@( \ $(ECHO); \ - $(ECHO) '$(BASE).dvi:: $(BASE).aux'; \ - $(ECHO) ' @$$(COMPILES.tex)'; \ + $(ECHO) '# Other files'; \ + $(ECHO) '$(BASE).aux: $(OTHERFILES)'; \ ) >>$@) @$(ECHO) '$@ is generated by scanning $(BASE).tex and $(BASE).fls.' @@ -387,7 +388,7 @@ tex-xbb: # 中間ファイルの削除 tex-clean: - $(RM) $(ALLINTERFILES) + $(RM) $(addprefix *,$(ALLINTEXT)) $(RM) -r $(FLSDIR) ifeq (,$(filter %.dvi,$(TEXTARGETS))) $(RM) *.dvi