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

编写Makefile批量编译任意层级目录下的LaTeX文件

多目录LaTeX文件编译的Makefile解决方案

核心Makefile代码

# 递归查找所有.tex源文件
TEX_FILES := $(shell find . -name "*.tex" -type f)
# 生成对应的PDF目标文件列表(保留原路径)
PDF_FILES := $(TEX_FILES:.tex=.pdf)

# 默认目标:编译所有PDF
all: $(PDF_FILES)

# 模式规则:将单个.tex文件编译为同目录下的PDF
%.pdf: %.tex
	latexmk -pdf -pdflatex="pdflatex --shell-escape %O %S" $<

# 清理所有生成的PDF及中间文件
clean:
	find . -name "*.pdf" -o -name "*.aux" -o -name "*.log" -o -name "*.out" -o -name "*.fls" -o -name "*.fdb_latexmk" | xargs rm -f

关键说明

  • 递归获取源文件:用find命令遍历所有子目录,确保不会遗漏任何层级的.tex文件,不同子目录下的同名文件也能被正确识别。
  • 保持路径一致性:生成的PDF文件路径与源文件完全对应,避免同名文件冲突,且所有输出文件(包括中间文件)都会保存在源文件所在子目录。
  • 增量编译:Make会自动对比.tex源文件和对应.pdf的修改时间,仅重新编译更新过的文件,无需手动指定。
  • 注意事项:Makefile中的命令行必须用制表符缩进,不能用空格,否则会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:35:56