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

# Розуміння попереджень про недозаповнені та переповнені бокси

## Вступ

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

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

## Чи є в моєму проєкті попередження про переповнення або недостатню заповненість?

Щоб перевірити, чи ваш проєкт повідомляє про ці попередження, вам потрібно натиснути на значок, показаний на знімку екрана нижче. Навіть якщо ваш документ скомпілювався без помилок, дуже часто можна побачити ці повідомлення, і будь-хто, хто лише нещодавно почав працювати з TeX/LaTeX, може замислитися, що вони означають і чи варто ними перейматися.

![Знімок екрана, що показує повідомлення Overleaf про недостатньо заповнені або переповнені блоки](/files/c04c05bc44f48ae87700dd28c14deee25367d214)

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

```latex
\parbox{50pt}{Деякий текст, набраний за допомогою \texttt{\string\parbox}}
```

Overleaf повідомляє про два `Попередження Underfull \hbox...` попередження:

![Знімок екрана, що показує повідомлення Overleaf про недостатньо заповнені блоки](/files/3b0cdd1c860e8868d4cd83dbaf11f9186b4dc670)

Ці `Попередження Underfull \hbox...` попередження виникають тому, що рушій TeX не може створити «гарні» перенесення рядків у межах обмежень цієї \parbox. Усередині рушіїв TeX кожен рядок набраного абзацу стає \hbox, який рушій згодом перевірятиме й аналізуватиме, потенційно генеруючи попередження для будь-яких рядків набраного тексту, які рушій TeX класифікує як «небажані».

Як видно на наступних зображеннях, рядки тексту надзвичайно розтягнуті, і попередження TeX `Попередження Underfull \hbox...` повідомляють вам про це — хоча в цьому прикладі це й так очевидно.

![Знімок екрана, що показує parbox](/files/4a288248fdf41fff28d028a3720a8a7c914ee890)

Зауважте, що в цьому прикладі ви можете уникнути цих попереджень, використавши \raggedright:

```latex
\parbox{50pt}{\raggedright Деякий текст, набраний за допомогою \texttt{\string\parbox}}
```

![Знімок екрана, що показує parbox](/files/6cf09a23e35f2869a0e83959d57afe850454c8ac)

## Переповнені та недостатньо заповнені блоки

Функція `\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) ...
Underfull \hbox (badness <value> ) ... at line(s) ...
Underfull \vbox (badness <value>) ... at line(s) ...
```

Один `\hbox` означає *горизонтальний блок* у якому рушій TeX розміщує список елементів поруч один з одним і `\vbox` означає *вертикальний блок* у якому рушій TeX розташовує елементи один над одним.

Якщо матеріалу замало, рушій TeX повідомить про `попередження Underfull \hbox` попередження або `попередження Underfull \vbox` попередження:

* **Недостатньо заповнені блоки** не мають достатньо матеріалу, щоб заповнити (блокові) розміри, виділені для його вмісту, і рушію TeX потрібно було «розтягнути» вміст у спробі заповнити цей простір. Для недостатньо заповнених блоків Overleaf також повідомлятиме так звану «поганість» TeX (`поганість <значення>`) — це міра того, наскільки TeX довелося «розтягнути» ваш вміст, щоб заповнити відведений для нього простір. Значення поганості зазвичай лежать у діапазоні від 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` файл, щоб витягти переповнені/недостатньо заповнені `\hbox` або `\vbox` попереджувальні повідомлення TeX і відображає їх в інтерфейсі 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/c0c2fb4b397db1580b56bc5bf868dcb7361ecafa)

Якщо ви не бачите цих стрілок, наша довідкова стаття [Як перейти до вихідного коду з верстаного PDF (SyncTeX)](/latex/uk/baza-znan/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}
text...
\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/uk/primitivi-tex-latex/06-hfuzz.md)
* [\hbadness і \vbadness](/latex/uk/primitivi-tex-latex/05-hbadness.md)

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

Для подальшого ознайомлення з використанням блоків і glue у TeX зацікавленому читачеві рекомендуємо такі ресурси:

* Стаття Overleaf [Як TeX обчислює параметри glue в \hbox](/latex/uk/dokladni-statti/24-how-tex-calculates-glue-settings-in-an-hbox.md).
* 17-сторінкова стаття Overleaf, написана на підтримку цієї довідкової статті: [Дослідження недостатньо заповнених або переповнених блоків і обчислень поганості](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/uk/baza-znan/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.
