Contents

Latex编写长文档加速编译方法及技巧

1. 编译器设置

首先,Latex基本编译流程为:

pdflatex main #生成aux文件
bibtex CH1    #生成每个Chapter的bbl文件,
bibtex CH2
#...
pdflatex main #生成交叉引用等索引文件
pdflatex main #生成最后PDF文件

编译过程优化思路

  1. 在最后一步生成最终PDF文件之前,没有必要频繁生成PDF文件
  2. 编译过程中,减少向terminal打印所有编译过程log

pdflatex设置

pdflatex在1~5步添加flag:

  1. -interaciton=batchmode
  2. -draftmode

最后一步只添加:

-interaction=batchmode

xelatex设置

中文文档较多使用xelatex进行编译 xelatex在1~5步添加flag:

  1. -interaciton=batchmode
  2. -no-pdf

最后一步只添加:

-interaction=batchmode

2. 长文档编写技巧

核心思想:分而治之

大致的main.tex文件结构如下

\documentclass{book}
\input{preamble} %%引言区,\usepackage, 设定宏等
\begin{document}
\include{CH1}
\include{CH2}
...
\end{document}

通过\include命令将不同的Chapter导入,这样的好处有:

  1. 方便厘清文章结构
  2. 若撰写书籍,能够很方便地分章节多人协作
  3. 章节独立修改,不影响其余章节的内容和编译

一些建议

  1. 在引言区使用\includeonly{X,XX,XXX}只对文件列表中的文件才会被实际include进主文档

    PS1 如果有之前编译过其他未在文件列表中的文档或者完整文档,那么编号、交叉引用等不会变 PS2 \include前后会有\clearpage另起新页

  2. 利用\input,功能:直接将内容复制导入到文档之中(即不会强行制造新页),导入文件内容可以以\endinput结尾类似EOF

  3. 编写长文档时,往往并不需要实时输出当前文件,更多只需要检查语法是否合法

    利用\usepackage{syntonly}包并在导言区声明\syntaxonly,可以之检查语法而不输出PDF文件,可以提高编译速度

最后,根据上述建议,更新后的main.tex大致如下

\documentclass{book}
\input{preamble} %%引言区,\usepackage{syntonly}, 设定宏等
\syntaxonly %声明后,仅检查语法是否正确

\includeonly{CH2} %仅真正编译CH2
\begin{document}
\include{CH1}
\include{CH2}
...
\end{document}

参考:

  1. https://tex.stackexchange.com/questions/8791/speeding-up-latex-compilation
  2. 刘海洋,《Latex入门》