1 .PHONY: clean-tex distclean-tex
13 EXTRACTBB := extractbb
18 interaction ?= batchmode
26 COMPILE.tex = $(LATEX) -interaction=$(interaction) $(LATEXFLAG) $(addsuffix .tex,$(basename $<))
29 WARN_REF := 'Label(s) may have changed. Rerun to get cross-references right.'
31 # 相互参照未定義の警告。2回目以降の処理で出る場合は、参照エラー
32 WARN_UNDEFREF := 'There were undefined references.'
35 WARN_NOFILE := 'No file'
40 # logファイルに相互参照または目次ファイルなしの警告がある場合、LaTeX処理を繰り返す
41 # 2回目以降の処理で相互参照未定義の警告がある場合と、
42 # 繰り返しの回数がMAX_CNTになった場合は、警告を表示してエラー終了
45 while $(GREP) -F -e $(WARN_REF) -e $(WARN_NOFILE) $(addsuffix .log,$(basename $<)); do \
46 if test $$cnt -ge $(MAX_CNT); then \
47 $(ECHO) "LaTeX compile is over $$cnt times, but warnings exist."; \
51 if test $$cnt -eq 1 && $(GREP) -F $(WARN_UNDEFREF) $(addsuffix .log,$(basename $<)); then \
54 cnt=`expr $$cnt + 1`; \
57 # \includeコマンドで読み込まれるtexファイル
58 intex = $(addsuffix .tex,$(basename $(strip $(shell \
59 $(SED) -n -e 's/\\\(include\|input\)\(\[[^]]*\]\)\{0,1\}{[^}]*}/&\n/gp' $< | \
60 $(SED) -e 's/.*{\([^}]*\)}.*/\1/'))))
62 # \includegraphicsコマンドで読み込まれるグラフィックファイル
63 ingraphics = $(strip $(shell \
64 $(SED) -n -e 's/\\includegraphics\(\[[^]]*\]\)\{0,1\}\({[^}]*}\)/&\n/gp' $< $(intex) | \
65 $(SED) -e 's/.*{\([^}]*\)}.*/\1/'))
67 # \bibliographyコマンドで読み込まれる文献データベースファイル
68 bibdb = $(addsuffix .bib,$(basename $(strip $(shell \
69 $(SED) -n -e 's/\\bibliography\(\[[^]]*\]\)\{0,1\}{\([^}]*\)}/&\n/gp' $< $(intex) | \
70 $(SED) -e 's/.*{\([^}]*\)}.*/\1/' | \
71 $(SED) -e 's/,/ /g'))))
73 # texファイルに索引作成の指定があるか確認
74 MAKEINDEX := '\makeindex'
75 GREP-makeindex = $(GREP) -F $(MAKEINDEX) $<
79 @$(ECHO) '$@ is created by scanning $^.'
81 @(($(ECHO) '$(subst .tex,.dvi,$<) $(subst .tex,.aux,$<) $(subst .tex,.d,$<): $<'; \
83 $(ECHO) '$(subst .tex,.prev_aux,$<):') >$@)
84 # Include/Inputファイルの依存関係
87 $(ECHO) '# Include/Input Files - tex'; \
88 $(ECHO) '$(subst .tex,.dvi,$<) $(subst .tex,.aux,$<): $(intex)') >>$@)
90 $(if $(ingraphics),@( \
92 $(ECHO) '# IncludeGraphic Files - pdf, jpeg/jpg, png & xbb'; \
93 $(ECHO) '$(subst .tex,.dvi,$<) $(subst .tex,.aux,$<): $(ingraphics)'; \
95 $(ECHO) '$(subst .tex,.dvi,$<) $(subst .tex,.aux,$<): $(addsuffix .xbb,$(basename $(ingraphics)))') >>$@)
99 $(ECHO) '# Bibliography Files - bbl & bib'; \
100 $(ECHO) '$(subst .tex,.dvi,$<): $(subst .tex,.bbl,$<)'; \
102 $(ECHO) '$(subst .tex,.bbl,$<): $(bibdb)') >>$@)
104 $(if $(strip $(shell $(GREP-makeindex))),@( \
106 $(ECHO) '# MakeIndex Files - ind'; \
107 $(ECHO) '$(subst .tex,.idx,$<):'; \
109 $(ECHO) '$(subst .tex,.ind,$<):'; \
111 $(ECHO) '$(subst .tex,.dvi,$<): $(subst .tex,.ind,$<)') >>$@)
113 # 変数TARGETSで指定されたターゲットファイルに対応するdファイルをインクルード
114 # .dファイルからヘッダファイルの依存関係を取得する
115 # ターゲットに clean が含まれている場合は除く
116 ifeq (,$(filter %clean,$(MAKECMDGOALS)))
117 -include $(addsuffix .d,$(basename $(TARGETS)))
120 # 相互参照ファイル作成。dviファイルも同時に作成される
125 -$(CMP) $@ $< || $(CP) $< $@
132 # BiBTeXで文献処理するときに使用される
134 $(BIBTEX) $(BIBTEXFLAG) $(subst .prev_aux,aux,$<)
137 # dvipdfmxで図を挿入するときに使用される
138 # pdf、jpeg/jpg、pngファイルに対応
140 $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
143 $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
146 $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
149 $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
157 -$(CMP) $@ $< || $(CP) $< $@
160 $(MENDEX) $(MENDEXFLAG) $(subst .prev_idx,.idx,$<)
164 $(DVIPDFMX) $(DVIPDFMXFLAG) $<
168 $(RM) *.aux *.bbl *.blg *.idx *.ilg *.ind *.lof *.lot *.out *.toc *.xbb *.log *.d
171 tex-distclean: tex-clean
172 $(RM) $(addsuffix .dvi,$(basename $(TARGETS))) $(addsuffix .pdf,$(basename $(TARGETS)))