作者:Martin Isaksson
对于科研人员和开发者来说,LaTeX 漫长的编译耗时是巨大痛点,严重拉低写作效率。问题根源在于 LaTeX 文档的编译逻辑复杂,市面上可供选择的构建工具又五花八门。本文将对主流 LaTeX 编译工具做完整横向对比,帮各位作者选出最适配自己的方案。选对构建工具,能大幅缩短等待编译的时间,让你把更多精力投入论文内容本身。
多年前我写硕士毕业论文时,用原生 latex 搭配 dvips 编译踩了无数坑。从那之后,我不断迭代自己的编译流程:简化操作、提升速度、适配各类新功能。漫长的编译等待让我尝试过五花八门的提速方法,但网上关于 LaTeX 加速的讨论大多是人云亦云,缺乏严谨实测数据支撑——明明是科研人常用的排版工具,相关优化讨论却毫无“科学精神”。
本文将完整拆解各类本地 LaTeX 编译方案,对比不同构建工具的优劣。读完这篇测评,你大概率会换掉现在正在用的编译工具。
Overleaf 固然好用,但本地 LaTeX 编译环境在不少场景下具备独特优势。
最大优势是 完全可控:本地环境里,你能自主掌控 TeX 发行版、所有宏包、全局配置与编辑器环境。对我个人而言,本地编译带来的隐私与数据安全是最核心的理由。
Overleaf 的优势集中在云端协作:多人可实时同步编辑同一篇文档,无需手动安装、维护 TeX 环境,对新手门槛极低。
不同系统、不同定制需求对应的安装方式各不相同,本文不展开细说,感兴趣可以查阅《LaTeX 安装指南》《免费 TeX 实现方案》。安装完成后,《LaTeX 项目初始化教程》《学术写作十大必备宏包》是两份很实用的入门资料。
LaTeX 采用 多遍编译 机制,以此实现目录、图表清单、交叉引用、术语表、索引、参考文献等功能。单次编译生成中间文件,作为下一轮编译的输入,整套流程环环相扣。
编译流程链路:.tex → pdflatex/xelatex → 直接生成 .pdf.tex → latex → .dvi.dvi → dvips → .ps → ps2pdf → .pdf.dvi → dvipdfm/dvipdfmx → .pdf
本文目标是输出 PDF 文件,不同编译链路各有优劣,但本次测试统一选用同一套标准流程。
想要生成带参考文献、术语表的完整 PDF,标准多轮编译步骤共 7 步:
pdflatex 读取 tex 源文件,生成 .aux 中间文件,存储引用、交叉标注、术语条目;使用 glossaries-extra 宏包还会额外生成 .ist、.acn 文件。.aux 文件与 .bib 参考文献库,生成格式化参考文献文件 .bbl。.bbl 参考文献,文中引用位置会显示 [?],编号暂未对齐。各类 LaTeX 中间文件后缀含义可查阅《LaTeX 文件后缀大全》《aux 辅助文件详解》。
本次测试文档基于 IEEE 会议论文模板修改,额外加入 BibTeX 参考文献、glossaries-extra 术语表,附带 3 张示例图片(同时提供 eps、pdf 两种格式,省去图片转换耗时)。插入图片时省略后缀,写法示例:
\includegraphics[width=.9\linewidth]{example-image-a}文档共 4 页:
第 1 页:论文标题、示例图;
第 2 页:正文公式、格式规范;
第 3 页:参考文献列表;
第 4 页:术语缩写对照表。




