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

如何在Makefile中通过4位编号匹配完整TeX文件名并编译

解决Makefile匹配4位数字调用对应TeX文件的问题

核心思路

利用Makefile的模式规则和静态模式组合,先匹配4位数字的目标,再关联到实际存在的完整文件名,彻底规避循环引用问题。

具体实现

  1. 自动收集目标文件并生成可调用的简化目标:
# 扫描当前目录下所有符合格式的TeX文件
TEXFILES := $(wildcard Proj-JIRA-????-Internal.tex)
# 从完整文件名中提取4位数字,生成如1234.tex的可调用目标
TARGETS := $(patsubst Proj-JIRA-%-Internal.tex,%.tex,$(TEXFILES))
  1. 用静态模式规则建立简化目标与原文件的关联:
# 针对每个简化目标,执行对应原文件的编译命令
$(TARGETS): %.tex: Proj-JIRA-%-Internal.tex
    texify --pdf --synctex=1 --clean $<
  1. 可选:添加兜底提示(处理不存在的数字)
    如果输入的4位数字没有对应文件,给出明确提示,需将此规则放在静态模式之后(优先级更低):
# 未匹配到对应文件时的提示
%.tex:
    @echo "错误:未找到Proj-JIRA-$*-Internal.tex文件"

关键说明

  • wildcard函数会精准匹配Proj-JIRA-????-Internal.tex格式的文件(????对应任意4位数字)
  • patsubst完成文件名的格式转换,把完整文件名映射成XXXX.tex的简化目标
  • 静态模式规则中$<代表依赖的原文件,完全避免了之前的循环引用问题
  • 兜底规则用于处理无效输入,提升使用体验

使用方式

直接执行 make 1234.tex,Make会自动找到Proj-JIRA-1234-Internal.tex并执行指定的texify编译命令。

内容的提问来源于stack exchange,提问作者Russell Urquhart C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:35:55