CorTeX 如何加快 LaTeX 编译反馈
了解本地编译、宏包预加载、检查点和图形复用如何缩短编辑到 PDF 更新的等待。
本页内容
编译 LaTeX 需要引擎、文档类、宏包、字体和 PDF 查看器。CorTeX 通过减少不必重复的工作,缩短从编辑到新 PDF 的等待。
关键区别是冷编译与热编译:冷编译可能还需要下载工具和文件,热编译则可以复用大部分准备工作。
| 与上次编译相比发生了什么变化? | 可能采用的路径 |
|---|---|
| 新浏览器或未缓存的 TeX 环境 | 加载引擎,下载所需 TeX 文件 |
| 同一项目中的普通编辑 | 复用已准备的引擎和下载文件 |
| 已准备检查点之后的兼容修改 | 从修改附近恢复,生成完整 PDF |
| 修改正文,已外部化的图形未变 | 复用符合条件的 TikZ 或 pgfplots 结果 |
| 导言区、标签、引用、依赖或配置变化 | 回退到完整编译 |
这些路径会自动选择,无需牺牲正确性,也不必另行维护一份用于快速编译的论文草稿。
可以打开临时 LaTeX 论文,等待第一份 PDF,然后修改靠后的一句话,与首次编译比较。实际结果取决于项目、浏览器、设备和缓存文件;下面解释这些路径为什么不同。
简要术语#
- **引擎:**读取源代码的 TeX 程序,例如 pdfLaTeX。
- **TeX Live 快照:**项目固定使用的一组文档类、宏包、字体和工具。
- **冷编译:**仍需加载引擎或 TeX 文件的编译。
- **热编译:**可复用浏览器内已有准备工作的编译。
- **检查点:**安全保存的引擎状态,兼容的后续修改可从此恢复。
编译器在编辑器旁运行#
普通 LaTeX 排版在浏览器内完成。CorTeX 使用 wasmtex 将 TeX 引擎打包为 WebAssembly,这是一种现代浏览器可运行的可移植编译格式。
热编译时,主要 TeX 处理过程无需经历上传到远程服务器、编译、再下载的往返。协作改动仍可能在作者间传输,但排版不必等待这一过程。编辑器和编译器读取浏览器内同一组项目文件,包括通过 \input 或 \include 加载的文件。
因此,研究者修改普通正文或公式后,可以更新预览,而不必先将整篇稿件上传到编译服务器。
首次编译准备可复用的环境#
浏览器并未预装 TeX Live。冷编译时,CorTeX 需要加载所选引擎,并下载文档使用的宏包、字体和格式文件。会议模板通常比一页短文需要更多材料。
这些文件来自不可变的 TeX Live 快照:特定地址的文件不会意外变化。浏览器可以安全缓存,项目仍固定使用所选 TeX 环境。
项目保持打开时,CorTeX 可继续使用已准备的引擎。关闭标签页后,引擎停止,但下载的 TeX 文件可能仍留在浏览器缓存中。清除浏览器数据、缓存被回收或更改项目 TeX 环境,都可能让后续编译再次需要冷启动。
记住所需的 TeX 文件#
每次浏览器下载缺失的 TeX 文件,引擎都需要等待。如果逐个下载,网络延迟可能超过排版本身的时间。
成功编译后,CorTeX 会记录项目使用的 TeX Live 文件名,包括文档类、宏包、字体和格式文件,不含论文正文。再次打开项目时,CorTeX 可以提前并行获取已知文件,而不是等待引擎逐个请求。
CorTeX 仍会检查当前编译的需求,只是预先准备上次用过的文件。受支持的内置模板自带经过测试的列表,因此首次打开也能受益。
预加载只在有益时进行:等待活动工作区出现,并避免在隐藏标签页、省流模式或极慢连接下进行推测性下载。用户主动请求的编译始终优先。
再次打开依赖较多的投稿模板时,这项优化尤其明显:并行准备可以避免逐个网络请求重复发现相同文件。
将连续输入合并成一次有效编译#
输入一个单词会在很短时间内产生多次改动。每输入一个字母就运行 TeX 既浪费工作,也可能让旧结果覆盖新预览。
CorTeX 会汇集短时间内的连续编辑再编译。如果更新的请求取代了正在执行的编译,旧结果不能更新预览。如果上次成功结果的所有输入都未变,则可以直接保留该 PDF,不必重复编译相同输入。
编辑器先响应每次按键,再单独调度源代码检查和 PDF 工作,因此编译不会阻塞即时输入响应。
从修改附近的检查点恢复#
兼容的 pdfLaTeX 项目成功编译后,CorTeX 可以在光标附近准备检查点,保存 TeX 引擎状态。
如果下一次修改位于检查点之后,且之前的输入没有变化,引擎就可以从该处继续排版。最终仍生成完整 PDF,而不是拼接未经验证的页面片段。
检查点在成功编译后的短暂空闲期准备,避免把准备成本留到下一次交互编译。若准备尚未开始,新编辑会取消它。
只有安全时才会恢复。设置命令、标签、引用、依赖文件、主文档、引擎或项目结构的变化可能需要完整编译;一些旧环境不支持检查点。如果无法证明恢复安全,CorTeX 就执行完整编译。
因此,稳定稿件中靠后位置的编辑更可能走最短路径;修改导言区或引用则通常需要完整处理。
复用耗时图形的结果#
TikZ 和 pgfplots 图形是编译时运行的绘图程序。图形较多的论文中,重复绘图可能比排版正文更耗时。
启用 TikZ 外部化且确认安全时,CorTeX 会将图形作为单独任务编译。TikZ 自身的内容检查允许在仅修改正文后复用未变的图形。设备内存足够时,多个图形任务可以并行执行。
并非所有图形都能安全分离。叠加图层和某些自定义环境需要完整文档上下文。CorTeX 会识别这些情况并回到完整编译;图形任务失败时也会如此处理。
少数辅助工具仍使用服务器#
部分参考文献和索引工具无法在浏览器运行。文档需要 Biber 或 Xindy 时,CorTeX 仅将该步骤所需文件发送到隔离服务。主要 TeX 处理仍在本地进行,相同的辅助工作也可复用。编译和预览 LaTeX说明如何选择引擎并检查这些步骤。
这些有限的辅助输入可能含有参考文献、索引或必要的源数据,是普通浏览器本地排版路径的例外。文档未请求某个辅助步骤时,项目文件不会发送给该步骤。
加速仍须保证 PDF 正确#
每项优化都有完整编译作为回退。不同 TeX 环境的缓存相互分离。只有源代码、依赖文件、引擎和环境仍然匹配时,CorTeX 才复用结果;旧编译不能覆盖新预览。所有加速路径都以正确性为前提。
受控测量说明了什么#
2026 年 9 月 3 日的一次内部应用工作线程记录,使用经验证的 tl2026-20260826-4f5a814 配置编译了一篇 24 页文章。兼容的检查点恢复所需编译器时间约为该记录中完整编译的十分之一。但记录没有保留复现绝对耗时所需的浏览器版本、设备 CPU、内存和缓存状态,因此它只能说明机制效果,不能作为用户基准测试或速度承诺。测量对象也是编译器工作,而非页面加载或 PDF 首次显示。结果会随文档、浏览器、设备、缓存和网络变化。
CorTeX 分别测量编译器就绪、PDF 生成和首个 PDF 页面显示的时间。构建过程限制工作区首次下载中的编译器代码量,避免编译加速拖慢编辑器打开速度。
写作时可能观察到的差异#
首次编译仍可能耗时,尤其是在新浏览器或文件较多的项目中。浏览器编译使用您的设备,因此大型论文在较旧或低内存电脑上可能更慢。CorTeX 会在资源较少的设备上限制并行工作,并在捷径不安全时执行完整编译。
您可以自行比较:打开临时 LaTeX 项目,等待第一份 PDF,修改靠后的一句话,观察下一次编译;再修改导言区的宏包,比较完整路径。耗时会因环境而异,但通常可以观察到冷、热编译的区别。
频繁修改设置、标签或引用,以及重建大量复杂图形,都可能增加完整编译次数。实用建议见保持 LaTeX 预览流畅和拆分 LaTeX 项目文件。
比较自己的编辑耗时时,请记录设置、源文件依赖或图形是否变化。这些信息让测量更有意义,也有助于按预览速度指南选择下一项检查。