> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ru/baza-znanii/038-fixing-and-preventing-compile-timeouts.md).

# Исправление и предотвращение тайм-аутов компиляции

Когда вы нажимаете **Пересобрать** кнопку в вашем проекте Overleaf, вы запускаете процесс, который читает файлы вашего проекта и преобразует их в сверстанный PDF. Если вы получаете ошибку тайм-аута компиляции, это означает, что процесс компиляции не смог завершиться в пределах [лимита времени, предусмотренного вашим тарифом Overleaf](/latex/ru/baza-znanii/119-overleaf-plan-limits.md).

Хотя некоторые проекты могут быть слишком большими или сложными, чтобы создать PDF за отведённое время, тайм-ауты компиляции часто можно исправить или предотвратить.

## Шаги по устранению тайм-аутов компиляции

Следуйте этим шагам, чтобы выявить и исправить распространённые проблемы, вызывающие тайм-ауты компиляции:

1. [Проверьте наличие ошибок компиляции и исправьте их с помощью **Остановка на первой ошибке** mode](#first-errors)
2. [Попробуйте **Fast\[draft\]** режиме и оптимизируйте размеры изображений](#second-images)
3. [Оцените свой проект на предмет времязатратных задач](#third-assess)

Помимо выполнения этих шагов, пожалуйста, ознакомьтесь с рекомендациями о том, что делать в [конкретных ситуациях с тайм-аутом](#anchor-advice) а также с тем, какие [лучшие практики](#anchor-best) следует соблюдать, чтобы предотвращать тайм-ауты компиляции.

Хотя многие проекты можно скомпилировать за время, предоставляемое в бесплатном тарифе Overleaf, если вы готовите большой или сложный документ, вам может потребоваться [подписаться на премиум-тариф](https://www.overleaf.com/user/subscription/plans) чтобы получить больше времени на компиляцию.

## Шаг 1: Проверьте наличие ошибок компиляции и исправьте их

Некоторые ошибки компиляции или накопление нескольких ошибок могут полностью заблокировать [процесс сборки latexmk](https://learn.overleaf.com/learn/Kb/How_does_Overleaf_compile_my_project%3F) и привести к тайм-ауту компиляции. Чтобы найти и исправить ошибки, включите **Остановка на первой ошибке** режим компиляции в **Пересобрать** выпадающем меню:

![Скриншот, показывающий, как включить режим компиляции «Остановка на первой ошибке»](/files/68fafd24f77c30f21b08c420404aa65cf5012944)

Это [**Остановка на первой ошибке**](/latex/ru/baza-znanii/149-using-the-stop-on-first-error-compilation-mode.md) Этот режим компиляции делает именно то, чего вы ожидаете, — он немедленно останавливает компиляцию при возникновении ошибки. Когда это происходит, PDF не создаётся и отображается сообщение с описанием ошибки. Включение **Остановка на первой ошибке** позволяет находить и исправлять каждую ошибку в проекте, пока проект не станет безошибочным.

Нажатие на каждое сообщение об ошибке перенесёт вас к строке в исходном коде, которая вызывает проблему, чтобы вы могли исправить код. Несколько распространённых ошибок объясняются на [эту страницу](/latex/ru/osnovy-latex/05-errors.md), а некоторые советы по отладке LaTeX приведены на [эту страницу](/latex/ru/voprosy-i-otvety/81-tips-and-tricks-for-troubleshooting-latex.md). Также см. [раздел в этой статье](#anchor-fatal) в котором перечислены некоторые распространённые **фатальные ошибки компиляции** которые вызывают тайм-ауты компиляции.

## Шаг 2: Попробуйте компилировать в режиме Fast \[draft]

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

Один из способов понять, является ли обработка изображений причиной тайм-аута, — попробовать компиляцию в **Быстрый \[черновик]** режиме. Для этого выберите **Быстрый \[черновик]** опцию в меню **Recompile**. Это заменяет все графические элементы на рамки и делает компиляцию PDF гораздо быстрее:

![Настройка режима черновой компиляции для проекта Overleaf](/files/09e3fb8413d7267eed844323aa353139aac00019)

Если ваш документ компилируется в **Быстрый \[черновик]** режиме, но не завершается при компиляции в **Нормальный** режиме, причиной могут быть большие или многочисленные файлы изображений.

### Оптимизация файлов изображений

Если вы использовали несколько больших PNG- или JPEG-файлов с высоким разрешением, обработка этих файлов может значительно увеличить время, необходимое для компиляции проекта. Обязательно:

* используйте PDF-файлы вместо PNG-файлов для диаграмм и графиков.
* Оставляйте JPEG только для фотографий.

Дополнительные советы см. в: [Оптимизация больших файлов изображений](/latex/ru/baza-znanii/113-optimising-very-large-image-files.md).

## Шаг 3: Оцените свой проект на предмет времязатратных задач и фатальных ошибок

Если оба **Остановка на первой ошибке** и **Fast\[draft]** режима компиляции по-прежнему приводят к тайм-ауту компиляции, вам, возможно, придётся поискать глубже, чтобы выявить причину тайм-аута компиляции и (надеюсь) устранить её.

1\. [Проверьте список времязатратных практик и пакетов, которые могут замедлять компиляцию](#anchor-slow)

2\. [Проверьте список распространённых фатальных ошибок, которые могут привести к тайм-аутам](#anchor-fatal)

3\. [Ознакомьтесь с советами для конкретных сценариев тайм-аута, которые лучше всего описывают вашу ситуацию](#anchor-advice)

### Времязатратные практики и пакеты

Некоторые практики и пакеты могут приводить к очень медленной компиляции и даже к тайм-аутам.

**Включение сложных рисунков TikZ или pgfplots**

`TikZ` и [`pgfplots`](https://ctan.org/pkg/pgfplots?lang=en) создаёт отличную графику, но может [занимать много времени при компиляции](https://tex.stackexchange.com/a/254946/226). Существует [несколько способов вынести рисунки TikZ во внешние файлы](/latex/ru/voprosy-i-otvety/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) чтобы LaTeX не приходилось перерисовывать их каждый раз при создании нового PDF.

**Использование пакета mhchem**

Последние версии [`mhchem` пакет](https://ctan.org/pkg/mhchem?lang=en) могут компилироваться дольше. В зависимости от того, для чего вы его используете, [`chemformula` пакет](https://ctan.org/pkg/chemformula) может сократить время, необходимое для компиляции. Если вы уже используете `mhchem`, вы можете попробовать просто заменить его на `chemformula` :

```latex
% \usepackage{mhchem}
\usepackage{chemformula}
\let\ce\ch
```

* **Примечание**: между `mhchem` и `chemformula`, поэтому это не всегда может работать хорошо. Например, `\ce{2H2O}` будет отображаться нормально с `mhchem`, но с `chemformula` вам придётся записать это как `\ch{2 H2O}` с пробелом после начального `2`.

**Включение вызовов трассировки или отладки**

Если у вас в документе есть `\tracingall` команда, она может записывать *много* данных в `.log`файл журнала `\tracingall` данных в `.log` файле журнала может сделать компиляцию чрезвычайно медленной. Рекомендуется удалить `\tracingall` вызовы, а если вам нужны подобные методы для отладки, используйте [`трассировку` пакет](http://ctan.org/pkg/trace) разделители LaTeX.

**Использование пакета acro**

Пользователи [`acro` пакет](https://www.ctan.org/pkg/acro) обязательно [сообщали, что версия 3 медленно](https://github.com/cgnieder/acro/issues/205) загружает определения сокращений. Одним из следствий `acro`увеличенного времени компиляции является возможность вызова тайм-аута компиляции; к счастью, есть обходной путь: использовать версию 2 `acro` пакет.

Переход с версии 3 обратно на версию 2 может потребовать правки проекта, чтобы обеспечить совместимость с опциями, возможностями и командами версии 2. Документация для версии 2 доступна; она содержится в более ранних выпусках исходного кода, которые можно [загрузить с GitHub](https://github.com/cgnieder/acro/releases/tag/v2.10).

Вот несколько моментов, на которые стоит обратить внимание при возврате к версии 2 — этот список далеко не исчерпывающий:

1. Измените основной `.tex` на:
   * из `\usepackage{acro}` на `\usepackage{acro}[=v2]`
   * измените `include=...` ключ опции `\printacronyms` на `include-classes=...`
2. Внутри любой `\DeclareAcronym` команды убедитесь, что `tag=...` ключ опции изменён на `class=...`.

Обратитесь к [`acro` документации версии 2.10](https://github.com/cgnieder/acro/releases/tag/v2.10) за командами и опциями, доступными в версии 2, но не в версии 3.

**Использование изображений EPS или SVG**

Использование изображений EPS или SVG может потребовать дополнительной обработки для преобразования их в формат PDF. Эта дополнительная обработка увеличит время, необходимое для компиляции проекта.

* Хотя **latex** компилятор будет напрямую поддерживать изображения EPS, **pdfLaTeX** компилятор не поддерживает изображения EPS, поэтому при использовании этого компилятора требуется дополнительный шаг для преобразования их в PDF-изображения. Обработка выполняется `epstopdf` пакетом, который использует `Ghostscript` для преобразования EPS-файлов в PDF. Этот шаг преобразования может значительно увеличить время, необходимое для компиляции проекта.
* Файлы изображений SVG не поддерживаются напрямую ни одним компилятором LaTeX и требуют использования `svg` пакета и `\includesvg` команды, которую он предоставляет.  `svg` Пакет использует `inkscape` для преобразования SVG-изображений в PDF. Этот шаг преобразования может значительно увеличить время, необходимое для компиляции проекта.

Для более быстрых результатов, которые могут помочь избежать тайм-аутов компиляции, используйте PDF-версии изображений вместо форматов EPS или SVG.

**Использование пакета tabularray**

Это `tabularray` пакет предоставляет альтернативу стандартным командам и окружениям для создания таблиц в LaTeX. К сожалению, пакет `tabularray` работает очень медленно, особенно для больших таблиц и тех, что используют определённые типы столбцов. В настоящее время вместо `tabularray` рекомендуются стандартные методы определения таблиц из-за соображений времени компиляции.

**Создание бесконечного цикла в команде**

Во время компиляции команды LaTeX очень редко могут вызвать «бесконечный цикл». Бесконечные циклы чаще всего вызываются ошибками в пакетах или в определённых пользователем командах.

Если вы подозреваете, что у вас возник цикл, проверьте, не создали ли вы случайно [рекурсивным](https://en.wikipedia.org/wiki/Recursion) рекурсивное определение в одной из ваших пользовательских команд, например `\newcommand{\foo}{\foo}`.

### Некоторые причины фатальных ошибок компиляции

Ниже приведены некоторые известные причины фатальных ошибок.

**Включение пустых строк в чувствительные команды заголовка**

Классы LaTeX и шаблоны журналов часто предоставляют специальные команды для указания частей заголовка документа. Эти команды обычно предназначены для простых аргументов, и их использование неожиданным образом может привести к ошибкам компиляции и даже к тайм-аутам. Прежде всего, команды вроде `\author{...}`, `\date{...}` и `\title{...}` не должны содержать пустых строк.

**Включение слишком большого числа фиксированных плавающих объектов**

Если у вас слишком много таблиц или рисунков, использующих `[H]` идентификатор размещения из `float` пакета, это может привести к тому, что LaTeX войдёт в бесконечный цикл, пытаясь найти подходящие места для всех них. Рассмотрите возможность замены всех `[H]` с `[hbt!]` и, при необходимости, время от времени `\clearpage` чтобы вывести все таблицы и рисунки из очереди перед вставкой разрыва страницы.

**Ошибки в команде \caption и окружениях tabular**

Вот список проблем, связанных с таблицами, на которые стоит обратить внимание — в целом, будьте внимательны при наборе таблиц!

* `\caption{...}` всегда должна размещаться *вне* окружения `tabular` окружения, потому что это может вызвать фатальные ошибки, если [`caption` пакет](https://ctan.org/pkg/caption) загружен, как показано в следующем примере:

  ```latex
  \documentclass{article}
  \usepackage{caption}
  \begin{document}

  \begin{table}
      \begin{tabular}{c|c}
          \caption{Caption}% \caption{...} должна быть ВНЕ окружения tabular
          a & b \\
          c & d \\
      \end{tabular}
  \end{table}
  \end{document}
  ```

  [Откройте этот пример **который вызывает ошибку тайм-аута Overleaf**](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Overleaf+timeout+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bcaption%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Btable%7D%0A++++%5Cbegin%7Btabular%7D%7Bc%7Cc%7D%0A++++++++%5Ccaption%7BCaption%7D%25+%5Ccaption%7B...%7D+should+be+OUTSIDE+the+tabular+environment%0A++++++++a+%26+b+%5C%5C%0A++++++++c+%26+d+%5C%5C%0A++++%5Cend%7Btabular%7D%0A%5Cend%7Btable%7D%0A%5Cend%7Bdocument)
* Напротив, обратите внимание, что `longtable` окружения *делает* требуют `\caption{...}` внутри него, как показано в примере в нашей [справочной статье о таблицах](/latex/ru/risunki-i-tablicy/01-tables.md#multi-page-tables).
* `\caption{...}` не должны содержать `\\`, `\newline`, `\centering`, `\raggedright` и т. п.
* В некоторых шаблонах или пакетах, `\ref{...}` или `\cite{...}` внутри `\caption` может потребоваться предварять `\protect` чтобы избежать фатальных ошибок; например, `\protect\cite{...}`.
* Проверьте незавершённые `\cmidrule{...}` внутри `tabular` окружения; для неё требуется диапазон столбцов, поэтому вам нужно писать `\cmidrule{3-3}` вместо просто `\cmidrule{3}` если вы хотите горизонтальную линию, охватывающую только один столбец.
* Избегайте вложенных `tabular` окружений. Взгляните на [`makecell` пакет](https://ctan.org/pkg/makecell?lang=en) если вы хотите добавлять ручные переносы строк в ячейке таблицы, или на `тип столбца p{...}` и/или пакет [`tabularx`](https://ctan.org/pkg/tabularx) если вы ищете способы создавать столбцы с автоматическим переносом длинных строк.
* Если у вас есть строки таблицы, начинающиеся с `[...` , вам может потребоваться добавить `\relax` после `\\` в предыдущей строке.

**Использование пакета soul или changes**

Если вы используете [`soul`](https://ctan.org/pkg/soul) или [`changes`](https://ctan.org/pkg/changes) для выделения текста или его зачёркивания, то `\cite` и `\ref` может потребоваться предварять `\protect`; например, `\protect\cite{...}`.

**Использование tikzpicture**

Проверьте отсутствие `;` в конце команд path/node и `]` в конце списков параметров в `tikzpicture`s.

**Использование пакета breqn**

Это [`пакета breqn`](https://ctan.org/pkg/breqn) пакета `dmath` может зациклиться; замените его на `align` и при необходимости разбивайте строки вручную.

**Использование пакета babel**

Некоторые [`babel`](https://ctan.org/pkg/babel) параметры языка изменяют значение некоторых символов, что может вызвать проблемы, когда эти символы используются в своём «обычном» контексте; например, в математическом режиме. Чтобы избежать этого, попробуйте использовать опцию `shorthands=off` при загрузке babel (например, `\usepackage[shorthands=off]{babel}`).

**Использование пакета jabbrv**

Некоторые шаблоны используют [`jabbrv` пакет](https://github.com/compholio/jabbrv) для автоматического сокращения названий журналов (см. [этот пример Overleaf](https://www.overleaf.com/latex/templates/automatic-journal-abbreviations/mxfsdscmvxcr)). Когда поле журнала в `.bib` файле содержит символы Unicode с диакритическими знаками (например, Biología), это может заблокировать компиляцию и вызвать тайм-аут в Overleaf. Вместо этого нужно использовать команды LaTeX, например `Biolog{\'i}a` или вы можете [изменить компилятор проекта](/latex/ru/baza-znanii/026-changing-compiler.md) на `XeLaTeX` или `LuaLaTeX`, оба из которых имеют встроенную поддержку чтения символов Unicode.

## Рекомендации для некоторых конкретных ситуаций с тайм-аутом

### Мой проект компилировался без ошибок, но теперь я вижу тайм-аут компиляции

Иногда даже небольшое изменение может вызвать тайм-аут компиляции. Чтобы помочь выявить причину проблемы и исправить её, попробуйте следующие шаги:

1. Используйте [Перекомпилировать с нуля](/latex/ru/baza-znanii/028-clearing-the-cache.md) чтобы удалить все устаревшие сгенерированные файлы, которые могут вызывать проблемы.
2. Используйте [функцию Overleaf History](/latex/ru/drugie-temy/49-using-the-history-feature.md) чтобы найти ваши последние изменения. См. список причин фатальных ошибок компиляции выше.
3. Используйте [Остановка на первой ошибке](/latex/ru/baza-znanii/149-using-the-stop-on-first-error-compilation-mode.md) чтобы найти и исправить любую ошибку, которую вы случайно внесли.

Возможно, небольшое изменение привело к фатальной ошибке компиляции — пожалуйста, см. [список фатальных ошибок компиляции выше](#anchor-fatal) для некоторых возможных причин.

### Я только что загрузил проект в Overleaf, и у меня возник тайм-аут компиляции

Возможно, в вашем проекте отсутствует ключевой файл или пакет, либо он организован так, что это создаёт проблемы для процесса компиляции Overleaf.

* Если проект компилировался без проблем на вашем локальном компьютере, но не компилируется в Overleaf, возможно, у вас используется другая версия **TeX Live** на вашем компьютере. Вы можете [изменить версию TeX Live для вашего проекта](https://www.overleaf.com/blog/new-feature-select-your-tex-live-compiler-version) чтобы она больше соответствовала той версии, на которой ваш проект успешно компилировался локально.
* У вашего загруженного проекта может быть не самая оптимальная структура файлов для Overleaf. Если основной tex-файл находится в папке, у компилятора могут возникнуть трудности с поиском некоторых зависимостей файлов. Если основной tex-файл находится в папке, попробуйте перестроить проект так, чтобы основной tex-файл находился на верхнем уровне проекта.

Следование [приведённым выше инструкциям по поиску и исправлению ошибок](#first-errors) часто позволяет выявить отсутствующие файлы, проблемы с версией TeX Live и проблемы со структурой проекта.

### Я сделал копию проекта, который компилировался, но теперь сталкиваюсь с тайм-аутом компиляции

Новые проекты, включая копии существующих проектов, по умолчанию используют последнюю версию TeX Live. Если ваш исходный проект был на более старой версии TeX Live, возможно, в последней версии есть несовместимости, вызывающие проблемы. Попробуйте [изменить версию TeX Live](https://www.overleaf.com/blog/new-feature-select-your-tex-live-compiler-version) в новой копии так, чтобы она совпадала с версией исходного проекта.

### Мне не удаётся скомпилировать проект, когда я включаю все разделы, но каждый из них по отдельности компилируется нормально

Следуйте [советам выше по использованию опции компиляции Fast\[draft\]](#second-images) чтобы проверить, можно ли скомпилировать весь проект в режиме Fast\[draft].

В некоторых случаях крупный проект можно успешно скомпилировать в два этапа: сначала запустив его в режиме Fast\[draft], а затем скомпилировав в обычном режиме.

Проверьте каждый раздел проекта, чтобы выявить возможные источники медленной компиляции. К ним могут относиться [большие файлы изображений, которые можно оптимизировать](#anchor-optimize), или другие [времязатратные практики или пакеты](#anchor-slow).

### Мой проект иногда уходит в тайм-аут, но не может стабильно компилироваться

Возможно, ваш проект работает очень близко к максимальному времени компиляции. Следуйте советам выше по [исправлению ошибок](#first-errors), [оптимизации изображений](#second-images), и [избеганию времязатратных практик или пакетов](#third-assess).

## Лучшие практики для предотвращения тайм-аутов компиляции

Гораздо лучше предотвращать возникновение тайм-аутов компиляции, чем сталкиваться иногда со стрессовым процессом их исправления после того, как они уже произошли. Эти рекомендации должны помочь вам предотвратить тайм-ауты компиляции или быстро восстановиться после них, когда они всё же возникают.

### Исправляйте все ошибки компиляции, как только они возникают

Ошибки компиляции отмечаются красным уведомлением рядом с кнопкой Recompile, как описано на [эту страницу](/latex/ru/voprosy-i-otvety/81-tips-and-tricks-for-troubleshooting-latex.md). Если вы нажмёте на красный значок, вы увидите сообщения об ошибках. Нажатие на каждое сообщение об ошибке перенесёт вас к соответствующей строке в исходном коде, чтобы вы могли исправить код. Мы рекомендуем исправлять ошибки как можно раньше, поскольку их накопление может привести к трудноотлаживаемым и фатальным ошибкам в будущем.

[Эта страница](/latex/ru/osnovy-latex/05-errors.md) объясняет несколько распространённых ошибок компиляции. Если вам трудно понять сообщение об ошибке, часто помогает поиск в интернете по тексту ошибки — вы попадёте на запись в блоге или на форуме, где ошибка объясняется и предлагаются решения.

### Помечайте версии проекта перед большими изменениями или важными этапами

Используйте [функцию Overleaf History](/latex/ru/drugie-temy/49-using-the-history-feature.md) чтобы помечать версии проекта, и тогда вы сможете легко сравнивать текущий проект с более ранними версиями. Это может помочь вам быстро найти новые источники ошибок компиляции.

### Организуйте ваши файлы

Гораздо легче находить и исправлять проблемы, если проект хорошо организован. Кроме того, хорошее управление проектом может позволить вам компилировать отдельные разделы проекта, что облегчает выявление областей, которые могут способствовать чрезмерно долгой компиляции. Пожалуйста, [см. здесь](/latex/ru/struktura-dokumenta/07-management-in-a-large-project.md) за советами по управлению большими проектами.

## Подробнее о компиляции и времени компиляции

### Что вообще такое «компиляция»?

Компиляция — это процесс преобразования вашего LaTeX-кода в готовый PDF-файл. [Узнайте больше о том, как Overleaf компилирует проекты LaTeX](/latex/ru/baza-znanii/064-how-does-overleaf-compile-my-project.md).

### Ограничения добросовестного использования

Некоторым большим или сложным документам может потребоваться больше времени на компиляцию, чем позволяет лимит ожидания в бесплатном плане Overleaf, и им может понадобиться увеличенное время компиляции, доступное в нашем [платных тарифов](https://www.overleaf.com/user/subscription/plans). Некоторые проекты могут даже требовать более длительного времени компиляции, чем доступно в наших платных тарифах. В таких случаях вам может понадобиться скачать свой проект и скомпилировать его локально.

### Всё ещё не получается?

Если у вас возникает тайм-аут компиляции, который вы не можете устранить с помощью советов здесь, пожалуйста [сообщите нам](https://www.overleaf.com/contact).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ru/baza-znanii/038-fixing-and-preventing-compile-timeouts.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
