> 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/07-management-in-a-large-project.md).

# Управление в большом проекте

## Введение

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

## Вставка и подключение файлов

Стандартные средства для вставки одного файла LaTeX в другой: `\input` и `\include`.

**команда input**

\input{filename}

Используйте эту команду в теле документа, чтобы вставить содержимое другого файла с именем `filename.tex`; этот файл не должен содержать код преамбулы LaTeX (то есть без `\documentclass`, `\begin{document}` или `\end{document}` ). LaTeX не начнёт новую страницу перед обработкой материала в `filename.tex`. `\input` позволяет вкладывать `\input` команды в файлы, которые уже подключаются корневым файлом.

**команда include**

\include{filename}

Используйте эту команду в теле документа, чтобы вставить содержимое другого файла с именем `filename.tex`; опять же этот файл не должен содержать преамбулу LaTeX. LaTeX начнёт новую страницу перед обработкой материала, вставленного из `filename.tex`. Убедитесь, что не включаете расширение `.tex` в имени файла, так как это помешает подключению файла (расширение можно при желании указывать с помощью `ввода` и `import`). Невозможно вкладывать `include` команды. Каждый файл, который `\include`подключается, имеет свой файл .aux, в котором хранится информация о созданных метках и содержимое для оглавления, списка рисунков и т. д. Вы можете использовать `\includeonly` с разделённым запятыми списком имён файлов (убедитесь, что в начале и в конце нет пробелов). Если вы это сделаете, LaTeX будет обрабатывать только файлы, входящие в этот список. Это можно использовать для повышения скорости компиляции, если вы работаете только над небольшой частью большого документа. Однако номера страниц и перекрёстные ссылки всё равно будут работать, поскольку файлы .aux исключённых файлов всё равно будут обрабатываться.

