我有一个朋友写了一份很长的文档。现在他有大约 130 页(PDF)。他在 Windows 上使用 TexWorks,他的文档有时需要 2 - 3 分钟才能编译完成。
我并不是在问这么长的文件的这个时间是否正常。我知道这取决于很多因素,每台电脑的 CPU 等因素都会有不同的时间。
但我想知道,如果文档中有很多构造,那么 tex 文件中的哪些构造会花费特别长的时间。
例如,我可以想象包含许多图像将花费大量时间,因为每个外部文件都必须加载到文档中(假设draft
未启用)。
此外,在他的文档中,他经常使用 来mbox
防止连字符。如果给出很多这样的字符,是否会增加文档编译所需的时间?
最后一个例子:他不知道该选项openright
,因此\newpage
在想要在正确的页面上打开新章节的地方都使用了此选项。这会导致额外的编译时间吗?
我希望我的问题足够清楚。
编辑:我在他的文档中还看到了一件事。正如我看到的第一行\documentclass[all]{...}
。我不知道这个选项all
存在。它是否按照我想象的那样工作?它是否真的启用了所有可能的选项?但这不是自相矛盾吗?例如对于parskip
和halfparskip
?这会影响性能吗?我想象它就像在 Java 中一样import *
。
答案1
我理解数学运算可能比纯文本运算耗时更长,因为其中涉及许多额外的考虑因素。包括图像(pdf 或 mps 除外)格式也会增加编译时间,因为需要处理这些图像,而不是简单地将它们放入代码中。
但是 TeX 是一个排版引擎,虽然它是图灵完备的,但当我们要求 TeX 处理需要大量处理的事情时,它不会特别高效。最先想到的例子(由于它最近才发布)是该软件包qrcode
,它使用 TeX 将文本字符串转换为二进制数据,然后从中构建图形二维码。TeX 能够完成这类事情,但并不是为此设计的;因此处理二维码所需的时间比处理简单文本要长一些。(在这种情况下不会太长;qrcode
看起来相当出色。但仍然如此。)
正如评论中提到的,在 TeX 中大量绘图同样会花费更多时间。 tikz
和朋友们就遭受此困扰;不过,考虑到它们将 TeX 延伸到其原始界限之外的程度,这些程序的效率非常高。 shapepar
虽然它将 TeX 用于预期目的,但它强制 TeX 以奇怪和有创意的形状排版段落,并且必须进行反复测试以确定如何最好地将给定的文本放入这些形状中;因此,它通常比简单地在正常的矩形段落中排版文本需要更长的运行时间。
底线是,TeX 被设计用于将行分成段落,将段落分成页面,将公式分成排版良好的单元;除此之外的任何事情都会变慢。