#
# == 擬似ターゲット ==
# - tex-clean: TeX中間ファイル(auxなど)を削除。ターゲットに.dviが含まれていないときは.dviファイルを削除
-# - xbb-clean: バウンディング情報ファイル(.xbb)を削除
+# - tex-xbb-clean: バウンディング情報ファイル(.xbb)を削除
# - tex-distclean: TeX中間ファイル、バウンディング情報ファイル、ターゲットファイル(PDF、.dvi)を削除
#
# === Makefile -- sample ===
#
# include latex.mk
-#debug
-#SHELL = /bin/sh -x
+# シェルスクリプトをデバッグするときは、DEBUGSH変数を設定してmakeを実行する
+# 例: DEBUGSH=1 make
+ifdef DEBUGSH
+ SHELL := /bin/sh -x
+endif
-.PHONY: tex-warning tex-xbb tex-clean tex-distclean
+.PHONY: tex-warn tex-xbb tex-clean tex-distclean
# シェルコマンド
CAT := cat
$(shell \
$(SED) -e '/^\s*%/d' -e 's/\([^\]\)\s*%.*/\1/g' $(BASE).tex $(TEXFILES) | \
$(SED) -e '/\\begin{verbatim}/,/\\end{verbatim}/d' | \
- $(SED) -n -e 's/\\includegraphics\(\[[^]]*\]\)\{0,1\}{[^}]*}/&\n/pg' | \
- $(SED) -n -e 's/.*{\([^}]*\)}$$/\1/p' \
+ $(SED) -e 's/\\verb|[^|]*|//g' | \
+ $(SED) -e 's/}/}%/g' | $(SED) -e 'y/}%/}\n/' | \
+ $(SED) -n -e 's/.*\\includegraphics\(\[[^]]*\]\)\{0,1\}{\([^}]*\)}$$/\2/pg' \
) \
$(filter $(addprefix %,$(GRAPHICSEXT)),$(INPUTFILES)) \
-))
+ ))
# そのほかの読み込みファイル
OTHERFILES = \
BIBDBre = $(eval BIBDB := \
$(addsuffix .bib,$(basename $(sort $(shell \
- $(SED) -e '/^\s*%/d' -e 's/\([^\]\)\s*%.*/\1/g' $(BASE).tex $(TEXFILES) | \
- $(SED) -e '/\\begin{verbatim}/,/\\end{verbatim}/d' | \
- $(SED) -n -e 's/\\bibliography\(\[[^]]*\]\)\{0,1\}{[^}]*}/&\n/pg' | \
- $(SED) -n -e 's/.*{\([^}]*\)}$$/\1/p' | \
- $(SED) -e 's/,/ /g' \
+ $(SED) -e '/^\s*%/d' -e 's/\([^\]\)\s*%.*/\1/g' $(BASE).tex $(TEXFILES) | \
+ $(SED) -e '/\\begin{verbatim}/,/\\end{verbatim}/d' | \
+ $(SED) -e 's/}/}%/g' | $(SED) -e 'y/}%/}\n/' | \
+ $(SED) -n -e 's/.*\\bibliography\(\[[^]]*\]\)\{0,1\}{\([^}]*\)}$$/\2/pg' | \
+ $(SED) -e 's/,/ /g' \
)))))
# LaTeX処理(コンパイル)
# DVI -> PDF
# 出力結果は.logファイルへ出力
DVIPDFCMD = $(DVIPDFMX) $(DVIPDFMXFLAG) $(BASE).dvi
-COMPILE.dvi = $(ECHO) $(DVIPDFCMD); $(DVIPDFCMD) >>$(BASE).log 2>&1 || ($(SED) -n -e '/^Output written on toc_hyperref.dvi/,$$p' $(BASE).log; exit 1)
+COMPILE.dvi = \
+ $(ECHO) $(DVIPDFCMD); $(DVIPDFCMD) >>$(BASE).log 2>&1 || \
+ ($(SED) -n -e '/^Output written on toc_hyperref.dvi/,$$p' $(BASE).log; exit 1)
# 索引中間ファイル(.ind)作成
MENDEXCMD = $(MENDEX) $(MENDEXFLAG) $(BASE).idx
%.bbl_prev: %.bbl
@$(CMPPREV)
-# hyperref中間ファイル作成
-%.out: %.tex
- @$(MAKE) -s $(BASE).aux
+######################################################################
+# バウンディング情報ファイルを生成するパターンルール
+######################################################################
+%.xbb: %.pdf
+ $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
-%.out_prev: %.out
- @$(CMPPREV)
+%.xbb: %.jpeg
+ $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
+
+%.xbb: %.jpg
+ $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
+
+%.xbb: %.png
+ $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
+
+%.xbb: %.bmp
+ $(EXTRACTBB) $(EXTRACTBBFLAGS) $<
+
+######################################################################
+# ターゲット
+######################################################################
+
+# 警告
+tex-warn:
+ @$(ECHO) "check current directory, or set TEXTARGET in Makefile."
+
+# すべての画像ファイルに対してextractbbを実行
+tex-xbb:
+ $(MAKE) -s $(addsuffix .xbb,$(basename $(wildcard $(addprefix *,$(GRAPHICSEXT)))))
-# tex-cleanターゲット
+# 中間ファイルの削除
tex-clean:
- $(RM) $(ALL_INTERFILES)
+ $(RM) $(ALLINTERFILES)
+ $(RM) -r $(FLSDIR)
ifeq (,$(filter %.dvi,$(TEXTARGETS)))
$(RM) *.dvi
endif
-# xbb-cleanターゲット
-xbb-clean:
+# .xbbファイルの削除
+tex-xbb-clean:
$(RM) *.xbb
-# tex-distcleanターゲット
-tex-distclean: tex-clean xbb-clean
+# 生成されたすべてのファイルの削除
+tex-distclean: tex-clean tex-xbb-clean
ifneq (,$(filter %.dvi,$(TEXTARGETS)))
$(RM) *.dvi
endif