PyTeXMK Logo

PyTeXMK

LaTeX 辅助编译命令行程序

PyPI version PyPI Downloads GitHub release License OS

Issues Last Commit Repo Size Stars

简体中文 · English


✨ 功能特性


📸 预览

PyTeXMK 预览 1 PyTeXMK 预览 2


🚀 快速开始

安装

官方版本 PyTeXMK 发布在 PyPI 上,可以通过 pip 或 uv 轻松安装:

# 使用 pip 安装
pip install pytexmk

# 使用 uv 安装(推荐)
uv pip install pytexmk

升级

# pip
pip install --upgrade pytexmk

# uv
uv pip install --upgrade pytexmk

基本使用

在 LaTeX 项目根目录下运行:

# 使用默认配置编译
pytexmk

# 指定主文件编译
pytexmk main.tex

# 使用 XeLaTeX 编译
pytexmk -x main.tex

# 清理辅助文件
pytexmk -c

注意:PyTeXMK 仅支持 UTF-8 编码的 TeX 文件。


⚙️ 默认配置

配置项 默认值 说明
编译程序 XeLaTeX 可选:XeLaTeX、PdfLaTeX、LuaLaTeX
主文件名 main.tex 待编译的 LaTeX 主文件
输出目录 Build 编译结果存放目录
辅助目录 Auxiliary 辅助文件存放目录
编译模式 batch 模式 编译过程不显示详细信息

提示:以上参数均可在配置文件中修改,详见 配置文件说明。

VSCode 用户需在 settings.json 中设置 "latex-workshop.latex.outDir": "./Build" 以便 LaTeX-Workshop 找到 PDF 文件。


📖 使用说明

编译命令

PyTeXMK 支持的编译选项:

位置参数

参数 说明
document 要被编译的文件名

选项参数

选项 说明
-h, --help 显示帮助信息
-v, --version 显示程序版本号
-p, --PdfLaTeX 使用 PdfLaTeX 进行编译
-x, --XeLaTeX 使用 XeLaTeX 进行编译
-l, --LuaLaTeX 使用 LuaLaTeX 进行编译
-d, --LaTeXDiff 使用 LaTeXDiff 生成改动对比文件
-dc, --LaTexDiff-compile 使用 LaTeXDiff 生成对比文件并编译新文件
-dr, --draft 启用草稿模式(无图显示,提高编译速度)
-c, --clean 清除主文件的辅助文件
-C, --Clean 清除辅助文件(含根目录)和输出文件
-ca, --clean-any 清除所有带辅助文件后缀的文件
-Ca, --Clean-any 清除所有辅助文件(含根目录)和主文件输出
-nq, --non_quiet 非安静模式,显示编译过程
-vb, --verbose 显示 PyTeXMK 运行详细信息
-pr, --pdf-repair 修复所有根目录以外的 PDF 文件
-pv, --pdf-preview 编译后预览 PDF 文件
-s, --subproject 从根配置中选中一个子项目并在其目录编译
-ls, --list-subprojects 扫描子项目并展示清单(自动同步根配置的子项目段)
-i, --init 生成根项目 .pytexmkrc 配置文件
-iu, --init-user 生成用户级 ~/.pytexmkrc 配置文件
-f, --force 配合 -i/-iu 强制覆盖已存在的配置文件

参数说明

多子项目编译

PyTeXMK 支持在一个项目根目录下管理多个相互独立的子项目并逐一编译。

  1. 在根目录执行 pytexmk -i 生成根配置 .pytexmkrc,需要覆盖已有配置时加 -f:pytexmk -i -f;也可用 -iu 生成用户级 ~/.pytexmkrc。
  2. 执行 pytexmk -ls 扫描并展示子项目清单;若根 .pytexmkrc 存在,会自动整体替换其中的子项目段([subprojects])并写入扫描到的子项目条目,而扫描规则段 [project_scan] 不被改动。
  3. 使用 pytexmk -s 子项目名 选中一个子项目,并在其目录下进行编译,也可与待编译主文件名共存:pytexmk -s 子项目名 main;清理作用域同样生效,如 pytexmk -s 子项目名 -c。

子项目调用时,其目录下的本地 .pytexmkrc 会被忽略,以根配置为准(-vb 会打印一行提示);用户单独进入子项目目录运行时本地 rc 生效(向后兼容)。

配置说明:[project_scan] 为子项目扫描规则段(默认 depth=3、exclude 排除清单),仅用于 -ls/-s 扫描且不会被修改;[subprojects] 为子项目清单段,由 -s 选中使用,并会被 -ls 整体替换为扫描结果。

魔法注释

PyTeXMK 支持使用魔法注释来自定义编译行为(仅检索文档前 50 行)。

魔法注释 说明 示例
% !TEX program = <XeLaTeX> 指定编译类型 % !TEX program = PdfLaTeX
% !TEX root = <主文件名> 指定待编译主文件 % !TEX root = test_file
% !TEX outdir = <输出目录> 指定编译结果存放位置 % !TEX outdir = output
% !TEX auxdir = <辅助目录> 指定辅助文件存放位置 % !TEX auxdir = auxfiles

注意:魔法注释仅支持在主文件中定义,不支持在子文件中定义。

主文件与编译类型选定逻辑

📂 待编译主文件选定逻辑
  1. 命令行参数中指定主文件 → 编译该文件(如 pytexmk <主文件名>,可省略后缀)
  2. 当前目录仅有一个 .tex 文件 → 默认使用该文件
  3. 存在魔法注释 % !TEX root → 使用注释指定的文件
  4. 检索 \documentclass[]{} 或 \begin{document} 判定(仅前 200 行)
  5. 默认主文件名 main.tex → 尝试使用
  6. 以上均失败 → 输出错误信息并退出
⚙️ 编译类型选定逻辑
  1. 命令行参数 -p / -x / -l 指定 → 优先级最高
  2. 魔法注释 % !TEX program 指定 → 使用注释值
  3. 均未指定 → 使用默认 XeLaTeX

输出目录优先级:% !TEX outdir 魔法注释 > 默认 Build

配置文件说明

PyTeXMK 支持两级配置文件:用户级配置和项目级配置。正常运行不再自动生成配置文件,需要时用 -iu(用户级)或 -i(项目级)手动生成。

生成的配置文件中包含详细注释,可根据需要进行修改。

配置文件路径

类型 Windows Linux / macOS
用户级配置 C:\Users\用户名\.pytexmkrc ~/.pytexmkrc
项目级配置 当前目录 .pytexmkrc 当前目录 .pytexmkrc

优先级:项目级配置 > 用户级配置 > 内置默认;缺失配置用内置默认静默运行,键不匹配仅警告、不写盘。


🛠 开发与构建

环境要求

开发环境搭建

# 克隆项目
git clone https://github.com/YanMing-lxb/PyTeXMK.git
cd PyTeXMK

# 安装开发依赖
uv sync --all-extras --dev

# 运行开发版本
uv run pytexmk --help

构建分发包

# 构建 wheel 和 sdist
uv build

构建可执行程序

# 生成平台图标
make icon

# 构建源码模式的可执行程序(onedir 目录)
make build

# 清理构建产物
make clean

Windows 中的 make 命令需要单独配置,详见 Windows 下使用 make。

代码检查

uv run ruff check src/
uv run ruff format src/

📄 许可证

本项目基于 GPLv3 许可证开源。


📝 更新记录

详细更新记录请参阅 CHANGELOG.md。


⭐ Star History

Star History Chart


如果这个项目对你有帮助,欢迎点个 Star ⭐ 支持一下!