_()
包装% !TEX
注释指定编译引擎、主文件、输出目录等_("…") %(占位符)s
包装;.pot 翻译模板统一用系统 xgettext
自动抽取(非 pybabel / 非手写),保证 msgid
上方自带源文件行号定位;按 Q2 约束不生成 .mo
二进制,避免与最新 .pot 不同步detection.py 模块承载全部 6 维检测逻辑与
CompilationDetector 类,compile.py 仅保留
subprocess
级编译执行;强制采用组合关系调用(compile_model.detector.*),严禁任何薄转发方法(return self.detector.xxx(...)
= 0),单一职责与可维护性拉满cli/
子包(__main__ / cli_args / cli_workflow / check_version),其余
19 模块保持扁平避免过度工程;同时打破 run ↔︎ cli_workflow
静态 2 节点 SCC 环,import 图正式 DAG 化(SCC≥2 分量 =
0),从结构上消除循环依赖隐患=*78 / X32|开始预处理|X32 / =*78
风格,与项目其他 Banner 统一走
ui_messages.print_message;删除「结束预处理」横幅;预处理段按「move
0/N 个辅助文件」「exist 0/N 个已有辅助文件」4
场景差异化打印提示,避免无论是否实际迁移都两行固定输出的歧义;「未检测到已有辅助文件,进行初始化」文案全局只保留
1 处,归属 cli_workflowpytexmk.run
入口 / DeprecationWarning / try-import fallback);对 5 个核心模块进行
ruff F401/F841 静态扫描 + 死注释 +
重复文件读取清理,确保架构熵增可控

官方版本 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 文件 |
参数说明
-pr:当 LaTeX 编译过程中报类似
invalid X X R object at offset XXXXX
的警告时,可使用此参数尝试修复所有 PDF 文件。该警告通常由 PDF
图片文件损坏导致。-d /
-dc:输入示例:pytexmk -d old_tex_file new_tex_file,生成的改动对比文件名为
LaTeXDiff.tex。-pv:编译结束后调用浏览器或本地 PDF
阅读器预览。示例:pytexmk main -pv 或
pytexmk -pv。-dc /
-d:支持在参考文献和符号索引中显示修改痕迹,编译过程中会提示选择风格(1-显示修改
/ 2-不显示修改)。PyTeXMK 支持使用魔法注释来自定义编译行为(仅检索文档前 50 行)。
| 魔法注释 | 说明 | 示例 |
|---|---|---|
% !TEX program = <XeLaTeX> |
指定编译类型 | % !TEX program = PdfLaTeX |
% !TEX root = <主文件名> |
指定待编译主文件 | % !TEX root = test_file |
% !TEX outdir = <输出目录> |
指定编译结果存放位置 | % !TEX outdir = output |
% !TEX auxdir = <辅助目录> |
指定辅助文件存放位置 | % !TEX auxdir = auxfiles |
注意:魔法注释仅支持在主文件中定义,不支持在子文件中定义。
pytexmk <主文件名>,可省略后缀).tex 文件 → 默认使用该文件% !TEX root → 使用注释指定的文件\documentclass[]{} 或
\begin{document} 判定(仅前 200 行)main.tex → 尝试使用-p / -x / -l 指定
→ 优先级最高% !TEX program 指定 → 使用注释值XeLaTeX输出目录优先级:
% !TEX outdir魔法注释 > 默认Build
PyTeXMK 支持两级配置文件:系统配置和项目配置。
.pytexmkrc.pytexmkrc自动生成的配置文件中包含详细注释,可根据需要进行修改。
配置文件路径
| 类型 | 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
# 构建 Cython 加密的可执行程序(onedir 模式)
make build
# 清理构建产物
make cleanWindows 中的 make 命令需要单独配置,详见 Windows 下使用 make。
uv run ruff check src/
uv run ruff format src/本项目基于 GPLv3 许可证开源。
详细更新记录请参阅 CHANGELOG.md。
如果这个项目对你有帮助,欢迎点个 Star ⭐ 支持一下!