复杂对象延迟了编译时间——如何使 Latex 更快地生成草稿版本?

复杂对象延迟了编译时间——如何使 Latex 更快地生成草稿版本?

自从我尝试插入一些非常大的(横向)表格,其中有许多列和单元格包含引文后,撰写博士论文就变成了一场噩梦。

完整的编译运行latexmk耗时超过 5 分钟。在我插入表格之前,大约需要 3 分钟,这仍然足够长。

由于表格包含引用(\cite),因此不能将其视为“静态”,因为数字引用可能会随着文档的变化而变化。(否则,我会在单独的文档中排版表格,然后插入带有的 pdf includegraphics。)

有哪些方法可以加快编译速度?

  • 有没有办法排除文档的某些部分(类似于includeonly),以便我通常可以用一个大矩形替换表格(通常会填满整个页面)?

当然,我可以删除我目前没有处理的章节,但部分需要它们进行交叉引用和交叉检查信息......

_当然,我可以减少编译次数,但为了避免错误,并看看在进行微小更改后会得到什么,如果可能的话,我想在对文本进行更改后直接进行编译。

有任何想法吗?


编辑

只是一个暗示,以防其他人遇到同样的问题:

我倾向于经常进行编译,以直接查看源文档中的更改是否产生了预期的效果,并避免以后难以发现的语法错误。这花费了我很多时间。

由于我正在使用Emacsauctex编辑我的源文档,并最终学会正确使用它的功能,因此区域指挥命令,它仅编译选定的区域,因此直接显示更改是否生效,而无需编译整个文档(或其大部分内容)。:-)

答案1

您可以使用该draft选项来稍微加快速度,但使用\includeonly是我所知道的唯一有效的解决方案。

请注意,它比你想象的要聪明。特别是,它保留了交叉引用。我看不出有什么理由不在写作过程中使用它。

答案2

-draftmode使用选项pdflatex并仅在最后一次运行中删除这一个,然后可以在不使用的情况下完成latexmk

pdflatex -draftmode <file>

它不会创建 PDF,而是创建所有辅助文件。这是一个有用的选项。

要排除文档的某些部分,请使用:

\iffalse
... to ignore ...
\fi

答案3

您可以对文档进行完整编译,并将 pdf 放在一边以供参考,因为您提到需要它。然后排除不需要的部分并快速编译剩余部分。这样,所有引用也将没问题,因为将创建所有 .aux 文件。

导致速度缓慢的另一个原因可能是图像过多(且分辨率较高)。如果您负担不起draft,您可以在工作时使用较低分辨率的图像,并仅在最终编译时合并全分辨率图像。通过将它们保存在单独的目录中,这可能非常简单且不会出错。

答案4

您可以为此目的使用包\ifdraft提供的开关:ifdraft

\documentclass[draft]{article}
%% \documentclass[final]{article}

\usepackage{ifdraft}

\begin{document}

\ifdraft{%
  placeholder for draft document%
}{%
  stuff for final document%
}

\end{document}

相关内容