From 684b918941a0b5d2a7646e66c262442e08f6166e Mon Sep 17 00:00:00 2001 From: j8takagi <j8takagi@nifty.com> Date: Sun, 10 Nov 2013 12:47:12 +0900 Subject: [PATCH] =?utf8?q?latex.mk=E3=81=A7=E3=80=81=E7=B4=A2=E5=BC=95?= =?utf8?q?=E3=82=84=E6=96=87=E7=8C=AE=E3=83=AA=E3=82=B9=E3=83=88=E3=82=92?= =?utf8?q?=E4=BD=9C=E6=88=90=E3=81=99=E3=82=8B=E3=81=A8=E3=81=8D=E3=81=AE?= =?utf8?q?=E5=8B=95=E4=BD=9C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit ç´¢å¼ä¸éãã¡ã¤ã«ï¼.indï¼ã¨æç®ãªã¹ãä¸éãã¡ã¤ã«ï¼.bblï¼ãæ´æ°ããããã¨ã¯ã TeXãã°ãã¡ã¤ã«ã«è¦åããªãã¦ãã³ã³ãã¤ã«ãå®è¡ãããã仿§å¤æ´ --- latex_mk/latex.mk | 204 +++++++++++++++++++++++++++------------------- 1 file changed, 118 insertions(+), 86 deletions(-) diff --git a/latex_mk/latex.mk b/latex_mk/latex.mk index 05b8673..bcdb34d 100644 --- a/latex_mk/latex.mk +++ b/latex_mk/latex.mk @@ -17,7 +17,7 @@ # -- æ¿å ¥ãããTeXãã¡ã¤ã«ããªãã¨ãã¯ãå¦çã䏿¢ # - \makeindexå½ä»¤ãå«ã¾ããå ´åãmendexã§ç´¢å¼ã使 # - \bibliographyå½ä»¤ãå«ã¾ããå ´åãBiBTeXã§æç®ä¸è¦§ã使 - +# # == æ¬ä¼¼ã¿ã¼ã²ãã == # - tex-clean: TeXä¸éãã¡ã¤ã«ï¼auxãªã©ï¼ãåé¤ãã¿ã¼ã²ããã«.dviãå«ã¾ãã¦ããªãã¨ãã¯.dviãã¡ã¤ã«ãåé¤ # - xbb-clean: ãã¦ã³ãã£ã³ã°æ å ±ãã¡ã¤ã«ï¼.xbbï¼ãåé¤ @@ -29,8 +29,7 @@ # all: $(TARGETS) # # include latex.mk - -.PHONY: tex-clean tex-distclean +.PHONY: warning tex-clean tex-distclean # ã·ã§ã«ã³ãã³ã CAT := cat @@ -40,6 +39,9 @@ ECHO := echo GREP := grep SED := sed +warning: + @$(ECHO) "check current directory, or set TARGET in Makefile." + # LaTeXã³ãã³ã LATEX := platex DVIPDFMX := dvipdfmx @@ -56,40 +58,55 @@ MENDEX := mendex # .toc: ç®æ¬¡ï¼\tableofcontentsï¼ç¨ # .log: ãã° TEX_INT := .aux .fls .lof .lot .out .toc .log - # ç´¢å¼ä¸éãã¡ã¤ã«ã®æ¡å¼µå # .idx: auxãã使 # .ind: idxãã使 # .ilg: ç´¢å¼ãã° IND_INT := .idx .ind .ilg - # BiBTeXä¸éãã¡ã¤ã«ã®æ¡å¼µå # .bbl: auxãã使 # .blg: BiBTeXãã° BIB_INT := .bbl .blg +# \makeindexå½ä»¤ +makeindex = $(shell $(SED) -n -e '/^.*[^\]\{0,1\}%.*\\makeindex/!s/\\makeindex/&/p' $<) + +# \bibliographyå½ä»¤ã§èªã¿è¾¼ã¾ããæç®ãã¼ã¿ãã¼ã¹ãã¡ã¤ã« +bibdb = $(addsuffix .bib,$(basename $(strip $(shell \ + $(SED) -n -e '/^.*[^\]\{0,1\}%.*\\bibliography/!s/\\bibliography\(\[[^]]*\]\)\{0,1\}{\([^}]*\)}/&\n/gp' $< $(intex) | \ + $(SED) -e 's/.*{\([^}]*\)}.*/\1/' | \ + $(SED) -e 's/,/ /g')))) + # ãã¡ã¤ã«åããæ¡å¼µåãé¤ããé¨å -FILEBASE = $(basename $<) +BASE = $(basename $<) # .texãã¡ã¤ã« -TEXFILE = $(addsuffix .tex,$(FILEBASE)) +TEXFILE = $(addsuffix .tex,$(BASE)) # .auxãã¡ã¤ã« -AUXFILE = $(addsuffix .aux,$(FILEBASE)) -# .prev_auxãã¡ã¤ã«ã.auxãã¡ã¤ã«ã®ã³ãã¼ -PREV_AUXFILE = $(addsuffix .prev_aux,$(FILEBASE)) +AUXFILE = $(addsuffix .aux,$(BASE)) +# .prev_auxãã¡ã¤ã« +PREV_AUXFILE = $(addsuffix .prev_aux,$(BASE)) # .dviãã¡ã¤ã« -DVIFILE = $(addsuffix .dvi,$(FILEBASE)) +DVIFILE = $(addsuffix .dvi,$(BASE)) # .dãã¡ã¤ã« -DFILE = $(addsuffix .d,$(FILEBASE)) +DFILE = $(addsuffix .d,$(BASE)) # .logãã¡ã¤ã« -LOGFILE = $(addsuffix .log,$(FILEBASE)) +LOGFILE = $(addsuffix .log,$(BASE)) # .idxãã¡ã¤ã« -IDXFILE = $(addsuffix .idx,$(FILEBASE)) +IDXFILE = $(addsuffix .idx,$(BASE)) # .prev_idxãã¡ã¤ã«ã.idxãã¡ã¤ã«ã®ã³ãã¼ -PREV_IDXFILE = $(addsuffix .prev_idx,$(FILEBASE)) +PREV_IDXFILE = $(addsuffix .prev_idx,$(BASE)) # .indãã¡ã¤ã« -INDFILE = $(addsuffix .ind,$(FILEBASE)) +INDFILE = $(addsuffix .ind,$(BASE)) +# .prev_indãã¡ã¤ã«ã.indãã¡ã¤ã«ã®ã³ãã¼ +PREV_INDFILE = $(addsuffix .prev_ind,$(BASE)) +# .ilgãã¡ã¤ã« +ILGFILE = $(addsuffix .ilg,$(BASE)) # .bblãã¡ã¤ã« -BBLFILE = $(addsuffix .bbl,$(FILEBASE)) +BBLFILE = $(addsuffix .bbl,$(BASE)) +# .prev_bblãã¡ã¤ã«ã.bblãã¡ã¤ã«ã®ã³ãã¼ +PREV_BBLFILE = $(addsuffix .prev_bbl,$(BASE)) +# .bblãã¡ã¤ã« +BLGFILE = $(addsuffix .blg,$(BASE)) #LaTeXãªãã·ã§ã³ LATEXFLAG ?= @@ -99,86 +116,94 @@ BIBTEXFLAG ?= MENDEXFLAG ?= # LaTeXå¦çï¼ã³ã³ãã¤ã«ï¼ -COMPILE.tex = $(LATEX) -interaction=batchmode $(LATEXFLAG) $(TEXFILE) || $(CAT) $(LOGFILE) +LATEXCMD = $(LATEX) -interaction=batchmode $(LATEXFLAG) $(TEXFILE) +COMPILE.tex = $(ECHO) $(LATEXCMD); $(LATEXCMD) >/dev/null 2>&1 || ($(CAT) $(LOGFILE); exit 1) + +# ç´¢å¼ï¼.indãã¡ã¤ã«ï¼ä½æ +MENDEXCMD = $(MENDEX) $(MENDEXFLAG) $(IDXFILE) +COMPILE.idx = $(ECHO) $(MENDEXCMD); $(MENDEXCMD) >/dev/null 2>&1 || ($(CAT) $(ILGFILE); exit 1) + +# æç®ãªã¹ãï¼.bblãã¡ã¤ã«ï¼ä½æ +BIBTEXCMD = $(BIBTEX) $(BIBTEXFLAG) $(AUXFILE) +COMPILE.bbl = $(ECHO) $(BIBTEXCMD); $(BIBTEXCMD) >/dev/null 2>&1 || ($(CAT) $(BLGFILE); exit 1) # ç¸äºåç §æªå®ç¾©ã®è¦å WARN_UNDEFREF := 'There were undefined references\.' - # èªã¿è¾¼ãã¹ãä¸éãã¡ã¤ã«ããªããã¨ã®è¦å -WARN_NOFILE = 'No file $(FILEBASE)\.[a-zA-Z0-9]*\.' +WARN_NOFILE = 'No file $(BASE)\.[a-zA-Z0-9]*\.' -# ãã°ãã¡ã¤ã«ã«è¦åãããå ´åãLaTeXå¦çãæå¤§4åç¹°ãè¿ã +# LaTeXå¦ç +# ç´¢å¼ãã¡ã¤ã«ãããå ´åã1åå¦çãã +# ãã°ãã¡ã¤ã«ã«è¦åãããå ´åãè¦åããªããªãã¾ã§æå¤§4åå¦çãã COMPILES.tex = \ - if test -s $(INDFILE); then \ - $(ECHO) "---------- for index ----------"; \ - $(COMPILE.tex); \ - fi; \ - for f in 1st 2nd 3rd final; do \ - if test -s $@ -a -s $(LOGFILE); then \ - $(GREP) -e $(WARN_UNDEFREF) -e $(WARN_NOFILE) $(LOGFILE) || exit 0; \ - fi; \ - $(ECHO) "---------- $$f try ----------"; \ - $(COMPILE.tex); \ - done + @(for f in 1st 2nd 3rd final; do \ + if test -s $@ -a -s $(LOGFILE); then \ + $(GREP) -e $(WARN_UNDEFREF) -e $(WARN_NOFILE) $(LOGFILE) || exit 0; \ + fi; \ + $(COMPILE.tex); \ + done) -# \includegraphicså½ä»¤ã§èªã¿è¾¼ã¾ããã°ã©ãã£ãã¯ãã¡ã¤ã« -ingraphics = $(strip $(shell \ - $(SED) -n -e '/^%/!s/\\includegraphics\(\[[^]]*\]\)\{0,1\}\({[^}]*}\)/&\n/gp' $< $(intex) | \ - $(SED) -e 's/.*{\([^}]*\)}.*/\1/')) +# *.*ãã¡ã¤ã«ã¨ *.prev_*ãã¡ã¤ã«ãæ¯è¼ãã*.*ãã¡ã¤ã«ãæ´æ°ããã¦ããå ´åã¯ãã®å 容ã*.prev_* ã«ã³ãã¼ãã +CMPPREV = $(CMP) $@ $< && $(ECHO) '$< is up to date.'|| $(CP) -v $< $@ # \includeã\inputå½ä»¤ã§èªã¿è¾¼ã¾ããtexãã¡ã¤ã« intex = $(addsuffix .tex,$(basename $(strip $(shell \ - $(SED) -n -e '/^%/!s/\\\(include\|input\)\(\[[^]]*\]\)\{0,1\}{[^}]*}/&\n/gp' $< | \ + $(SED) -n -e '/^.*[^\]\{0,1\}%.*\\\(include\|input\)/!s/\\\(include\|input\)\(\[[^]]*\]\)\{0,1\}{[^}]*}/&\n/gp' $< | \ $(SED) -e 's/.*{\([^}]*\)}.*/\1/')))) -# \makeindexå½ä»¤ -makeindex = $(SED) -n -e '/^%/!s/\\makeindex/&/p' $< - -# \bibliographyå½ä»¤ã§èªã¿è¾¼ã¾ããæç®ãã¼ã¿ãã¼ã¹ãã¡ã¤ã« -bibdb = $(addsuffix .bib,$(basename $(strip $(shell \ - $(SED) -n -e '/^%/!s/\\bibliography\(\[[^]]*\]\)\{0,1\}{\([^}]*\)}/&\n/gp' $< $(intex) | \ - $(SED) -e 's/.*{\([^}]*\)}.*/\1/' | \ - $(SED) -e 's/,/ /g')))) +# \includegraphicså½ä»¤ã§èªã¿è¾¼ã¾ããã°ã©ãã£ãã¯ãã¡ã¤ã« +ingraphics = $(strip $(shell \ + $(SED) -n -e '/^.*[^\]\{0,1\}%.*\\includegraphics/!s/\\includegraphics\(\[[^]]*\]\)\{0,1\}\({[^}]*}\)/&\n/gp' $< $(intex) | \ + $(SED) -e 's/.*{\([^}]*\)}.*/\1/')) # ä¾åé¢ä¿ã.dãã¡ã¤ã«ã«æ¸ãåºã %.d: %.tex @$(ECHO) '$@ is created by scanning $^.' - # texãã¡ã¤ã«ã®ä¾åé¢ä¿ - @($(ECHO) '$(AUXFILE) $(DFILE): $<'; \ +# TeXã.auxã.dviã.dãã¡ã¤ã«ã®ä¾åé¢ä¿ + @($(ECHO) '$(AUXFILE) $(DFILE): $(TEXFILE)'; \ $(ECHO); \ - $(ECHO) '$(DVIFILE): $(AUXFILE)') >$@ - # ç»åãã¡ã¤ã«ã®ä¾åé¢ä¿ - $(if $(ingraphics),@( \ - $(ECHO); \ - $(ECHO) '# IncludeGraphic Files - .pdf, .jpeg/.jpg, .png with .xbb'; \ - $(ECHO) '$(DVIFILE) $(AUXFILE): $(ingraphics)'; \ + $(ECHO) '$(PREV_AUXFILE): $(AUXFILE)'; \ $(ECHO); \ - $(ECHO) '$(DVIFILE) $(AUXFILE): $(addsuffix .xbb,$(basename $(ingraphics)))') >>$@) - # Include/Inputãã¡ã¤ã«ã®ä¾åé¢ä¿ + $(ECHO) '$(DVIFILE): $(PREV_AUXFILE)' $(if $(makeindex),'$(PREV_INDFILE)') $(if $(bibdb),'$(PREV_BBLFILE)'); \ + ) >$@ + $(if $(strip $(makeindex) $(bibdb)),@( \ + $(ECHO) ' @$$(COMPILE.tex)'; \ + $(ECHO) ' @$$(COMPILES.tex)'; \ + ) >>$@) +# ç»åãã¡ã¤ã«ã®ä¾åé¢ä¿ + $(if $(ingraphics),@( \ + $(ECHO); \ + $(ECHO) '# IncludeGraphic Files - .pdf, .jpeg/.jpg, .png with .xbb'; \ + $(ECHO) '$(AUXFILE): $(ingraphics)'; \ + $(ECHO); \ + $(ECHO) '$(AUXFILE): $(addsuffix .xbb,$(basename $(filter-out %.eps,$(ingraphics))))'; \ + ) >>$@) +# \includeã¾ãã¯\inputå½ä»¤ã§èªã¿è¾¼ã¾ããTeXãã¡ã¤ã«ã®ä¾åé¢ä¿ $(if $(intex),@( \ - $(ECHO); \ - $(ECHO) '# Include / Input Files - .tex'; \ - $(ECHO) '$(DVIFILE) $(AUXFILE): $(intex)') >>$@) - # ç´¢å¼ä½æç¨ãã¡ã¤ã«ã®ä¾åé¢ä¿ + $(ECHO); \ + $(ECHO) '# Files called from \include or \input - .tex'; \ + $(ECHO) '$(AUXFILE): $(intex)'; \ + ) >>$@) +# ç´¢å¼ä½æç¨ãã¡ã¤ã«ã®ä¾åé¢ä¿: .aux -> idx -> .ind -> .dvi $(if $(makeindex),@( \ - $(ECHO); \ - $(ECHO) '# Index Files: .aux -> idx -> .ind -> .dvi'; \ - $(ECHO) '$(IDXFILE): $<'; \ - $(ECHO); \ - $(ECHO) '$(PREV_IDXFILE): $(IDXFILE)'; \ - $(ECHO); \ - $(ECHO) '$(INDFILE): $(PREV_IDXFILE)'; \ - $(ECHO); \ - $(ECHO) '$(DVIFILE): $(INDFILE)') >>$@) + $(ECHO); \ + $(ECHO) '# Index files: .tex -> .idx -> .ind -> .dvi'; \ + $(ECHO) '$(IDXFILE): $(TEXFILE)'; \ + $(ECHO); \ + $(ECHO) '$(PREV_IDXFILE): $(IDXFILE)'; \ + $(ECHO); \ + $(ECHO) '$(INDFILE): $(PREV_IDXFILE)'; \ + $(ECHO); \ + $(ECHO) '$(PREV_INDFILE): $(INDFILE)'; \ + ) >>$@) # æç®å¦çç¨ãã¡ã¤ã«ã®ä¾åé¢ä¿ $(if $(bibdb),@( \ - $(ECHO); \ - $(ECHO) '# Bibliography Files - .bbl, .bib'; \ - $(ECHO) '$(PREV_AUXFILE): $(AUXFILE)'; \ - $(ECHO); \ - $(ECHO) '$(DVIFILE): $(BBLFILE)'; \ - $(ECHO); \ - $(ECHO) '$(BBLFILE): $(bibdb)') >>$@) + $(ECHO); \ + $(ECHO) '# Bibliography files: .aux, BIBDB -> .bbl -> .div'; \ + $(ECHO) '$(BBLFILE): $(bibdb) $(AUXFILE)'; \ + $(ECHO); \ + $(ECHO) '$(PREV_BBLFILE): $(BBLFILE)'; \ + ) >>$@) # 夿°TARGETSã§æå®ãããã¿ã¼ã²ãããã¡ã¤ã«ã«å¯¾å¿ãã # .dãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ãããä¾åé¢ä¿ãåå¾ãã @@ -187,16 +212,17 @@ ifeq (,$(filter %clean %.xbb %.d,$(MAKECMDGOALS))) -include $(addsuffix .d,$(basename $(TARGETS))) endif -# dviãã¡ã¤ã«ä½æ -%.dvi: %.tex - $(COMPILES.tex) - # auxãã¡ã¤ã«ä½æ %.aux: %.tex - $(COMPILE.tex) + @$(COMPILE.tex) +# prev_auxãã¡ã¤ã«ä½æ %.prev_aux: %.aux - -$(CMP) $@ $< || $(CP) $< $@ + @$(CMPPREV) + +# dviãã¡ã¤ã«ä½æ +%.dvi: %.prev_aux + $(COMPILES.tex) # PDFãã¡ã¤ã«ä½æ %.pdf: %.dvi @@ -218,21 +244,27 @@ endif # ç´¢å¼ãã¡ã¤ã«ä½æ %.idx: %.tex - $(COMPILE.tex) + @$(COMPILE.tex) %.prev_idx: %.idx - -$(CMP) $@ $< || $(CP) $< $@ + @$(CMPPREV) %.ind: %.prev_idx - $(MENDEX) $(MENDEXFLAG) $(IDXFILE) + @$(COMPILE.idx) + +%.prev_ind: %.ind + @$(CMPPREV) # æç®å¦çç¨ãã¡ã¤ã«ä½æ %.bbl: %.prev_aux - $(BIBTEX) $(BIBTEXFLAG) $(AUXFILE) + @$(COMPILE.bbl) + +%.prev_bbl: %.bbl + @$(CMPPREV) # tex-cleanã¿ã¼ã²ãã tex-clean: - $(RM) $(addprefix *,$(TEX_INT) $(IND_INT) $(BIB_INT) .d .prev_aux .prev_idx) + $(RM) $(addprefix *,$(TEX_INT) $(IND_INT) $(BIB_INT) .d .prev_aux .prev_idx .prev_ind .prev_bbl) ifeq (,$(filter %.dvi,$(TARGETS))) $(RM) *.dvi endif -- 2.18.0