> 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/primitivi-tex-latex/02-badness.md).

# \badness

#### Підсумок

Кожного разу, коли TEX створює коробку (наприклад, явно через an `\hbox` або `\vbox`) він встановлює, або обчислює, «поганість» цієї коробки: числове значення, яке можна вважати способом виміряти або класифікувати, наскільки «добре» вміст коробки вміщується всередині цієї коробки. Значення поганості для найостаннішої створеної коробки зберігається в регістрі лише для читання (області пам’яті), до якого можна отримати доступ за допомогою команди `\badness`: наприклад, за допомогою `\the\badness`. Зауважте, що TEX також створює коробки під час інших етапів набору (наприклад, перенесення рядків), але тут ми зосередимося на явних командах створення коробок.

#### Пояснення та приклади

Коли TEX просять створити коробку за допомогою наведених далі команд створення коробок:

* `\hbox`
* `\vbox`
* `\vtop`

ви можете вибрати, чи задати розмір коробки та попросити TEX спробувати вмістити ваш вміст у неї; наприклад `\hbox to 20pt{<stuff>}` попросить TEX спробувати вмістити ваш `<stuff>` у коробку шириною 20pt. TEX зробить усе можливе, щоб `<stuff>` вмістити його, розтягуючи або стискаючи будь-який доступний клей.

Або, якщо ви *не* задаєте розмір коробки, записавши `\hbox{<stuff>}`, TEX просто створить `\hbox` яку буде достатньо широкою, щоб умістити `<stuff>` і в такому разі TEX призначить цій коробці значення поганості 0.

Коли TEX вирішує обчислити поганість коробки, він порівнює фактичний розмір вашого вмісту з відповідним виміром коробки, в яку він має вміститися: чи є ваш вміст занадто широким, щоб уміститися в задану `\hbox` або занадто високим, щоб уміститися в задану `\vbox` або `\vtop`? У межах обчислення поганості TEX також бере до уваги *загальне* кількість кожного типу клею всередині коробки — тобто, скільки загального розтягнення або стискання доступно, щоб допомогти створити коробку потрібного розміру.

На практиці, коли TEX потрібно обчислити значення поганості коробки, він використовує (наближення до) таку формулу:

$$\mathrm{badness}=100\left ({t \over s}\right )^3$$

де $$t$$ є бажаною «надлишковою шириною», яку треба вмістити, а $$s$$ є кількістю клею, доступного для розтягування або стискання.

Значення поганості зазвичай лежить між 0 і 10000, але для коробок, які навіть після врахування стискання клею просто недостатньо великі, щоб умістити вміст, зарезервовано спеціальне значення: такі коробки класифікуються як «переповнені», і TEX призначає їм «спеціальне» значення поганості 1000000.

Гаразд, досить обговорення/теорії — тепер розглянемо кілька прикладів. Ми створимо 5 коробок і використаємо 5 `\count` регістрів, щоб зберігати `\badness` значення коробки, яку TEX щойно створив. Пізніше ми використовуємо ці `\count` регістри, щоб вивести `\badness` значення відповідної коробки.

```
\newcount\aval\newcount\bval\newcount\cval\newcount\dval\newcount\eval
\setbox100=\hbox{Привіт \TeX}\aval=\the\badness %Ми не задаємо розмір коробки
\setbox101=\hbox to25mm{Привіт \TeX\hskip0pt plus5pt}\bval=\the\badness
\setbox102=\hbox to50mm{Привіт \TeX}\cval=\the\badness
\setbox103=\hbox to50mm{Привіт \TeX\hfill}\dval=\the\badness
\setbox104=\hbox to5mm{Overleaf}\eval=\the\badness
\setlength{\fboxsep}{0pt}% поставте щільну рамку навколо кожної коробки
\noindent Ось результати:\vskip5mm
\noindent коробка 100 (\fbox{\copy100}) має значення \verb|\badness|, рівне \number\aval\par
\noindent коробка 101 (\fbox{\copy101}) має значення \verb|\badness|, рівне \number\bval\par
\noindent коробка 102 (\fbox{\copy102}) має значення \verb|\badness|, рівне \number\cval\par
\noindent коробка 103 (\fbox{\copy103}) має значення \verb|\badness|, рівне \number\dval\par
\noindent коробка 104 (\fbox{\copy104}) має значення \verb|\badness|, рівне \number\eval\par
```

Наведена нижче графіка показує результат:

![](/files/9206e5d1e29cef73de1befeb45d5990a9f7039ba)

* коробка 100: `\hbox{Привіт \TeX}`. Це має `\badness` 0, тому що TEX не просили підігнати вміст до конкретного розміру.
* коробка 101: `\hbox to25mm{Привіт \TeX\hskip0pt plus5pt}`. У цієї коробки є два елементи клею: міжслівний пробіл після слова «Привіт» і 5pt, що походять від `\hskip` клею. Однак потрібна коробка має ширину 25mm, тож утворюється багато вільного простору, який треба заповнити, маючи небагато клею для цього. Така комбінація надлишкового простору та доступного клею призводить до `\badness` значення 6396.
* коробка 102: `\hbox to50mm{Привіт \TeX}`. У цієї коробки є лише один елемент клею: міжслівний пробіл після слова «Привіт», і їй потрібно заповнити багато надлишкового простору. Така комбінація надлишкового простору та малої кількості клею призводить до дуже великого `\badness` значення — настільки великого, що TEX «обрізає» його до максимального значення 10000. Крім того, міжслівний пробіл сильно розтягується, щоб заповнити коробку, унаслідок чого між «Привіт» і «TEX» з’являється величезний проміжок
* коробка 103: `\hbox to50mm{Привіт \TeX\hfill}`. Ця коробка подібна до коробки 102, але має два елементи клею: міжслівний пробіл після слова «Привіт», а також другий, дуже гнучкий клей, наданий `\hfill`— так званий «нескінченно гнучкий» клей. Отже,`\hfill` може розтягуватися настільки, наскільки потрібно, і розширюється, щоб поглинути весь надлишковий простір. Завдяки «нескінченно гнучкому» клею результатне `\badness` значення дорівнює 0.
* коробка 104: `\hbox to5mm{Overleaf}` Ця коробка накладається на текст, що йде після неї, і має `\badness` значення 1000000. Дуже велике значення поганості (і накладання тексту) зумовлене тим, що текст «Overleaf» занадто великий, щоб уміститися в `\hbox` яку ширину лише 5mm — і, крім того, немає доступних клеїв, здатних поглинути надлишкову ширину. TEX класифікує коробку 104 як «переповнену» і встановлює `\badness` для неї спеціальне значення 1000000.

#### Пов'язані команди

TEX надає кілька команд, пов’язаних зі звітуванням і відображенням поганості коробок:

* `[\overfullrule](./07-overfullrule.md)`
* `[\hfuzz](./06-hfuzz.md)`
* `[\vfuzz](./06-hfuzz.md)`
* `[\hbadness](./05-hbadness.md)`
* `[\vbadness](./05-hbadness.md)`


---

# 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/primitivi-tex-latex/02-badness.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.