[Откройте пример большого проекта в Overleaf](https://www.overleaf.com/project/new/template/20618?id=70769185\&templateName=Managing+a+large+project+on+Overleaf\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Преамбула в отдельном файле

Если преамбула вашего документа содержит много пользовательских команд или определений терминов для [глоссария](/latex/ru/struktura-dokumenta/05-glossaries.md), вы можете поместить её в отдельный файл. Правильный способ — создать собственный пакет, то есть файл с расширением .sty. Посмотрим на пример:

```latex
\ProvidesPackage{example}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[latin1]{inputenc}
\usepackage[spanish, english]{babel}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{textcomp}
\usepackage{pgfplots}

\pgfplotsset{width=10cm,compat=1.9}

%Стили колонтитулов
\usepackage{fancyhdr}
\setlength{\headheight}{15pt}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}{}}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[RE]{\textbf{\textit{\nouppercase{\leftmark}}}}
\fancyhead[LO]{\textbf{\textit{\nouppercase{\rightmark}}}}
\fancypagestyle{plain}{ %
\fancyhf{} % убрать всё
\renewcommand{\headrulewidth}{0pt} % убрать также линии
\renewcommand{\footrulewidth}{0pt}}

%делает доступными команды \proof, \qedsymbol и \theoremstyle
\usepackage{amsthm}

%Линейка
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}

%Определение леммы и счётчик лемм
\newtheorem{lemma}{Лемма}[section]

%Счётчик определений
\theoremstyle{definition}
\newtheorem{definition}{Определение}[section]

%Счётчик следствий
\newtheorem{corolary}{Следствие}[section]

%Команды для натуральных чисел, целых чисел, топологии, выпуклой оболочки, шара, диска, размерности, границы и ещё нескольких
\newcommand{\E}{{\mathcal{E}}}
\newcommand{\F}{{\mathcal{F}}}
...

%Окружение для примера
\theoremstyle{remark}
\newtheorem{examle}{Пример}

%Счётчик примеров
\newcommand{\reiniciar}{\setcounter{example}{0}}
```

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

Этот файл также можно было бы поместить в обычный .tex-файл и подключить командой `import` (см. [следующий раздел](#importing-files)), но файл .sty предотвращает возможные ошибки, если файл случайно подключат более одного раза.

Обратите внимание, что первая строка примера — это

```latex
\ProvidesPackage{example}
```

это означает, что мы должны подключать этот пакет как *example* в основном файле, то есть командой

```latex
\usepackage{example}
```

как показано в [введении](#introduction).

*Примечание: файл .sty гораздо более гибкий, его можно использовать для определения собственных макросов, а также можно передавать необязательные параметры, см.* [*Создание собственного пакета*](/latex/ru/faily-klassov/03-writing-your-own-package.md).

[Откройте пример большого проекта в Overleaf](https://www.overleaf.com/project/new/template/20618?id=70769185\&templateName=Managing+a+large+project+on+Overleaf\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Использование пакета import

Как уже было сказано выше, стандартные средства для вставки одного файла LaTeX в другой — это `\input` и `\include`, но они подвержены ошибкам, если требуется вложенное подключение файлов. По этой причине вам стоит рассмотреть пакет **import**.

Ниже приведён пример книги, в которой разделы и пользовательские команды хранятся в отдельных файлах, а файлы изображений для каждой главы хранятся в отдельных папках вместе с файлом .tex для каждой главы.

```latex
\documentclass[a4paper,11pt]{book}
\usepackage{import}
\usepackage{example}

\usepackage{makeidx}
\makeindex

\begin{document}

\frontmatter
\import{./}{title.tex}

\clearpage
\thispagestyle{empty}

\tableofcontents

\mainmatter
\chapter{Первая глава}
\import{sections/}{section1-1.tex}
\import{sections/}{section1-2.tex}

\chapter{Дополнительная глава}
\import{sections/}{section2-1.tex}

\chapter{Последняя глава}
\import{sections/}{section3-1.tex}

\backmatter

\import{./}{bibliography.tex}

\end{document}
```

Как видите, пример — это книга с тремя главами и несколькими разделами, где в аккуратном основном файле подключаются внешние файлы для создания итогового документа. Команда `\frontmatter` в классе документа book используется для первых страниц документа, с помощью этой команды стиль нумерации страниц устанавливается в римские цифры; команда `\mainmatter` сбрасывает нумерацию страниц и меняет стиль на арабский, `\backmatter` отключает нумерацию глав (подходит для библиографии и приложений).

```latex
\chapter{Первая глава}
\import{sections/}{section1-1.tex}
\import{sections/}{section1-2.tex}
```

Сначала добавьте эту строку в преамбулу вашего документа:

```latex
\usepackage{import}
```

Затем используйте `\import{ }{ }`Первый параметр в фигурных скобках — это каталог, в котором расположен файл; он может быть относительным относительно текущего рабочего каталога или абсолютным. Второй параметр — это имя файла, который нужно подключить

Также доступна команда `\subimport` с тем же синтаксисом, но если её использовать в одном из файлов, подключаемых в основном файле, путь будет относительным к этому подфайлу. Например, ниже приведено содержимое файла «section1-1.tex», подключённого в предыдущем примере:

```latex
\section{Первый раздел}

Ниже приведён простой 3D-график

\begin{figure}[h]
\centering
\subimport{img/}{plot1.tex}
\caption{Подпись}
\label{fig:my_label}
\end{figure}

[...]
```

Как видите, этот файл импортирует [график pgf](/latex/ru/specializirovannye/08-pgfplots-package.md) файл с названием «plot1.tex», который создаёт 3D-график. Этот файл подключается

```latex
\subimport{img/}{plot1.tex}
```

из папки «img», которая находится в папке «sections».

Если `\import` использовалась бы вместо этого, то путь *img/* относился бы к основному файлу, а не к папке «sections», где сохранён «section1-1.tex».

[Откройте пример большого проекта в Overleaf](https://www.overleaf.com/project/new/template/20618?id=70769185\&templateName=Managing+a+large+project+on+Overleaf\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Дополнительное чтение

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

* [Многофайловые проекты LaTeX](/latex/ru/struktura-dokumenta/08-multi-file-latex-projects.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/faily-klassov/03-writing-your-own-package.md)
* [Создание собственного класса](/latex/ru/faily-klassov/04-writing-your-own-class.md)
* [Не слишком краткое введение в LaTeX2ε](http://www.ctan.org/tex-archive/info/lshort/)
* [`import` документация пакета](ftp://sunsite.icm.edu.pl/pub/CTAN/macros/latex/contrib/import/import.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/07-management-in-a-large-project.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.
