> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/latex/uk/zapitannya-ta-vidpovidi/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md).

# У мене багато рисунків tikz, matlab2tikz або pgfplots, тому я отримую тайм-аут компіляції. Чи можу я е

## Як екстерналізувати графіку 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 {корінь}
    child {node {ліворуч}}
    child {node {праворуч}
      child {node {нащадок}}
      child {node {нащадок}}
    };

\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 розглядає екстерналізовану PDF-графіку TikZ як згенеровані вихідні файли, тому вони не з’являться у видимому списку файлів проєкту — вони є всередині проєкту, просто приховані від перегляду — ви можете переглянути список [згенерованих файлів](/latex/uk/baza-znan/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]
```

## Занадто багато складної графіки для екстерналізації!

Якщо ваша графіка складна та/або численна, ви, ймовірно, зіткнетеся в Overleaf із [тайм-аутом компіляції](/latex/uk/baza-znan/038-fixing-and-preventing-compile-timeouts.md#compiletimeout) під час початкової компіляції — коли згенеровані екстерналізовані файли створюються. У цьому розділі наведено кілька можливих обхідних шляхів, щоб уникнути тайм-аутів компіляції.

### Поступове збирання

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

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

* **Примітка**: Цей розділ припускає, що ваш проєкт використовує `\tikzexternalize[prefix=tikz/]` для кешування згенерованої графіки в папці під назвою `tikz`.

Як обхідний шлях, [завантажте свій проєкт Overleaf](/latex/uk/baza-znan/036-exporting-your-work-from-overleaf.md) і скомпілюйте його на локальному комп’ютері, щоб екстерналізувати (згенерувати) файли графіки. Після завершення компіляції `tikz` папка має містити кілька типів файлів для кожної згенерованої графіки, зокрема `*somegraphic*.pdf`, `*somegraphic*.md5` та `*somegraphic*.dpth`. Якщо ви завантажите ці файли до папки вашого проєкту Overleaf, `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 із того окремого проєкту у свій основний проєкт так:

* натисніть піктограму Upload files (![Overleaf file upload icon](/files/d78128096c3be73d6773d60867dc5b12bbb64e9b)) над панеллю списку файлів;
* виберіть **From another project**;
* у розкривному списку виберіть проєкт, що містить креслення 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)

Цей приклад дає такий результат:

![Приклад пакета LaTeX standalone](/files/ae829baaeaeddbd0013a1f06b554a3aa8bb2d218)

**Приклад: пакет 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)

Цей приклад дає такий результат:

![Приклад пакета LaTeX preview](/files/551aeda112218bef066aaec3264198d94c99c212)

### Відеодемонстрація: завантаження файлів з іншого проєкту 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://ayakaleaf-pro.ayaka.space/latex/uk/zapitannya-ta-vidpovidi/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.
