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

# Многофайловые проекты LaTeX

## Введение

В [больших документах LaTeX](/latex/ru/struktura-dokumenta/07-management-in-a-large-project.md) обычно есть несколько `.tex` файлов, по одному для каждой главы или раздела, а затем их объединяют вместе для создания одного вывода. Это помогает всё организовать и упрощает отладку документа, но по мере увеличения документа компиляция занимает больше времени. Это может раздражать, поскольку обычно каждый раз нужно работать только с конкретным файлом.

Естественный способ справиться с этим — компилировать каждый файл отдельно. Существует два основных пакета, которые позволяют компилировать отдельные файлы в многофайловом проекте. Выбор зависит от того, что вам нужно.

* С [этом **subfiles** пакет](#the-subfiles-package) вы можете компилировать каждый подфайл независимо, и каждый подфайл будет автоматически использовать преамбулу из главного файла.
* С [этом **standalone** пакет](#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/ba1b524bb54db98f777a4a32e879c9d0fa04d3cb)

### Главный файл

В главном файле нужны две специальные команды.

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

\usepackage{blindtext}

\usepackage{subfiles} % Лучше загружать последним в преамбуле

\title{Пример пакета Subfiles}
\author{Overleaf}
\date{ }

\begin{document}

\maketitle

\section{Introduction}

\subfile{sections/introduction}

\section{Второй раздел}

\subfile{sections/section2}

\end{document}
```

![CompileSubfilesEx1aOverleafV2.png](/files/897990a5d265c1f5ae22ac669b5a2dda5d092b3b)

Для компиляции каждого файла требуется строка

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

в преамбуле; это включает `subfiles` пакет. Затем каждый внешний подфайл должен быть подключён командой `\subfile{}`. В примере файлы `introduction.tex` и `section2.tex` импортируются в главный файл из папки `sections` . Обратите внимание, что расширение файла не является обязательным.

[Откройте `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/c3a2bd12073ed5309f8f645c196cc3fe1fe84bd3)

Теперь этот файл можно компилировать как самостоятельный файл; класс документа и остальная часть преамбулы будут такими же, как определено в основном документе.

Первая команда здесь —

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

параметр в квадратных скобках, `../main.tex`, — это относительный путь к основному документу. В этом случае файл `introduction.tex` находится внутри папки `sections`, следовательно, файл `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/a2992c957a776a0c49b6424352cbc5f541becec1)

### Главный файл

Главный файл очень похож на любой другой проект с несколькими файлами.

```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/1dcc4a2d49654a51ecdad0a0b3605e8cd4d1e834)

Строка

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

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

В теле основного документа каждый подфайл импортируется с помощью `\import{}{}`. Стандартная `\input{}` команда также может использоваться, но в этом примере рекомендуется [управлять большими проектами](/latex/ru/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/7b5d577774cb9b8dac22d3f43e89c6efc0e8b7ee)

Первая строка в подфайле —

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

Это объявляет, что это файл для использования с **standalone** пакетом; внутри квадратных скобок есть два необязательных параметра.

* `class=article`. Устанавливает `article` в качестве базового класса; можно использовать любой другой класс: book, report и т. д. (кроме beamer).
* `crop=false`. Если эту опцию опустить, вывод будет обрезан до минимального размера.

Следующая команда не является обязательной

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

но в этом примере её нужно использовать, потому что здесь есть вложенный **standalone** файл.  [Рисунок tikz](/latex/ru/risunki-i-tablicy/05-tikz-package.md) вставляется с помощью [`\subimport{../}{diagram.tex}`](/latex/ru/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/8c2f28142f8ba2c918b2d2e0413574d5ac186ec6)

Это основная особенность **standalone**, вы можете импортировать этот файл в любой другой документ и повторно использовать код. Например, эту диаграмму позже можно использовать в презентации без дополнительных изменений.

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

## Дальнейшее чтение

Для получения дополнительной информации см.

* [Управление в большом проекте](/latex/ru/struktura-dokumenta/07-management-in-a-large-project.md)
* [Перекрёстные ссылки на разделы и уравнения](/latex/ru/struktura-dokumenta/03-cross-referencing-sections-equations-and-floats.md)
* [Указатели](/latex/ru/struktura-dokumenta/04-indices.md)
* [Глоссарии](/latex/ru/struktura-dokumenta/05-glossaries.md)
* [Гиперссылки](/latex/ru/struktura-dokumenta/09-hyperlinks.md)
* [Нумерация страниц](/latex/ru/formatirovanie/03-page-numbering.md)
* [Односторонние и двусторонние документы](/latex/ru/formatirovanie/08-single-sided-and-double-sided-documents.md)
* [Многоколоночный режим](/latex/ru/formatirovanie/09-multiple-columns.md)
* [Форматирование абзацев](/latex/ru/formatirovanie/04-articles-how-to-change-paragraph-spacing-in-latex.md)
* [Размер страницы и поля](/latex/ru/formatirovanie/07-page-size-and-margins.md)
* [Счётчики](/latex/ru/formatirovanie/10-counters.md)
* [Заметки на полях](/latex/ru/formatirovanie/15-margin-notes.md)
* [Жирный шрифт, курсив и подчёркивание](/latex/ru/osnovy-latex/03-bold-italics-and-underlining.md)
* [Размеры шрифтов, семейства и стили](/latex/ru/shrifty/01-font-sizes-families-and-styles.md)
* [Гарнитуры шрифтов](/latex/ru/shrifty/02-font-typefaces.md)
* [Поддержка современных шрифтов с XeLaTeX](/latex/ru/shrifty/03-xelatex.md)
* [Поддержка международных языков](/latex/ru/yazyki/03-international-language-support.md)
* [Размеры шрифтов, семейства и стили](/latex/ru/shrifty/01-font-sizes-families-and-styles.md)
* [Компиляция больших проектов](/latex/ru/baza-znanii/038-fixing-and-preventing-compile-timeouts.md#compiling-big-projects)
* [Вставка изображений](/latex/ru/drugie-temy/27-inserting-images.md)
* [Пакет TikZ](/latex/ru/risunki-i-tablicy/05-tikz-package.md)
* [Написание собственного пакета](/latex/ru/faily-klassov/03-writing-your-own-package.md)
* [Написание собственного класса](/latex/ru/faily-klassov/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/ru/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.
