2017-02-14 49 views
0

我在编写一个合理的Makefile来编写大量LaTeX练习表的过程中遇到以下问题。练习以文件file1.tex,file2.tex,... fileXXX.tex组织,其中XXX是总数(因课程而异)。现在的问题是,我使用后来的文件与以前的文件的交叉引用:fileY.tex的依赖关系在文件的所有辅助文件fileZ.tex与Z < Y:因此必须先生成这些文件。许多LaTeX文件和依赖关系的Makefile文件不断递增

所以,而不是硬编码所有的XXX文件与他们的依赖到一个Makefile我正在寻找一个更有效的方式来做到这一点。只需指定文件总数XXX即可。

+0

我觉得latexmk会比简单的化妆http://mg.readthedocs.io/latexmk.html – uzsolt

+0

@uzsolt是更好的,那是我最初的想法也是如此。在http://tex.stackexchange.com/questions/62142/latexmk-with-external-references上提出这样的问题,但我想让这种方法的自动化方面相当不方便。嗯......? –

回答

0

是否这样?

N := 100 # can override on the command line, etc. 
SRCS := $(foreach n,$(shell seq $(N)),file$(n).tex) 

define dep 
$(call dep-rec,$1,,) 
endef 

# $(call dep-rec,.tex files,accumulated aux files) 
define dep-rec 
$(if $1,$(eval $(word 1,$1): $2)$(call dep-rec,$(wordlist 2,$(words $1),$1),$2 $(call aux-files-of,$(word 1,$1)))) 
endef 

# return the aux files of $1 (which is a .tex file) -- define as appropriate 
define aux-files-of 
$(basename $1).aux 
endef 

$(call dep,$(SRCS))