> 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/138-understanding-underfull-and-overfull-box-warnings.md).

# Понимание предупреждений о недозаполненных и переполненных коробках

## Введение

После верстки документа LaTeX Overleaf часто показывает сообщения о недозаполненном или переполненном `\hbox` (или `\vbox`), а также так называемые `badness` значения для недозаполненных коробок или величины, на которые коробки переполнены. Прежде всего важно отметить, что эти сообщения не являются ошибками —[см. ниже подробнее](#overfull-or-underfull-boxes-are-not-errors). Это *предупреждения* или, точнее, «диагностические сообщения», которые исходят изнутри движка TeX, используемого для верстки вашего документа LaTeX.

В этой справочной статье мы дадим вводную информацию об источнике и причинах этих сообщений и перечислим некоторые распространённые проблемы с предложенными решениями. Для читателей, которым интересны более подробные сведения, мы опубликовали сопутствующую статью в галерее Overleaf: [Исследование недозаполненных или переполненных коробок и вычислений badness](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv). Список дополнительных ресурсов также можно найти [в конце этой статьи](#further-reading).

## Есть ли в моём проекте предупреждения о переполнении или недозаполнении?

Чтобы проверить, сообщает ли ваш проект об этих предупреждениях, вам нужно щёлкнуть по значку, показанному на снимке экрана ниже. Даже если ваш документ скомпилировался без ошибок, очень часто можно увидеть эти сообщения, и любой, кто сравнительно недавно работает с TeX/LaTeX, может задаться вопросом, что они означают и стоит ли о них беспокоиться.

![Снимок экрана, показывающий, как Overleaf сообщает о недозаполненных или переполненных коробках](/files/baa6d203725067a2251588564a60734095ad19c5)

При верстке документа LaTeX будет стараться уместить части вашего содержимого в границы заданного «размера»; например, при наборе абзацев и переносе строк на определённую длину — проще всего это показать с помощью команды такой как `\parbox`. Если мы попытаемся набрать следующий абзац, используя ширину строки 50pt:

```latex
\parbox{50pt}{Некоторый текст, набранный с использованием \texttt{\string\parbox}}
```

Overleaf сообщает о двух `Недозаполненный \hbox...` предупреждениях:

![Снимок экрана, показывающий, как Overleaf сообщает о недозаполненных коробках](/files/ffba796b41aea10039c4a680aeccb88ae79ee291)

Эти `Недозаполненный \hbox...` предупреждения возникают потому, что движок TeX не может создать «красивые» переносы строк в рамках ограничений этой \parbox. В движках TeX каждая строка набранного абзаца становится \hbox, которую движок затем проверяет и о которой сообщает, потенциально выдавая предупреждения для любых строк набранного текста, которые движок TeX классифицирует как «нежелательные».

Как вы можете видеть на следующих изображениях, строки текста чрезвычайно разрежены, и предупреждения TeX `Недозаполненный \hbox...` предупреждения сообщают вам об этом — хотя в этом примере это и так очевидно.

![Снимок экрана, показывающий \parbox](/files/3e07f2630d2248cb2fff08357d4805c01ac81acf)

Обратите внимание, что в этом примере вы можете избежать этих предупреждений, используя \raggedright:

```latex
\parbox{50pt}{\raggedright Некоторый текст, набранный с использованием \texttt{\string\parbox}}
```

![Снимок экрана, показывающий \parbox](/files/0b3a8969b876994247cfcb2dac1c0603da269c23)

## Переполненные и недозаполненные коробки

Функция `\parbox` пример демонстрирует гораздо более общую проблему: при обработке вашего кода LaTeX используемый для верстки документа движок TeX (pdfTeX, XeTeX или LuaTeX) может считать, что запросы LaTeX приводят к набранному содержимому, которое не «влезает аккуратно» в границы предоставленной или запрошенной коробки. Если это так, движок TeX выдаёт предупреждения, и ваш материал будет набран, но результат, иногда, может быть эстетически нежелательным, и вам, вероятно, придётся это исправить. Стоит понимать значение этих сообщений и распознавать, когда нужно принять меры, чтобы устранить их.

Эти предупреждения, связанные с коробками, принимают вид

```
Overfull \hbox (<value>pt too wide) ... at line(s) ...
Overfull \vbox (<value>pt too high) ... at line(s) ...
Недозаполненный \hbox (badness <value>) ... at line(s) ...
Недозаполненный \vbox (badness <value>) ... at line(s) ...
```

Один `\hbox` обозначает *горизонтальную коробку* в которую движок TeX помещает список элементов рядом друг с другом, и `\vbox` обозначает *вертикальную коробку* в которую движок TeX размещает элементы один над другим.

Если материала слишком мало, движок TeX сообщит о `Недозаполненный \hbox` предупреждении или `Недозаполненный \vbox` предупреждении:

* **Недозаполненные коробки** не имеют достаточного количества материала, чтобы заполнить выделенные им размеры (коробки), и движку TeX пришлось «растянуть» содержимое в попытке заполнить это пространство. Для недозаполненных коробок Overleaf также покажет так называемую «badness» TeX (`badness <value>`) — это мера того, насколько TeX пришлось «растянуть» ваше содержимое, чтобы заполнить выделенное для него пространство. Значения badness обычно находятся в диапазоне от 0 до 10000.

Если материала слишком много, движок TeX сообщит предупреждение \`Overfull \hbox\` или предупреждение \`Overfull \vbox\`:

* **Переполненные коробки** имеют слишком много содержимого, чтобы поместиться в выделенные им размеры (коробки), и TeX не может «втиснуть» его в предоставленное пространство. Движок TeX сообщает величину (`<value>`), в пунктах, на которую ваше содержимое превышает доступное пространство — ваш материал слишком широк для заданного `\hbox` или слишком высок для заданного `\vbox`.

## Переполненные или недозаполненные коробки — не ошибки

Как отмечалось, сообщения о переполнении/недозаполнении `\hbox` или `\vbox`  — это не ошибки, а «диагностические предупреждающие сообщения», выдаваемые движком TeX (pdfTeX, XeTeX или LuaTeX), который используется для верстки вашего документа LaTeX. Хотя *сообщаемые* вам Overleaf, эти предупреждения не *сгенерированный* Overleaf: они исходят изнутри движков TeX. Во время верстки эти сообщения записываются в `.log` файл — текстовый файл, создаваемый движком TeX для записи различной информации при обработке вашего кода LaTeX. Overleaf обрабатывает `.log` файл, чтобы извлечь сообщения движка TeX о переполнении/недозаполнении `\hbox` или `\vbox` и отображает их в интерфейсе Overleaf. Это помогает вам находить и определять части документа, которые могут нуждаться в редактировании, чтобы получить наилучший возможный результат верстки.

## Стоит ли беспокоиться об этих предупреждениях?

Пользователи, которые только начинают работать с TeX/LaTeX, могут быть обеспокоены этими предупреждениями, задаваясь вопросом, указывают ли они на серьёзную проблему в их документе, но часто большинство из них можно безопасно игнорировать. Однако эти предупреждения иногда указывают на часть документа, которую действительно нужно проверить и, возможно, отредактировать, чтобы улучшить видимый результат верстки.

Чтобы научиться интерпретировать эти сообщения, требуется немного практики, поэтому, если вы новичок в TeX/LaTeX, стоит потратить время на накопление опыта, находя в исходном коде место, которое сгенерировало предупреждение. Так вы вскоре научитесь замечать предупреждения, которые действительно указывают на проблемы, требующие вашего внимания.

## Как мне найти источник предупреждения?

1. В интерфейсе Overleaf щёлкните по сообщению предупреждения, и редактор прокрутит документ до соответствующего места в вашем исходном коде LaTeX.
2. Слева от этого места в исходном коде будет маленький жёлтый треугольник с восклицательным знаком (!).
3. Если навести указатель мыши на треугольник, Overleaf покажет предупреждение.

Этот короткий видеоклип демонстрирует шаги выше.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/1S1CW2vbVGRHnCXmsbjgAX/096e314caba0c1bafb762a528761e24d/findwarning.mp4>" %}

## Как мне найти место в PDF, соответствующее моему коду LaTeX?

После того как вы найдёте код LaTeX, который сгенерировал конкретное предупреждение, вы можете перейти к соответствующему месту в PDF, используя стрелки, расположенные на панели-разделителе между панелями редактора и набранного PDF.

![Снимок экрана, показывающий \parbox](/files/4c08678f76f357d9d05460ca4d11309b813abb9b)

Если вы не видите эти стрелки, наша справочная статья [Как перейти к исходному коду из набранного PDF (SyncTeX)](/latex/ru/baza-znanii/069-how-to-jump-to-the-source-code-from-the-typeset-pdf-synctex.md) показывает, как их включить.

## Распространённые проблемы и как их исправить

* Вы можете использовать [пакет microtype](https://ctan.org/pkg/microtype?lang=en) который использует микро-типографские расширения, введённые pdfTeX, — обеспечивая более качественную верстку, что также может привести к меньшему числу неудачных коробок.
* Если у вас проблемы с URL и переносами строк, вы можете добавить опцию `breaklinks` к `hyperref` пакета: `\usepackage[breaklinks]{hyperref}`.
* Как и `\parbox`, `minipage` окружения могут приводить к предупреждениям о переполненных или недозаполненных коробках, когда движок TeX пытается разбить абзацы на строки:

```latex

\begin{minipage}{width}
текст...
\end{minipage}
```

Если возможно, увеличьте значение `width` чтобы дать движку TeX больше шансов на получение хороших переносов строк — и/или используйте [пакет microtype](https://ctan.org/pkg/microtype?lang=en).

### Примечания по использованию \\\\

`\\` является макросом (символом управления), точное определение которого может зависеть от контекста, в котором он используется — отличное обсуждение/объяснение можно найти в этом [ответе на tex.stackexchange](https://tex.stackexchange.com/a/55481).

* `\\` не следует использовать для добавления вертикального пространства между абзацами — считается очень плохой практикой делать это.
* `\\` предназначен только для перевода строки (аналогично Shift+Enter в Microsoft Word). Правильный способ создать новый абзац в LaTeX — разделять абзацы пустыми строками в исходном коде.
* Вместо использования `\\` (или `\newline`/`\vspace`) для имитации разрывов абзацев или для увеличения промежутка между абзацами; рекомендуемое решение для задания интервалов между абзацами — подключить пакет [parskip](https://ctan.org/pkg/parskip) : поместите `\usepackage{parskip}` в преамбулу вашего документа.
* Использование `\\` во всём тексте абзацев в документе может мешать алгоритмам LaTeX, которые вычисляют оптимальные места для размещения плавающих объектов, разрыва страниц и т. д., и может вызывать ошибки компиляции в большом документе.
* Допустимое использование `\\` объясняется в ответах на [tex.stackexchange](https://tex.stackexchange.com/). Например, см.:
  * [Когда использовать `\par` и когда `\\`, `\newline`, или пустые строки](https://tex.stackexchange.com/a/82666)
  * [Что делает `\\*` ?](https://tex.stackexchange.com/a/55481)

## Управление тем, о каких коробках TeX сообщает вам

Движки TeX предоставляют ряд низкоуровневых примитивных команд, которые можно использовать, чтобы направлять эвристики TeX и задавать порог, при котором коробка считается настолько «плохой», что TeX начнёт о ней сообщать. Вот несколько ссылок для читателей, интересующихся этими командами:

* [\hfuzz и \vfuzz](/latex/ru/primitivy-tex-latex/06-hfuzz.md)
* [\hbadness и \vbadness](/latex/ru/primitivy-tex-latex/05-hbadness.md)

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

Для дальнейшего ознакомления с тем, как TeX использует коробки и glue, заинтересованному читателю рекомендуются эти ресурсы:

* Статья Overleaf [Как TeX вычисляет настройки glue в \hbox](/latex/ru/podrobnye-stati/24-how-tex-calculates-glue-settings-in-an-hbox.md).
* Статья Overleaf на 17 страниц, написанная в дополнение к этому справочному материалу: [Исследование недозаполненных или переполненных коробок и вычислений badness](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv). В этой статье также рассматриваются примитивы TeX `\hfuzz` и `\hbadness`.
* FAQ по TeX по адресу <https://texfaq.org/FAQ-overfull.html>.
* [tex.stackexchange](https://tex.stackexchange.com/) содержит множество советов от ведущих экспертов по TeX/LaTeX.


---

# 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/138-understanding-underfull-and-overfull-box-warnings.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.
