You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile目标执行拆分变量:多LaTeX文件编译问题

多LaTeX文件编译的Makefile优化方案

核心思路

利用Make的模式规则批量生成对应编译规则,让每个PDF文件仅依赖自身对应的.tex文件(以及你指定的其他依赖文件),避免不必要的全量编译,同时解决多文件无法单独编译的问题。

完整Makefile代码

# 定义编译工具,按需替换成xelatex/lualatex等
TEX = pdflatex
BIBTEX = bibtex

# 自动收集当前目录下所有.tex文件,生成对应的PDF目标列表
TEX_FILES := $(wildcard *.tex)
PDF_FILES := $(TEX_FILES:.tex=.pdf)

# 默认目标:编译所有.tex文件为PDF
all: $(PDF_FILES)

# 模式规则:单个.tex文件编译为PDF,仅依赖自身.tex文件
%.pdf: %.tex
	# 第一次编译生成基础文档和辅助文件
	$(TEX) $<
	# 如果需要处理参考文献,取消下面两行注释(按需启用)
	# $(BIBTEX) $(basename $<)
	# $(TEX) $<
	# 第二次编译处理交叉引用、目录等
	$(TEX) $<

# 清理编译生成的辅助文件和PDF
clean:
	rm -f $(PDF_FILES) *.aux *.log *.blg *.bbl *.out

关键规则说明

  • 模式规则%.pdf: %.tex:这是核心逻辑,Make会自动匹配每个.tex文件,生成对应的.pdf目标。$<代表当前目标的依赖文件(比如report.tex对应report.pdf,只依赖report.tex),确保只有对应的.tex文件修改时才会重新编译该PDF。
  • 自动收集文件:$(wildcard *.tex)会自动扫描当前目录下所有.tex文件,新增文件后无需手动修改Makefile,Make会自动识别并生成编译规则。
  • 多次编译逻辑:LaTeX通常需要两次编译来处理交叉引用、目录等元素;如果用到参考文献(bibtex),则需要插入bibtex编译步骤,确保引用正确生成。

扩展调整

  • 添加额外依赖:如果你的LaTeX文件依赖自定义样式文件(如mystyle.sty)或图片(如figures/chart.png),可以修改模式规则的依赖列表:
    %.pdf: %.tex mystyle.sty figures/chart.png
    	$(TEX) $<
    	# 后续编译步骤...
    
    这样当这些依赖文件修改时,对应的PDF也会自动重新编译。
  • 更换编译引擎:如果需要用xelatex或lualatex,只需修改TEX变量:
    TEX = xelatex
    

内容的提问来源于stack exchange,提问作者JM445

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:23:24