> 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/baza-znanii/066-how-to-find-and-fix-errors-reported-in-generated-files.md).

# Как найти и исправить ошибки, сообщаемые в сгенерированных файлах

## Введение

Иногда Overleaf сообщает об ошибках, возникающих из файлов с именами вроде `output.toc`, `output.bbl`, и т. д., но эти файлы *вообще не существуют в вашем проекте*. Так откуда же такие файлы *берутся* и, что важнее, как вы *найдите* и *исправляете* ошибки?

> ![Gen-toc-error.png](/files/92758ca3fbb8c8dc4cff209710dc87172ee8741e) «Но у меня даже нет **обязательно** этого `output.toc` файла в проекте!»

Это «таинственные файлы» — артефакты: вспомогательные файлы, создаваемые в процессе компиляции LaTeX, но они также могут вызывать ошибки, которые обычно происходят из-за проблем в коде в исходных файлах вашего проекта. В этой статье используется [реальный пример с ошибками](#playing-detective-locating-errors-in-generated-files) чтобы показать, как отследить такие ошибки до их исходного места в исходном файле(ах) вашего проекта.

## Файлы, создаваемые в процессе компиляции LaTeX

Помимо выходного `.pdf` файла, процесс компиляции LaTeX создает несколько типов файлов, которые содержат информацию о метках, перекрестных ссылках, номерах страниц и т. д. Некоторые вспомогательные типы файлов создаются не напрямую компилятором LaTeX, а другими инструментами обработки, используемыми при верстке: например, форматированными списками литературы и указателями. Эти сгенерированные файлы должны считываться компилятором при последующих запусках, чтобы итоговый `.pdf` выходной файл заполнялся правильными списками, цитированиями и перекрестными ссылками.

Потребность LaTeX и связанных инструментов обработки записывать и считывать вспомогательные файлы данных означает, что может потребоваться несколько этапов компиляции/обработки, прежде чем полный набор данных файлов сойдется (стабилизируется) и будет создан окончательный сверстанный (стабильный) `.pdf` файл. Типичный цикл верстки может выглядеть так:

`pdflatex`$$\mapsto$$`bibtex`$$\mapsto$$`pdflatex`$$\mapsto$$`pdflatex`

В локальной установке LaTeX вам, возможно, придется выполнять каждый промежуточный шаг вручную, или же вы можете использовать инструмент сборки, такой как [make](https://www.gnu.org/software/make/manual/), [latexmk](https://ctan.org/pkg/latexmk) или [arara](https://ctan.org/pkg/arara)для автоматизации этой цепочки процессов. [Overleaf использует latexmk](/latex/ru/baza-znanii/064-how-does-overleaf-compile-my-project.md)и это видео показывает, что происходит каждый раз, когда вы нажимаете кнопку «Recompile» в вашем проекте Overleaf.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/Uo3I2FXEI8H6aFPBZq171/e2139f9575a4db6955dc2278dc08283c/latexmk-ol.mp4>" %}

Обычно сгенерированные файлы имеют то же имя, что и `.tex` компилируемый файл; например, если вы компилируете `**main**.tex`, сгенерированные файлы будут называться `**main**.aux`, `**main**.toc`, `**main**.lof` и т. д. Однако *в Overleaf* имя компиляции `\jobname` всегда установлено как `**output**`, поэтому [сгенерированные файлы](/latex/ru/baza-znanii/150-view-generated-files.md) в вашем проекте Overleaf всегда называются `**output**.aux`, `**output**.toc`, `**output**.lof` и т. д. Эти сгенерированные файлы можно скачать из вашего проекта Overleaf, но их нельзя просматривать или редактировать в Overleaf.

## Ошибки компиляции, сообщаемые из сгенерированных файлов

Ошибки в коде в основном проекте `.tex` ошибка в файле может быть перенесена в сгенерированные файлы. Например, неэкранированный `&` в `\section{Introduction & Background}` попадет в сгенерированный `.toc` файл. Когда сгенерированный `.toc` файл затем считывается при следующем `pdflatex` запуске компиляции, сообщение об ошибке выводится как «исходящее из файла .toc». Однако современные журналы LaTeX и сообщения об ошибках не связывают строки в `.toc` файле (и других сгенерированных файлах) с их исходным местом в исходном `.tex` файле: может быть не сразу понятно, где нужно исправить исходную ошибку.

Вот пример того, как ошибки показываются в другом редакторе LaTeX: хотя вы можете щелкнуть по сообщению об ошибке, чтобы открыть соответствующую строку в сгенерированном `.toc` или `.aux` файле, пути от ошибки к исходному месту в `.tex` файле нет. И даже если вы исправите ошибку, заменив `&` с `\&` в `.toc` файл, это на самом деле не решит проблему: при следующей компиляции `.tex` файла, `.toc` файл будет сгенерирован заново, и та же ошибка будет снова записана в `.toc` файла.

![Texstudio-errors-generated-files.gif](/files/3c79cfb2d382f03f78ed4759af8ba468c2b0bf5a)

Когда ошибка сообщается как исходящая из сгенерированных файлов, правильный способ ее исправить — найти фактическую исходную ошибку в исходных файлах и исправить их. Сообщения об ошибках обычно содержат контекстную информацию, какой-то текст или код вокруг ошибки, поэтому поиск по тексту в исходных файлах поможет ее найти. Сами ошибки часто бывают типовыми: некоторые распространенные ошибки можно посмотреть на [эту страницу справки](/latex/ru/osnovy-latex/05-errors.md)или в [списке FAQ по TeX](https://texfaq.org/#errors).

## Сначала попробуйте очистить сгенерированные файлы

Иногда ошибки в сгенерированных файлах — это остатки предыдущей компиляции. Даже если вы исправили ошибки в вашем `.tex` файле и скомпилировали его заново, сгенерированные файлы, все еще содержащие ошибки, могут по-прежнему считываться компилятором, вызывая те же ошибки, что и раньше. Перед повторной компиляцией можно попробовать удалить сгенерированные файлы. Инструкции о том, как сделать это в Overleaf, можно найти [здесь](/latex/ru/baza-znanii/028-clearing-the-cache.md).

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

## Играем в детектива: находим ошибки в сгенерированных файлах

В следующих разделах приведены советы, где искать такие ошибки. Мы будем использовать следующий *намеренно с ошибками* проект-пример для нашей детективной практики. Готовы? Поехали!

[Откройте *с ошибками* проект Overleaf!](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Demo+of+LaTeX+compile+errors+reported+from+generated+files\&main_document=main.tex\&snip_uri=https%3A%2F%2Fassets.ctfassets.net%2Fnrgyaltdicpt%2F5qdEqgUidaYDHjOlBoKM7K%2F55395921a114edb36ed3d51d7b1c6edb%2Fdemoerrors.zip) Проект должен выглядеть примерно так 😲:

![Изображение, показывающее ошибки проекта LaTeX](/files/0517f150d2dc85733f0d8ee474b227252e55e919)

### Ошибки из файлов .aux

Это `.aux` Файл .aux содержит информацию об использовании `\label{...}` объявлений и `\cite{...}` в `.tex` файла, так что это полезные вещи, которые стоит проверить.

Давайте посмотрим на эту первую ошибку в нашем примере проекта с ошибками.

![пример ошибки в файле .aux из-за плохого объявления \label](/files/f3477731548af176a01b8b26990be7fe488f30a6)

Ошибка `Вставлен отсутствующий \endcsname.` в `\alpha` может показаться довольно загадочной на первый взгляд и не слишком полезной для отладки. Но из текста (контекста) сообщения об ошибке видно, что она возникает где-то рядом с кодом, который содержит `sec:\alpha`, который связан с какой-то меткой или счетчиком с номером 1.1. Поэтому стоит внимательно посмотреть на любые `\label{...}` в нашем `.tex` файлы, содержащие фрагмент `sec:\alpha`.

Вскоре вы должны выйти на строку 37 в нашем проекте-примере:

```latex
\label{sec:\alpha}
```

Аргумент, передаваемый в `\label{...}` не должен содержать никаких команд LaTeX или управляющих последовательностей, таких как `\alpha`\alpha `. Поэтому исправление метки на что-то вроде`, а также любые соответствующие `\ref{...}`устранит эту ошибку.

Вот еще одна ошибка, сообщаемая из `.aux` файла в нашем проекте-примере:

![пример ошибки в файле .aux из-за пробела в ключе \cite{...}](/files/7228803ff5ccd4617c91cf464fa1203aa6a1dc8a)

На этот раз компилятор жалуется на пробел в записи \citation; при этом ключ начинается с «That». Поэтому мы бы захотели поискать `\citation`; и обнаружили бы, что ключ начинается с «That». Поэтому мы бы искали `\cite{That ...}` в нашем `.tex` файл... и находим его на строке 23:

```latex
... justo \cite{That mandatory talk} eget magna ...
```

Ключи цитирования не должны содержать пробелы, поэтому пробелы в этом `\cite{...}`, а также соответствующий ключ BIBTeX в `.bib` файле, следует удалить.

### Ошибки из файлов .toc

Это `.toc` Файл .toc содержит записи для `\tableofcontents`оглавления. Они заполняются из заголовков разделов в документе LaTeX, например, `\chapter{...}`, `\section{...}`, и т. д. Поэтому, если вы видите ошибки, сообщаемые из `.toc` файлов, полезно проверить заголовки разделов, содержащие текст, упомянутый в сообщении об ошибке.

![пример ошибки в файле .toc из-за неэкранированного & в ключе \section{...}](/files/627349a98976c91633bffc79e5ea11c6f57e0729)

Похоже на заголовок раздела, который будет пронумерован как «1», и содержит текст `Introduction & Welcome`Быстрый поиск в `.tex` файле приведет нас к строке 12:

```latex
\section{Introduction & Welcome}
```

Это `&` здесь не экранирован, поэтому нужно изменить его на `\&` в `.tex` файла.

Еще один похожий пример:

![пример ошибки в файле .toc из-за математической команды не в математическом режиме в ключе \section{...}](/files/7a51d2bff91c1d8751b8eeadd041f0423dc38017)

Аналогично, мы бы предположили, что нужно искать заголовок раздела с номером «1.1», и, вероятно, содержащий `Setting \alpha`. Наше предположение оказывается верным, на строке 36 в `.tex` файл:

```latex
\subsection{Setting \alpha}
```

`\alpha` это математическая команда, но мы забыли поместить ее в математический режим здесь, поэтому нужно исправить это на

```latex
\subsection{Setting $\alpha$}
```

или

```latex
\subsection{Setting \(\alpha\)}
```

Иногда ошибки возникают в `.toc` файле из-за ошибок в коде, используемом для оформления записей в оглавлении:

![пример ошибки в файле .toc из-за некорректного кода при оформлении записи оглавления](/files/504bcf76ee4c4d25e1cdf352ce570b03a61c29ed)

Здесь поиск по `\itshae` приведет нас к опечатке на строке 5 в нашем примере `.tex`: должно быть `\itshape` вместо этого. В этом случае ошибку можно найти в преамбуле нашего `.tex` файла, так что мы можем сразу исправить ее. Но если вы используете `.cls` или `.sty` файл, предоставленный вашим учебным заведением, и подозреваете, что ошибки вызваны неправильной настройкой в предоставленных файлах, вам следует связаться с автором или сопровождающим шаблона или пакета, чтобы они могли обновить шаблон.

### Ошибки из файлов .lof и .lot

Это `.lof` Файл .toc содержит записи для `\listoffigures`, и заполняются `\caption{...}` для `figure` окружениями.

Аналогично, `.lot` файл использует `\caption{...}` от `table` окружения, чтобы создавать записи для `\listoftables`.

Поэтому, если ошибки LaTeX исходят из `.lof` или `.lot` файлов, следует проверить `\caption{...}` который содержит соответствующие текстовые фрагменты.

Исходя из сообщения об ошибке здесь, мы будем искать `Effects of \alpha and var_coeff` в нашем `\caption{...}`s, особенно для `figure`s:

![пример ошибки в файле .lof из-за математической команды не в математическом режиме в ключе figure \caption{...}](/files/871fcb96821a9da93e65a017d5cda833916be94f)

и дойдем до строки 19 в нашем `.tex` файл:

```latex
\caption{Effects of \alpha and var_coeff}
```

Это `\alpha` должна быть помещена в математический режим; а если `var_coeff` должно быть именем переменной, знак подчеркивания нужно экранировать. Не используйте `\verb|var_coeff|` потому что это может быть довольно катастрофично и в `\caption{...}`тоже!

```latex
\caption{Effects of $\alpha$ and \texttt{var\_coeff}}
```

Аналогично, глядя на эту ошибку, мы бы искали `какие-то примерные данные с n^i` в `table` `\caption{...}`, подозревая, что мы забыли поместить `n^i` тоже в математический режим.

![пример ошибки в файле .lot из-за верхнего индекса не в математическом режиме в ключе table \caption{...}](/files/3b721bc28bd2d368577e9daff1d54c1247548546)

Итак, мы исправляем строку 31

```latex
\caption{Some sample data with n^i}
```

на

```latex
\caption{Some sample data with $n^i$}
```

### Ошибки из файлов .bbl

Это `.bbl` Файл .bbl содержит записи для списка литературы (библиографии) и генерируется BIBTeX после обработки файла .aux, используя информацию об оформлении из `.bib` файла .bst. `.bst` Ошибки, сообщаемые из `.bbl` обычно происходят из `.bib` файла.

Вот распространенная ошибка, которую мы часто видим в службе поддержки Overleaf:

![пример ошибки в файле .bbl из-за неэкранированного & в файле .bib](/files/264c6d000ff08ff5fab7065bec3d9fed0e18857f)

Поиск по `This & that` в `.bib` файла нашего проекта-примера приведет нас к строке 13, где мы поймем, что `&` нужно экранировать как `\&` или заменить словом `и`.

```bibtex
    title   = {This & That},
```

Авторы часто сталкиваются с ошибками, связанными с символами Unicode в `.bbl` (и, следовательно, `.bib`) файлах — особенно если источники информации были скопированы и вставлены откуда-то еще:

![пример ошибки в файле .bbl из-за неподдерживаемого символа Unicode в файле .bib](/files/a95f27424ef5cd9f1719a138671e521eff690120)

Скопировав символ ♣ из сообщения об ошибке и выполнив поиск по нему в `.bib` файле, вы попадете к строке 3:

```bibtex
    title   = {Research ♣ Development},
```

Некоторые символы Unicode не поддерживаются `latex` и `pdflatex` компиляторами. Чтобы избежать ошибки, вы можете попробовать [сменить компилятор вашего проекта](/latex/ru/baza-znanii/026-changing-compiler.md) на `XeLaTeX` или `LuaLaTeX`. Но даже тогда вам нужно убедиться, что ваш проект совместим с этими компиляторами, и что вы использовали шрифт, содержащий глиф для отображения ♣, чтобы он правильно отображался в выходном PDF. Поэтому лучше использовать соответствующие команды LaTeX:

```bibtex
    title   = {Research $\clubsuit$ Development},
```

Иногда, однако, символ может быть гораздо труднее заметить:

![пример ошибки в файле .bbl из-за неподдерживаемого, невыводимого символа Unicode в файле .bib](/files/270729a59b00db000d6e25ca284c96fc0527fefc)

Здесь U+3000 — это [символ Unicode `IDEOGRAPHIC SPACE`](https://www.fileformat.info/info/unicode/char/3000/index.htm), и это действительно пробел. Может быть трудно скопировать этот точный символ из сообщения об ошибке, чтобы затем искать его в `.bib` файле. Поэтому придется попробовать другой способ найти его, используя `\DeclareUnicodeCharacter` чтобы заменить `U+3000` чем-то более заметным! Добавьте следующие строки в преамбулу вашего проекта, перед `\begin{document}`:

```latex
\usepackage{xcolor}
\DeclareUnicodeCharacter{3000}{\textcolor{red}{BAD!!}}
```

После компиляции проекта ошибка исчезнет; но вам следует внимательно поискать в выходном PDF BAD!!:

![выходной PDF, в котором U+3000 заменен красным BAD!!](/files/2c0af03058ed38a8e3b0a9f6796f82b85329185b)

Теперь мы знаем, что плохой символ находится между `для` и `Wondrous`, для элемента библиографии от «An Author». Он выглядит совершенно безобидно на строке 5 файла `.bib` поскольку он невидим: но если вы наберете этот `...of Wondrous...` вручную обычной клавишей пробела, ошибка исчезнет после повторной компиляции.

```bibtex
    journal = {Journal of　Wondrous Musings},
```

#### Примечание о biblatex

Если вы используете `biblatex` пакете, то похожие ошибки в `.bib` файлах, скорее всего, будут сообщаться как исходящие из `\printbibliography` строки в вашем `.tex` файле. Процесс отладки аналогичен: используйте короткие фрагменты текста в сообщениях об ошибке для поиска в вашем `.bib` файле, чтобы найти проблемные строки и исправить их.

### Ошибки из файлов .bst

`.bst` .bst файлы — это стили библиографии, которые BIBTeX использует для обработки и форматирования списка литературы. Если вы видите ошибки из `.bst` файлов, это может быть связано с ошибками в самом `.bst` особенно если это очень-очень старый файл стиля, который уже может быть несовместим с современными пакетами LaTeX. Но на самом деле это также может быть связано с ошибками в `.bib` файле. Самая распространенная ошибка в этой категории выглядит так:

![Bst-error-example-01.png](/files/db2e6d5dd5a17ed665af01a29c984dfbfb43ae68)

Запись с ключом BIBTeX `Someone:etal:2008` имеет `author` поле на строке 12 файла `.bib` файл:

```bibtex
    author  = {Strange Someone, Night Stranger, and Random Person},
```

В одной `.bib` файла, [список из нескольких имен](/latex/ru/ssylki-i-citirovaniya/01-bibliography-management-with-bibtex.md#multiple-authors) должен разделяться `и`, а не запятыми и не `&`. Поэтому это `author` поле следует исправить на

```bibtex
    author  = {Strange Someone and Night Stranger and Random Person},
```

### Ошибки из файлов .ttt и .fff

Эти типы файлов создаются только если вы подключаете [`endfloat` пакет](https://www.ctan.org/pkg/endfloat)пакет, который используется для того, чтобы переместить все окружения таблиц и рисунков в конец документа, в соответствии с требованиями некоторых академических журналов при подаче статьи.

Чтобы увидеть примеры ошибок из этих сгенерированных файлов, раскомментируйте строку 3 `\usepackage{endfloat}` из `.tex` файла в нашем проекте-примере.

![Ttt-error-example-01.png](/files/43dbd726061c50081154a316e162c986628b58c6)

Это `.ttt` файл содержит содержимое всех `table` окружений в документе, поэтому мы бы искали `dummy & data` в `.tex` файле, обращая внимание на таблицы. Мы бы дошли до строки 29 в `.tex` файле, где видим проблему: у нас три столбца, на один больше, чем объявлено два. Значит, один лишний столбец, возможно, нужно удалить; или следует вставить `\\` после `dummy` чтобы начать новую строку; или, возможно, мы изначально собирались объявить три столбца `c | c | c` в конце концов!

![Fff-error-example-01.png](/files/bfeec138e6fac1eb45484f1df36f9a63107d8409)

Аналогично, `.fff` файл содержит содержимое всех `figure` окружений, и поиск этой опечатанной `\includegraphcs` привел бы нас к строке 18 `.tex` файла, где мы можем исправить его на `\includegraphics`.

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

* [Как Overleaf компилирует мой проект?](/latex/ru/baza-znanii/064-how-does-overleaf-compile-my-project.md)
* [Распространенные ошибки LaTeX](/latex/ru/osnovy-latex/05-errors.md)
* [списке FAQ по TeX](https://texfaq.org/#errors)


---

# 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/baza-znanii/066-how-to-find-and-fix-errors-reported-in-generated-files.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.
