-# .texファイル
-TEXFILE = $(addsuffix .tex,$(BASE))
-
-# .auxファイル
-AUXFILE = $(addsuffix .aux,$(BASE))
-# .aux_prevファイル
-AUXFILE_PREV = $(addsuffix .aux_prev,$(BASE))
-
-# .dviファイル
-DVIFILE = $(addsuffix .dvi,$(BASE))
-
-# .dファイル
-DFILE = $(addsuffix .d,$(BASE))
-
-# .logファイル
-LOGFILE = $(addsuffix .log,$(BASE))
-
-# .tocファイル
-TOCFILE = $(addsuffix .toc,$(BASE))
-# .toc_prevファイル。.tocファイルのコピー
-TOCFILE_PREV = $(addsuffix .toc_prev,$(BASE))
-
-# .lofファイル
-LOFFILE = $(addsuffix .lof,$(BASE))
-# .lof_prevファイル。.lofファイルのコピー
-LOFFILE_PREV = $(addsuffix .lof_prev,$(BASE))
-
-# .lotファイル
-LOTFILE = $(addsuffix .lot,$(BASE))
-# .lot_prevファイル。.lotファイルのコピー
-LOTFILE_PREV = $(addsuffix .lot_prev,$(BASE))
-
-# .idxファイル
-IDXFILE = $(addsuffix .idx,$(BASE))
-# .idx_prevファイル。.idxファイルのコピー
-IDXFILE_PREV = $(addsuffix .idx_prev,$(BASE))
-
-# .indファイル
-INDFILE = $(addsuffix .ind,$(BASE))
-# .ind_prevファイル。.indファイルのコピー
-INDFILE_PREV = $(addsuffix .ind_prev,$(BASE))
-
-# .ilgファイル
-ILGFILE = $(addsuffix .ilg,$(BASE))
-
-# .bblファイル
-BBLFILE = $(addsuffix .bbl,$(BASE))
-# .bbl_prevファイル。.bblファイルのコピー
-BBLFILE_PREV = $(addsuffix .bbl_prev,$(BASE))
-
-# .blgファイル
-BLGFILE = $(addsuffix .blg,$(BASE))
-
-# .outファイル
-OUTFILE = $(addsuffix .out,$(BASE))
-# .out_prevファイル。.outファイルのコピー
-OUTFILE_PREV = $(addsuffix .out_prev,$(BASE))
-
-INTERFILES = $(strip \
- $(if $(toc),$(TOCFILE)) \
- $(if $(lof),$(LOFFILE)) \
- $(if $(lot),$(LOTFILE)) \
- $(if $(makeindex),$(INDFILE)) \
- $(if $(bibdb),$(BBLFILE)) \
- $(if $(hyperref),$(OUTFILE)) \
- )
+# .flsファイルから、INPUTファイルを取得。ただし、$TEXMFDISTのファイルを除く
+# 取得は、1回のmake実行につき1回だけ行われる
+INPUTFILES = $(INPUTFILESre)
+
+INPUTFILESre = $(eval INPUTFILES := \
+ $(sort $(filter-out $(BASE).tex $(BASE).aux, $(shell \
+ $(SED) -n -e 's/^INPUT \(.\{1,\}\)/\1/p' $(BASE).fls | \
+ $(GREP) -v `$(KPSEWHICH) -expand-var '$$TEXMFROOT'` \
+ ))))
+
+# .flsファイルから、OUTPUTファイルを取得。ただし、$TEXMFDISTのファイルを除く
+# 取得は、1回のmake実行につき1回だけ行われる
+OUTPUTFILES = $(OUTFILESre)
+
+OUTFILESre = $(eval OUTPUTFILES := \
+ $(sort $(filter-out $(BASE).aux $(BASE).dvi $(BASE).log,$(shell \
+ $(SED) -n -e 's/^OUTPUT \(.\{1,\}\)/\1/p' $(BASE).fls | \
+ $(GREP) -v `$(KPSEWHICH) -expand-var '$$TEXMFROOT'` \
+ ))))
+
+# $(BASE).texで読み込まれる中間ファイルを$(BASE).flsから取得する
+# .idxは、.indへ置換
+INTERFILES = \
+ $(sort $(subst .idx,.ind, \
+ $(filter $(addprefix $(BASE),$(TEX_INT) $(IND_INT) $(BIB_INT)),$(INPUTFILES) $(OUTPUTFILES)) \
+ ))