> 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/uk/struktura-dokumenta/08-multi-file-latex-projects.md).

# Багатофайлові проєкти LaTeX

## Вступ

У [великих документах LaTeX](/latex/uk/struktura-dokumenta/07-management-in-a-large-project.md) зазвичай є кілька `.tex` файлів, по одному для кожного розділу або секції, а потім їх об’єднують разом, щоб згенерувати один вихідний файл. Це допомагає все впорядкувати та полегшує налагодження документа, але зі збільшенням документа компіляція займає більше часу. Це може дратувати, оскільки зазвичай щоразу хочеться працювати лише з певним файлом.

Природний спосіб подолати це — компілювати кожен файл окремо. Є два основні пакети, які дозволяють компіляцію окремих файлів у багатофайловому проєкті. Вибір залежить від того, що саме вам потрібно.

* З [сайті **subfiles** accents](#the-subfiles-package) ви можете компілювати кожен підфайл окремо, і кожен підфайл автоматично використовуватиме преамбулу з головного файла.
* З [сайті **standalone** accents](#the-standalone-package) кожен підфайл працює як окремий файл, пізніше підфайли можна об’єднати в головний документ, який підтягне преамбули з кожного з них. Особливо корисно, якщо вам потрібно повторно використовувати той самий файл у більш ніж одному документі; гарний приклад цього — tikz-зображення.

## Нотатки про \documentclass у файлах .tex в Overleaf

Як показано в наступному відеофрагменті, навіть якщо ви встановили головний `.tex` файл проєкту, ви можете вибрати інший файл для компіляції — за умови, що він містить `\documentclass` оголошення. Однак, щоб переконатися, що всі елементи вашого проєкту скомпільовано правильно — наприклад, глосарії, доступ до шляхів до `.bib` файлів тощо — ми наполегливо рекомендуємо компілювати лише ті файли, які містяться в кореневому каталозі вашого проєкту.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/U2nGfRx9NwNGX0vWXNebP/1ca4b9a4b2f36d5ca9c0dbaa87f44bfa/maincompile.mp4>" %}

## Пакет subfiles

Цей пакет підходить для більшості ситуацій, ним дуже легко користуватися.

Приклади в цьому розділі мають таку ієрархію файлів:

![CompileSubfilesEx1OverleafV2.png](/files/8a2bc7e6ea89e08a723992e7e52c5ba7ef2e3e54)

### Головний файл

У головному файлі потрібні дві спеціальні команди.

```latex
\documentclass{article}
\usepackage{graphicx}
\graphicspath{{images/}}

\usepackage{blindtext}

\usepackage{subfiles} % Найкраще завантажувати останнім у преамбулі

\title{Приклад пакета subfiles}
\author{Overleaf}
\date{ }

\begin{document}

\maketitle

\section{Вступ}

\subfile{sections/introduction}

\section{Другий розділ}

\subfile{sections/section2}

\end{document}
```

![CompileSubfilesEx1aOverleafV2.png](/files/a81ec387398ad34fc342e10c877b9865225353d2)

Для компіляції кожного файла потрібен рядок

```latex
\usepackage{subfiles}
```

у преамбулі; це вмикає `subfiles` пакет. Потім кожен зовнішній підфайл потрібно імпортувати за допомогою команди `\subfile{}`. У прикладі файли `introduction.tex` та `section2.tex` імпортуються до головного файла з `папки` . Зверніть увагу, що розширення файла не є обов’язковим.

[Відкрийте `subfiles` приклад пакета в Overleaf](https://www.overleaf.com/project/new/template/19626?id=66392908\&templateName=Subfiles+package+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

### Підфайли

Після того як ви налаштували головний файл, кожен підфайл повинен мати особливу структуру.

```latex
\documentclass[../main.tex]{subfiles}
\graphicspath{{\subfix{../images/}}}
\begin{document}
\textbf{Привіт, світе!}
\begin{figure}[bh]
\centering
\includegraphics[width=3cm]{overleaf-logo}

\label{fig:img1}
\caption{Логотип Overleaf}
\end{figure}

Привіт, ось тут трохи тексту без сенсу...

\end{document}
```

![CompileSubfilesEx2OverleafV2.png](/files/123369513ccba9dd4dee181a99be53dbf4c86a94)

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

Перша команда тут — це

```latex
\documentclass[../main.tex]{subfiles}
```

параметр у квадратних дужках, `../main.tex`, — це відносний шлях до головного документа. У цьому випадку файл `introduction.tex` знаходиться всередині папки `папки`, отже файл `main.tex` розташований на один рівень вище за поточну папку (саме це `../` означає).

Вам також потрібно використовувати команду `\subfix` з відносним шляхом до папки, коли вказуєте `\graphicspath` % `introduction.tex`:

```latex
\graphicspath{{\subfix{../images/}}}
```

Потім фактичний вміст вводиться всередині `\begin{document}` та `\end{document}`. Усе поза цим середовищем буде проігноровано або, точніше, вважатиметься частиною преамбули. Уникайте порожніх рядків на початку та в кінці файла.

[Відкрийте `subfiles` приклад пакета в Overleaf](https://www.overleaf.com/project/new/template/19626?id=66392908\&templateName=Subfiles+package+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Пакет standalone

Пакет **standalone** надає таку саму функціональність, як **subfiles** і є більш гнучким, але синтаксис складніший і схильний до помилок. Головна відмінність полягає в тому, що кожен підфайл має власну преамбулу.

Приклади в цьому розділі мають таку ієрархію файлів:

![CompileSubfilesEx3OverleafV2.png](/files/234e4a7f55b0880db68958387d72bdd956e45678)

### Головний файл

Головний файл дуже схожий на файл будь-якого іншого проєкту з кількома файлами.

```latex
\documentclass{article}
\usepackage[subpreambles=true]{standalone}
\usepackage{import}

\title{Приклад пакета standalone}
\author{Overleaf}
\date{Травень 2021}

\begin{document}

\maketitle

\section{Перший розділ}
\import{sections/}{introduction}

\section{Другий розділ}
\import{sections/}{section2}

\end{document}
```

![CompileSubfilesEx3Overleaf.png](/files/f67039cbbc03502ee2abab61aa962b8a50882df2)

Рядок

```latex
\usepackage[subpreambles=true]{standalone}
```

вмикає **standalone** пакет; його слід розмістити на початку документа. Параметр у квадратних дужках повідомляє LaTeX імпортувати преамбулу з кожного підфайла (пакети імпортуються лише один раз); якщо його опустити, переконайтеся, що всі потрібні команди для роботи підфайлів є в преамбулі головного документа. Треба бути обережним через можливу несумісність різних преамбул.

У тілі головного документа кожен підфайл імпортується за допомогою `\import{}{}`. Стандартну `\input{}` команду також можна використовувати, але в цьому прикладі рекомендується [керувати великими проєктами](/latex/uk/struktura-dokumenta/07-management-in-a-large-project.md) оскільки це запобігає помилкам у вкладених файлах.

[Відкрийте приклад `standalone` пакета в Overleaf](https://www.overleaf.com/project/new/template/19636?id=66440758\&templateName=Standalone+package+example\&latexEngine=pdflatex\&texImage=\&mainFile=)

### Підфайли

Кожен підфайл повинен мати власну преамбулу та імпортувати всі пакети, потрібні для роботи як окремий документ.

```latex
\documentclass[class=article, crop=false]{standalone}
\usepackage[subpreambles=true]{standalone}
\usepackage{import}
\usepackage{blindtext}

\begin{document}
Нижче цього рядка буде відображено фігуру TikZ

\begin{figure}[ht]
\centering
\subimport{../}{diagram.tex}
\label{fig:tikzexample}
\caption{Гарна проста схема}
\end{figure}

\blindtext
\end{document}
```

![CompileSubfilesEx4OverleafV2.png](/files/e10847e7f5da0c6271c0da819b7a1a58eb90e5f2)

Перший рядок у підфайлі — це

```latex
\documentclass[class=article, crop=false]{standalone}
```

Це оголошує, що це файл для використання з **standalone** пакетом; у квадратних дужках є два необов’язкові параметри.

* `class=article`. Встановлює `article` як базовий клас; можна використовувати будь-який інший клас: book, report тощо (крім beamer).
* `crop=false`. Якщо цю опцію опустити, вихідний файл буде обрізано до мінімального розміру.

Наступна команда не є обов’язковою

```latex
\usepackage[subpreambles=true]{standalone}
```

але її потрібно використовувати в цьому прикладі, тому що тут є вкладений **standalone** файл.  [зображення TikZ](/latex/uk/risunki-ta-tablici/05-tikz-package.md) вставляється за допомогою [`\subimport{../}{diagram.tex}`](/latex/uk/struktura-dokumenta/07-management-in-a-large-project.md#importing-files), нижче ви можете побачити вміст файла "diagram.tex":

```latex
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}

\begin{tikzpicture}[
roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm},
squarednode/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=5mm},
]
%Вузли
\node[squarednode]      (maintopic)                              {2};
\node[roundnode]        (uppercircle)       [above=of maintopic] {1};
\node[squarednode]      (rightsquare)       [right=of maintopic] {3};
\node[roundnode]        (lowercircle)       [below=of maintopic] {4};

%Лінії
\draw[->] (uppercircle.south) -- (maintopic.north);
\draw[->] (maintopic.east) -- (rightsquare.west);
\draw[->] (rightsquare.south) .. controls +(down:7mm) and +(right:7mm) .. (lowercircle.east);

\end{tikzpicture}
\end{document}
```

[Відкрийте цей приклад Standalone TikZ в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Standalone+TikZ+example\&snip=%5Cdocumentclass%7Bstandalone%7D%0A%5Cusepackage%7Btikz%7D%0A%5Cusetikzlibrary%7Bpositioning%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Btikzpicture%7D%5B%0Aroundnode%2F.style%3D%7Bcircle%2C+draw%3Dgreen%2160%2C+fill%3Dgreen%215%2C+very+thick%2C+minimum+size%3D7mm%7D%2C%0Asquarednode%2F.style%3D%7Brectangle%2C+draw%3Dred%2160%2C+fill%3Dred%215%2C+very+thick%2C+minimum+size%3D5mm%7D%2C%0A%5D%0A%25Nodes%0A%5Cnode%5Bsquarednode%5D++++++%28maintopic%29++++++++++++++++++++++++++++++%7B2%7D%3B%0A%5Cnode%5Broundnode%5D++++++++%28uppercircle%29+++++++%5Babove%3Dof+maintopic%5D+%7B1%7D%3B%0A%5Cnode%5Bsquarednode%5D++++++%28rightsquare%29+++++++%5Bright%3Dof+maintopic%5D+%7B3%7D%3B%0A%5Cnode%5Broundnode%5D++++++++%28lowercircle%29+++++++%5Bbelow%3Dof+maintopic%5D+%7B4%7D%3B%0A%0A%25Lines%0A%5Cdraw%5B-%3E%5D+%28uppercircle.south%29+--+%28maintopic.north%29%3B%0A%5Cdraw%5B-%3E%5D+%28maintopic.east%29+--+%28rightsquare.west%29%3B%0A%5Cdraw%5B-%3E%5D+%28rightsquare.south%29+..+controls+%2B%28down%3A7mm%29+and+%2B%28right%3A7mm%29+..+%28lowercircle.east%29%3B%0A%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

![CompileSubfilesEx5.png](/files/a32ae6f1da296b32f23e8741697ade7cce7dac9e)

Це головна особливість **standalone**, ви можете імпортувати цей файл у будь-який інший документ і повторно використовувати код. Наприклад, цю схему потім можна буде використати в презентації без подальших змін.

[Відкрийте приклад `standalone` пакета в Overleaf](https://www.overleaf.com/project/new/template/19636?id=66440758\&templateName=Standalone+package+example\&latexEngine=pdflatex\&texImage=\&mainFile=)

## Додаткове читання

Для отримання додаткової інформації див.

* [Керування у великому проєкті](/latex/uk/struktura-dokumenta/07-management-in-a-large-project.md)
* [Перехресні посилання на розділи та рівняння](/latex/uk/struktura-dokumenta/03-cross-referencing-sections-equations-and-floats.md)
* [Покажчики](/latex/uk/struktura-dokumenta/04-indices.md)
* [Глосарії](/latex/uk/struktura-dokumenta/05-glossaries.md)
* [Гіперпосилання](/latex/uk/struktura-dokumenta/09-hyperlinks.md)
* [Нумерація сторінок](/latex/uk/formatuvannya/03-page-numbering.md)
* [Односторонні та двосторонні документи](/latex/uk/formatuvannya/08-single-sided-and-double-sided-documents.md)
* [Кілька колонок](/latex/uk/formatuvannya/09-multiple-columns.md)
* [Форматування абзаців](/latex/uk/formatuvannya/04-articles-how-to-change-paragraph-spacing-in-latex.md)
* [Розмір сторінки та поля](/latex/uk/formatuvannya/07-page-size-and-margins.md)
* [Лічильники](/latex/uk/formatuvannya/10-counters.md)
* [Нотатки на полях](/latex/uk/formatuvannya/15-margin-notes.md)
* [Жирний шрифт, курсив і підкреслення](/latex/uk/osnovi-latex/03-bold-italics-and-underlining.md)
* [Розміри, гарнітури та стилі шрифтів](/latex/uk/shrifti/01-font-sizes-families-and-styles.md)
* [Гарнітури шрифтів](/latex/uk/shrifti/02-font-typefaces.md)
* [Підтримка сучасних шрифтів за допомогою XeLaTeX](/latex/uk/shrifti/03-xelatex.md)
* [Підтримка міжнародних мов](/latex/uk/movi/03-international-language-support.md)
* [Розміри, гарнітури та стилі шрифтів](/latex/uk/shrifti/01-font-sizes-families-and-styles.md)
* [Компіляція великих проєктів](/latex/uk/baza-znan/038-fixing-and-preventing-compile-timeouts.md#compiling-big-projects)
* [Вставлення зображень](/latex/uk/inshi-temi/27-inserting-images.md)
* [Пакет TikZ](/latex/uk/risunki-ta-tablici/05-tikz-package.md)
* [Створення власного пакета](/latex/uk/faili-klasiv/03-writing-your-own-package.md)
* [Створення власного класу](/latex/uk/faili-klasiv/04-writing-your-own-class.md)
* [Функція **subfiles** документація пакета](http://repositorios.cpai.unb.br/ctan/macros/latex/contrib/subfiles/subfiles.pdf)
* [Функція **standalone** документація пакета](http://repositorios.cpai.unb.br/ctan/macros/latex/contrib/standalone/standalone.pdf)


---

# 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/uk/struktura-dokumenta/08-multi-file-latex-projects.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.
