如何在Makefile中为目标.tex文件前置fm.tex并后置bm.tex
解决方法
直接修改你的Makefile规则,通过临时合并文件的方式实现前置fm.tex、后置bm.tex的需求,同时保证生成的PDF和原.tex文件名一致:
# 模式规则:匹配任意xxx.tex,生成xxx.pdf %.pdf: %.tex fm.tex bm.tex # 生成临时tex文件,按顺序合并前置、目标文件、后置文件 cat fm.tex $< bm.tex > temp_$*.tex # 编译临时tex文件,生成临时PDF texify --pdf --synctex=1 --clean temp_$*.tex # 将临时PDF重命名为目标文件名的PDF mv temp_$*.pdf $@ # 清理临时tex文件 rm -f temp_$*.tex
关键部分说明
%.pdf: %.tex fm.tex bm.tex:把目标改成%.pdf,同时把fm.tex和bm.tex加为依赖,只要这三个文件有任何一个修改,都会触发重新编译。cat fm.tex $< bm.tex > temp_$*.tex:$<代表第一个依赖文件(也就是你要处理的xxx.tex),这条命令把三个文件按顺序合并成一个临时tex文件。texify --pdf --synctex=1 --clean temp_$*.tex:编译临时文件,--clean会自动清理编译生成的辅助文件(比如aux、log这些)。mv temp_$*.pdf $@:$@代表目标文件(xxx.pdf),把编译出来的临时PDF重命名成你需要的文件名。rm -f temp_$*.tex:手动删除我们自己创建的临时tex文件。
使用方式
比如你要处理test.tex,直接运行:
make test.pdf
或者简化成:
make test
Make会自动匹配对应的规则,最终生成test.pdf,内容包含fm.tex、test.tex、bm.tex的内容。
内容的提问来源于stack exchange,提问作者Russell Urquhart C
相关产品推荐
相关产品推荐

