У меня есть друг, который пишет довольно длинные документы. Сейчас у него около 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 был разработан для разбиения строк на абзацы, абзацев на страницы, а формул на аккуратно набранные блоки; все остальное будет работать медленнее.