> 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/voprosy-i-otvety/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md).

# У меня много рисунков tikz, matlab2tikz или pgfplots, поэтому у меня возникает тайм-аут компиляции. Могу ли я e

## Как вынести графику TikZ во внешние файлы

Используйте библиотеку TikZ [под названием `external`](https://tikz.dev/library-external) для создания и хранения (кэширования) рисунков TikZ в виде PDF-файлов — процесс, который часто называют «*вынесением во внешние файлы*».

Загрузите библиотеку через `\usetikzlibrary{external}`, затем активируйте вынос во внешние файлы с помощью команды `\tikzexternalize`:

```latex
\usetikzlibrary{external}
\tikzexternalize[<options>]
```

где `<options>` — необязательный список параметров (пар ключ–значение), используемый для настройки `external` библиотеки.

* **ПРИМЕЧАНИЕ**: Чтобы внешнее вынесение TikZ работало в Overleaf, `\tikzexternalize` команда ***должна*** быть указана в главном `.tex` файле.

Давайте рассмотрим простой пример, в котором используется графика, взятая из [документации TikZ](https://tikz.dev/library-external):

```latex
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz/]

\begin{document}
% Этот рисунок TikZ будет записан в
% файл с именем 'output-figure0.pdf'
% внутри папки 'tikz'
\begin{tikzpicture}

  \node {root}
    child {node {left}}
    child {node {right}
      child {node {child}}
      child {node {child}}
    };

\end{tikzpicture}

\end{document}
```

Чтобы изучить этот пример, вы можете [открыть его в Overleaf.](https://www.overleaf.com/project/new/template/27519?id=1174669946\&templateName=Example+to+externalize+a+TikZ+graphic\&latexEngine=pdflatex\&texImage=texlive-full%3A2022.1\&mainFile=)

Код в нашем примере использует опцию `prefix=tikz/` с `\tikzexternalize`:

```latex
\tikzexternalize[prefix=tikz/]
```

Параметр `prefix=tikz/` задаёт имя папки (здесь, `tikz`) для кэширования сгенерированных (вынесенных во внешние файлы) рисунков — вам нужно будет создать эту папку вручную в проекте. Однако прежде чем LaTeX (код TikZ) сможет записывать в эту папку, в ней должен содержаться файл — подойдёт любой (заглушечный) файл; например, вы можете добавить пустой текстовый файл `foo.txt` в `tikz` папке.

Overleaf рассматривает вынесенную во внешние файлы графику TikZ в формате PDF как сгенерированные выходные файлы, поэтому они не будут отображаться в видимом списке файлов проекта — они присутствуют в проекте, просто скрыты от просмотра — вы можете посмотреть список [сгенерированных файлов](/latex/ru/baza-znanii/150-view-generated-files.md) чтобы увидеть их.

Следующий (краткий) видеоролик кратко показывает компиляцию приведённого выше примера и демонстрирует, как открыть список файлов, сгенерированных TikZ:

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/6VZVoHzhpNzOWSTvsWYm08/80d178255345da83bcd82b5fc64e5c6b/TikZExternalize.mp4>" %}

## Несколько замечаний

Вынесение графики TikZ во внешние файлы может быть вычислительно затратным для базового движка TeX (pdfTeX, XeTeX, LuaTeX и т. д.), поэтому `external` библиотека предоставляет опцию «оптимизировать» процесс. Если включить оптимизацию, TikZ попытается уменьшить свою нагрузку, «игнорируя» некоторые сложные (дорогостоящие), хотя и несущественные (для TikZ), команды — переопределяя их (на лету). Кроме того, некоторые команды из других пакетов могут вызывать ошибки в режиме выноса во внешние файлы; например, `\includepdf` из `пакета` pdfpages

```latex
\tikzexternalize[prefix=tikz/,optimize command away=\includepdf]
```

## Слишком много сложной графики для выноса во внешние файлы!

Если ваша графика сложная и/или многочисленная, вы, скорее всего, столкнётесь с [тайм-аутом компиляции](/latex/ru/baza-znanii/038-fixing-and-preventing-compile-timeouts.md#compiletimeout) в Overleaf во время начальной компиляции — по мере генерации вынесенных во внешние файлы рисунков. В этом разделе перечислены некоторые возможные способы обойти эту проблему и избежать тайм-аутов компиляции.

### Пошаговая сборка

Пошаговая сборка проекта путём [закомментирования](https://ctan.org/pkg/comment?lang=en) разных фрагментов проекта может помочь, но помните, что все сгенерированные файлы удаляются на серверах через фиксированные промежутки времени. Тогда ваш проект может не собраться при следующем входе, и вам придётся заново генерировать их поэтапно.

### Генерация рисунков локально

* **Примечание**: В этом разделе предполагается, что ваш проект использует `\tikzexternalize[prefix=tikz/]` для кэширования сгенерированной графики в папке под названием `tikz`.

В качестве обходного пути, [скачайте свой проект Overleaf](/latex/ru/baza-znanii/036-exporting-your-work-from-overleaf.md) и соберите его на локальном компьютере, чтобы вынести (сгенерировать) файлы графики во внешние файлы. После завершения сборки, `tikz` папка должна содержать несколько типов файлов для каждого сгенерированного рисунка, включая `*somegraphic*.pdf`, `*somegraphic*.md5` и `*somegraphic*.dpth`. Если вы загрузите эти файлы в `tikz` папку

* **Примечание (имена файлов графики)**: Overleaf задаёт `\jobname` на `вывод`, что влияет на имя, присваиваемое вынесенной во внешние файлы (сгенерированной) графике TikZ: по умолчанию сгенерированные файлы графики называются `output-figureN.EXT` где
  * `N` — это целое число, получаемое из последовательности/порядка, в котором появляются рисунки (`N`=0, 1, 2, ...);
  * `EXT` — это одно из расширений файлов, используемых TikZ, включая `pdf`, `md5` и `dpth` (а также `log`).
* **Оговорка**: Если после загрузки файлов графики вы впоследствии внесёте изменения в код TikZ в своём проекте, может потребоваться удалить соответствующие файлы графики в папке `tikz` чтобы Overleaf смог сгенерировать и использовать новую версию. В качестве альтернативы вы можете заново сгенерировать файлы на локальном компьютере и повторно загрузить их в Overleaf. Помните, что вам нужно заменить все `.pdf`, `.md5` и `.dpth` файлы для этого конкретного рисунка TikZ.

### Генерация рисунков в отдельном проекте

Другой вариант — создать отдельный проект только для графики, содержащий лишь рисунок(и) TikZ. Как только эти рисунки будут готовы, вы можете загрузить PDF из этого отдельного проекта в свой основной проект следующим образом:

* нажмите на значок загрузки файлов (![Overleaf file upload icon](/files/b8bb2d7751214ed6254a247b964ad20fe3978716)) над панелью списка файлов;
* выберите **Из другого проекта**;
* в раскрывающемся списке выберите проект, содержащий рисунки TikZ;
* выберите **из выходных файлов**;
* выберите **output.pdf** и (необязательно) задайте имя загружаемому файлу.

После загрузки вы можете получить доступ к отдельным рисункам, выбрав нужную страницу загруженного PDF; например, с помощью команды:

```latex
\includegraphics[page=1]{tikzpics.pdf}
```

Функция [видео в конце этой статьи](#videodemo) показывает загрузку PDF из отдельного проекта.

#### Как создать отдельный проект для графики

Используйте `standalone` или `preview` пакет для создания отдельного проекта, содержащего рисунки TikZ, — выходные PDF будут содержать страницы с плотной обрезкой, соответствующие размеру графики.

**Пример: пакет standalone**

Вот пример кода с использованием `standalone` пакета:

```latex
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node[fill=yellow]{Привет!};
\end{tikzpicture}

\begin{tikzpicture}
\node[fill=pink]{Мир!};
\end{tikzpicture}
\end{document}
```

[Откройте этот пример в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+of+standalone+package+and+TikZ\&snip=%5Cdocumentclass%5Btikz%5D%7Bstandalone%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cnode%5Bfill%3Dyellow%5D%7BHello%21%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cnode%5Bfill%3Dpink%5D%7BWorld%21%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Этот пример выводит следующий результат:

![Пример пакета standalone для LaTeX](/files/662912b70c9b832bd3f827bb16db09659cb5fb00)

**Пример: пакет preview**

Вот пример кода с использованием `preview` пакета:

```latex
\documentclass{article}
\usepackage[active,tightpage]{preview}
\setlength{\PreviewBorder}{0pt}
\usepackage{tikz}
\PreviewEnvironment[{[]}]{tikzpicture}
\begin{document}
\begin{tikzpicture}
\node[fill=yellow]{Привет!};
\end{tikzpicture}

\begin{tikzpicture}
\node[fill=pink]{Мир!};
\end{tikzpicture}
\end{document}
```

[Откройте этот пример в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+of+the+preview+package+and+TikZ\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bactive%2Ctightpage%5D%7Bpreview%7D%0A%5Csetlength%7B%5CPreviewBorder%7D%7B0pt%7D%0A%5Cusepackage%7Btikz%7D%0A%5CPreviewEnvironment%5B%7B%5B%5D%7D%5D%7Btikzpicture%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cnode%5Bfill%3Dyellow%5D%7BHello%21%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cnode%5Bfill%3Dpink%5D%7BWorld%21%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Этот пример выводит следующий результат:

![Пример пакета preview для LaTeX](/files/3f76492b4da992dc3289032b7f06a10a69d0f270)

### Видео-демонстрация: загрузка файлов из другого проекта Overleaf

Следующее видео демонстрирует, как загрузить PDF-файл (из другого проекта Overleaf), содержащий только графику — здесь мы используем `standalone` пакет для создания PDF-файла, содержащего иллюстрации на основе TikZ.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/6l4dDatlnqzIymJLofSnQP/61f8ad4b872f5a82f3cd45c487e2f101/TikzSeparateProjects.mp4>" %}


---

# 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/voprosy-i-otvety/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.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.
