Какие конструкции могут привести к длительному времени компиляции документа?

Какие конструкции могут привести к длительному времени компиляции документа?

У меня есть друг, который пишет довольно длинные документы. Сейчас у него около 130 (PDF) страниц. Он использует TexWorks на Windows, и его документ иногда компилируется за 2-3 минуты.

Я не спрашиваю, нормально ли это время для такого длинного файла. Я знаю, что это зависит от многих факторов, и у каждого ПК будет разное время в зависимости от процессора и т. д.

Но мне было интересно, какие конструкции в tex-файле займут особенно много времени, если их в документе много.

Например, я могу себе представить, что включение большого количества изображений займет много времени, поскольку каждый внешний файл придется загружать в документ (предполагается, draftчто эта функция не включена).

Также в своем документе он очень часто использует mboxдля предотвращения переносов. Если их будет много, увеличится ли время, необходимое для компиляции документа?

В качестве последнего примера: он не знал эту опцию openrightи поэтому использовал ее \newpageвезде, где хотел, чтобы новая глава открывалась на нужной странице. Приводит ли это к дополнительному времени компиляции?

Надеюсь, мой вопрос достаточно ясен.

Редактировать: Еще одна вещь, которую я увидел в его документе. В первой же строке, которую я увидел \documentclass[all]{...}, я не знал, что эта опция allсуществует. Она делает то, что я себе представляю? Она действительно включает все возможные опции? Но разве это не противоречие? Например, для parskipи halfparskip? Повредит ли это производительности? Я представляю, что это как в Java import *.

решение1

Я понимаю, что математика может занять больше времени, чем простой текст, из-за множества дополнительных соображений, которые вовлечены. Включение изображений (кроме форматов pdf или mps) также увеличит время компиляции, поскольку их нужно обработать, а не просто вставить в код.

Но TeX — это наборный движок, и хотя он является полным по Тьюрингу, вещи, требующие большой обработки, не будут особенно эффективными, когда мы попросим TeX сделать их. Пример, который приходит на ум сразу же (из-за его недавнего выпуска), — это пакет qrcode, который использует TeX для преобразования строк текста в двоичные данные, а затем создает из них графические QR-коды. TeX способен на такие вещи, но не был разработан для этого; поэтому обработка QR-кода занимает немного больше времени, чем обработка простого текста. (В данном случае не намного дольше; qrcodeкажется, что это довольно хорошо. Но все же.)

Как также упоминалось в комментариях, обширное рисование в TeX также займет больше времени, tikzи друзья страдают от этого; хотя, опять же, эффективность этих программ замечательна, учитывая, насколько они расширяют TeX за пределы его изначальных границ. shapepar, хотя он использует TeX по назначению, заставляет TeX набирать абзацы в странных и креативных формах и вынужден проводить повторные тесты, чтобы определить, как лучше всего вписать заданный текст в эти формы; в результате, на выполнение этого часто уходит больше времени, чем на набор текста в обычных прямоугольных абзацах.

Суть в том, что TeX был разработан для разбиения строк на абзацы, абзацев на страницы, а формул на аккуратно набранные блоки; все остальное будет работать медленнее.

Связанный контент