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

Python批量编译子目录.tex为PDF并按原结构存储到指定文件夹

问题原因

现有脚本编译生成的PDF全部堆积在脚本根目录,核心是pdflatex默认将所有编译产出(含PDF、各类中间临时文件)输出到执行编译命令的当前工作目录,脚本既没有提前在PDF Folder下复刻原有的子目录结构,也没有给pdflatex指定输出路径,自然无法按要求归档文件。

优化后可直接运行的脚本
import os
import subprocess

# 基础配置
ROOT_PATH = os.getcwd()
TARGET_ROOT = os.path.join(ROOT_PATH, "PDF Folder")
# LaTeX编译生成的临时文件后缀,编译完成后自动清理
TEMP_FILE_SUFFIX = (".aux", ".log", ".out", ".toc", ".synctex.gz")

# 遍历收集所有.tex文件,自动跳过目标PDF文件夹避免重复扫描
all_tex_files = []
for dir_path, _, files in os.walk(ROOT_PATH):
    if TARGET_ROOT in dir_path:
        continue
    for file in files:
        if file.endswith(".tex"):
            all_tex_files.append(os.path.join(dir_path, file))

# 逐个处理tex文件
for tex_abs_path in all_tex_files:
    # 计算当前tex文件相对于脚本根目录的路径
    source_dir = os.path.dirname(tex_abs_path)
    rel_dir = os.path.relpath(source_dir, ROOT_PATH)
    # 计算该文件在PDF Folder下对应的目标存储目录
    target_dir = os.path.join(TARGET_ROOT, rel_dir)
    # 目标目录不存在则自动创建
    os.makedirs(target_dir, exist_ok=True)

    # 调用pdflatex编译,指定输出目录,开启非交互模式无需手动确认
    subprocess.run(
        [
            "pdflatex",
            "-interaction=nonstopmode",
            f"-output-directory={target_dir}",
            tex_abs_path
        ],
        # 不需要查看编译日志的话保留这两行,要排错就注释掉
        stdout=subprocess.DEVNULL,
        stderr=subprocess.DEVNULL
    )

    # 清理编译生成的临时文件,目标目录仅保留PDF
    for f in os.listdir(target_dir):
        if f.endswith(TEMP_FILE_SUFFIX):
            os.remove(os.path.join(target_dir, f))
脚本特性
  • 自动跳过PDF Folder目录的扫描,不会重复处理已生成的文件
  • 1:1保留原目录结构,子文件夹名称、PDF文件名和原始.tex文件完全匹配
  • 编译开启非交互模式,遇到常规引用、格式类问题不会卡住等待手动输入,支持全程无人值守批量编译
  • 编译完成后自动清理LaTeX生成的各类临时文件,目标文件夹仅保留需要的PDF
  • 路径处理使用Python标准库接口,兼容Windows、macOS、Linux全平台
注意事项
  • 运行脚本前请确保已经安装TeX发行版(如TeX Live、MikTeX),且pdflatex命令已加入系统环境变量,可在终端/命令行直接调用
  • 如果你的文档需要生成目录、交叉引用、参考文献,可在编译循环中对同一个tex文件连续调用2次pdflatex即可正常生成对应内容,无需手动多次编译
  • 编译出现异常时,删除代码中stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL两行即可查看完整编译日志排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:39:16