Appearance
编译过慢,一次更改需要编译半分钟
⌛ 受限于免费版 Overleaf?
如果只是受限于 Overleaf 免费编译时长 20 s,可以考虑换用免费编译 1 min 的国产 TeXPage,或其它平台。
减少编译步骤
全量编译 → latexmk
如果你觉得模板中 xelatex → biber → xelatex → xelatex 四步编译太慢,每次都全量编译,需要等待半分钟才能出结果,你可以尝试使用 latexmk 进行编译。latexmk 每次会根据你 LaTeX 文档的更改,增量编译,从而加快对原文档进行微小变化后(比如只修改一个字)的编译速度。
完整编译 → 部分编译
在论文写作初期,主要关注文字内容,可以先部分编译;待文章基本定型,需要精调时,再完整编译。
- 若没有修改文献引用,只需 xelatex → xelatex。
- 若还不关心超链接,只需单次 xelatex。
更换平台
有人反映编译速率与平台高度相关。
编辑环境:VS Code → TeX studio
从我自己使用来看,TeX studio 的编译速度一般都比 VS Code 快一些,如果你觉得 VS Code 的 LaTeX Workshop 编译太慢,可以考虑尝试使用 TeX studio。
操作系统:Windows → Unix
在 Linux、macOS 等 Unix 操作系统上编译 LaTeX 可能比 Windows 上快,有人报告 Windows 两分钟而 macOS 只需十秒。
另外据说在 Windows 上安装 WSL(Windows Subsystem for Linux),在 WSL 里面编译 LaTeX 都比直接在 Windows 上编译快。
禁用PDF压缩
每次 xelatex 编译结尾会调用 dvipdfmx 生成 PDF。关闭 dvipdfmx 的压缩PDF功能可以加快编译,具体有如下两种方法。
典型效果:生成PDF变快五倍(数秒),但文件增大六倍
用一份80页文档试了一下,0级比默认的9级快5倍。0级生成的PDF有 39 MB,9级则仅 5.5 MB。
shell
$ hyperfine 'xdvipdfmx -E -o "main.pdf" "main.xdv" -z 0' 'xdvipdfmx -E -o "main.pdf" "main.xdv" -z 9'
Benchmark 1: xdvipdfmx -E -o "main.pdf" "main.xdv" -z 0
Time (mean ± σ): 774.7 ms ± 23.6 ms [User: 530.6 ms, System: 205.3 ms]
Range (min … max): 744.5 ms … 820.7 ms 10 runs
Benchmark 2: xdvipdfmx -E -o "main.pdf" "main.xdv" -z 9
Time (mean ± σ): 3.875 s ± 0.510 s [User: 3.538 s, System: 0.255 s]
Range (min … max): 3.411 s … 4.704 s 10 runs
Summary
xdvipdfmx -E -o "main.pdf" "main.xdv" -z 0 ran
5.00 ± 0.68 times faster than xdvipdfmx -E -o "main.pdf" "main.xdv" -z 9
不过 xdvipdfmx 只是编译中的一步,最终增量编译仍需要十几秒。
修改 TeX
编辑main.tex
,在最开头设置。
latex
% Set zlib compression level to 0
\special{dvipdfmx:config z 0}
\documentclass{article}
\begin{document}
hello world.
\end{document}
修改编译命令
也可不改*.tex
,向latexmkrc
加入下面这段,通过-z 0
指定压缩级别。
perl
# Disable compression for faster compilation
$xdvipdfmx = "xdvipdfmx -z 0 -E -o %D %O %S";
latexmkrc
是 perl 代码,也可检测环境变量之类的。
perl
# Disable compression for faster compilation
if (exists $ENV{'LATEX_NO_PDF_COMPRESSION'}) {
$xdvipdfmx = "xdvipdfmx -z 0 -E -o %D %O %S";
}