选用简短文档是为了控制单次编译耗时,方便重复大量测试。文档完整源码可在 Overleaf 查看。
编写专用计时脚本完成对比测试:每个编译方案执行 make clean test.pdf 25 次,通过 /usr/bin/time 统计平均耗时,所有工具分为不同组别逐一测试。
最传统、几乎没人日常使用的编译方式,仅作完整度补充,完整命令流程:
pdflatex test
bibtex test
makeglossaries test
pdflatex test由 TeX 社区开发的自动化编译工具,通过源码内注释配置编译流程,语法直观清晰,可自定义 pdflatex、bibtex、术语表等全套步骤。
在 tex 文件头部添加配置注释即可自动执行:
% arara: pdflatex
% arara: bibtex
% arara: makeglossaries
% arara: pdflatex until !found('log', 'undefined references')TeX Live 自带的老牌自动化编译工具,自动判断需要执行几轮编译,解决引用、术语表、参考文献多轮编译问题。可通过 .latexmkrc 配置文件扩展支持 makeglossaries,示例配置:
add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
add_cus_dep('acn', 'acr', 0, 'run_makeglossaries');
sub run_makeglossaries {
if ( $silent ) {
system "makeglossaries -q '$_[0]'";
}
else {
system "makeglossaries '$_[0]'";
};
}
push @generated_exts, 'glo', 'gls', 'glg';
push @generated_exts, 'slo', 'slg', 'sls';
push @generated_exts, 'acn', 'acr', 'alg';
$clean_ext .= ' %R.ist %R.xdy';编译命令:latexmk -pdflatex -bibtex -r latexmkrc main.tex
Overleaf 后台底层编译工具正是 latexmk,相关定制逻辑可查阅官方文档。
和 latexmk 定位相似的自动化编译工具,自动处理全套依赖;rubber-info 可一键查看文档错误、未定义引用、溢出警告。
编译命令:rubber -d -m glossaries test.tex
校验命令输出示例:
❯ pipenv run rubber-info test.tex
无报错
无未定义引用
无警告
无盒子溢出问题基于 Python 的通用开源构建系统,可用于搭建复杂 LaTeX 项目,编写 SConstruct 脚本定义编译目标:
import os
env = Environment(ENV=os.environ)
pdf_output = env.PDF(target='test.pdf', source='test.tex')
env.Precious(pdf_output)Precious 函数作用:标记 PDF 为核心目标,清理中间文件时不会删除成品 PDF。
Python 开发的轻量化 LaTeX 构建工具,适配大型工程化流程,自动处理循环编译依赖,错误、警告输出做了友好美化。本次测试使用支持 makeglossaries 的二次开发分支。
文档导言区(宏包、格式配置)改动频率极低,可提前预编译生成 .fmt 格式缓存文件,大幅减少重复编译耗时。
拆分文件:导言区末尾添加 \endofdump
% 固定导言代码
...
\endofdump预编译命令:
latex -ini -jobname="preamble" "&latex" mylatexformat.ltx "preamble.tex"正文文件开头读取缓存:
%&preamble
\endofdump
\begin{document}
...补充说明:该方案与 glossaries 宏包存在兼容坑点,已有相关讨论。
将项目目录挂载至内存盘,用高速内存替代硬盘读写,显著缩短编译耗时;不同操作系统挂载命令不同,本文不展开系统操作步骤。
batchmode:屏蔽终端冗余输出,减少 IO 开销,适合文档无大量报错时快速编译;draftmode:编译时跳过图片渲染,仅做基础排版,初稿快速预览专用。使用示例:pdflatex -interaction=batchmode test.tex
pdfLaTeX 出现前的老式工作流,先生成 dvi 文件,再转 PostScript 最终输出 PDF,两条主流链路:
流程繁琐,仅作历史方案对比。
2025 年推出的轻量 LaTeX 构建工具,极简配置:支持 .llmk.toml 配置文件或 tex 内魔法注释,无需复杂脚本,自动多轮编译,但本次实测速度垫底。
编译命令:llmk document.tex
测试标准:每组方案重复 25 次,结果为平均耗时 ±95%置信区间;四大评价维度:编译速度、控制台输出行数、PDF 体积、配置代码字符长度。
| 编译方案 | 平均耗时(秒) |
|---|---|
| max_combo(全优化组合) | 2.23 ± 0.08 |
| preamble(仅预编译导言) | 2.31 ± 0.04 |
| latex_dvipdfmx_z0 | 2.49 ± 0.02 |
| latexrun_ramdisk_preamble | 2.50 ± 0.02 |
| latex_dvipdfmx / latex_dvipdfm | 2.51 |
| latexrun_preamble | 2.52 ± 0.02 |
| latex_dvips_batchmode_draftmode | 2.54 ± 0.03 |
| batchmode_draftmode / draftmode / original 原生流程 | 2.79~2.80 |
| latexrun / latexrun_ramdisk | 2.81 |
| rubber / arara | 3.55 |
| latexmk_overleaf / latexmk | 3.69~3.71 |
| SCons | 3.91 |
| llmk | 5.62 ± 0.02 |
关键结论
max_combo(预编译导言+内存盘+draft/batch 参数)全场最快,仅 2.23 秒,比原生基础流程快 20%,比 latexmk 快 40%;缺点是配置复杂。latexrun、arara、rubber 输出极简,仅打印报错与警告,冗余信息极少;llmk、原版 latexmk 输出上千行日志,阅读困难。latexrun 还自带彩色错误提示,排错效率大幅提升。
以配置文件+Makefile 总字符数作为量化标准,字符越少代表配置越简单:
latexrun、arara、rubber 配置极简;预编译导言、内存盘、max_combo 全优化方案配置代码最长,上手门槛高。
老式 dvipdfm/dvipdfmx 链路生成的 PDF 体积最小;开启压缩参数 compress 后文件体积最大,日常使用中体积差异影响不大。
全场综合第一名:latexrun_ramdisk_preamble(内存盘+预编译导言+latexrun),兼顾速度、简洁输出、低配置成本;
第二名:arara;
纯速度优先选 max_combo,新手懒人优先 latexrun。
除本文测评的专用 LaTeX 工具外,通用构建系统(SCons、GNU Make、Snakemake、CMake)均可搭建 LaTeX 编译流水线;另有多款小众 LaTeX 构建工具因篇幅未纳入对比,后续计划补充测评。
如果论文包含大量 TikZ、pgfplots 矢量图,建议开启图片外部化缓存,大幅减少绘图编译耗时;也可通过 Matplotlib 生成矢量图,减轻 LaTeX 渲染压力。
通用全能首选:latexrun + 预编译导言。控制台输出干净、报错友好、速度接近天花板,配置简单,兼顾绝大多数论文场景。
极致速度需求、能接受复杂配置:选 max_combo 全套优化方案。
有效。文档篇幅增长后,各工具的速度差距会进一步拉大,latexrun 相对 latexmk 的提速优势会更明显。
全部测试基于 pdflatex,多数学术期刊强制使用该引擎;其他引擎可参考提速思路,但工具实测数据不具备参考性。
本次测试未定位具体性能瓶颈,推测是内部多轮检测逻辑冗余,后续会单独做专项拆解。
撰写 LaTeX 论文时,选对构建工具是极易被忽略、却能大幅提升写作效率的关键一步。横向对比所有工具后,latexrun 是综合最优解:兼顾编译速度、输出可读性、跨场景通用性。
省下等待编译的每一秒,都可以用来打磨你的研究内容。
基准测试原始数据采集于 2023 年;2026 年 6 月更新内容(新增 llmk 测评、重构易用性评分标准、全文优化)借助 Anthropic Claude 大模型辅助完成。
@misc{isaksson_2023,
author="Isaksson, Martin",
title={{Martin's blog --- Which LaTeX Build System Is Fastest? A Benchmark}},
year=2023,
url=https://blog.martisak.se/latex-build-systems-comparison/,
note = "[在线文档;访问时间2026-07-01]"
}