> 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/cs/primitiva-texu-latexu/02-badness.md).

# \badness

#### Shrnutí

Pokaždé, když TEX vytvoří box (např. explicitně pomocí `\hbox` nebo `\vbox`) nastaví, nebo vypočítá, „badness“ daného boxu: číselnou hodnotu, kterou lze chápat jako způsob měření či klasifikace toho, jak „dobře“ obsah boxu zapadá do tohoto boxu. Hodnota badness pro naposledy vytvořený box je uložena v registru pouze pro čtení (paměťovém místě), ke kterému lze přistupovat příkazem `\badness`: například pomocí `\the\badness`. Všimněte si, že TEX vytváří boxy i během jiných sazbových činností (např. zalamování řádků), ale zde se zaměříme na explicitní příkazy pro vytváření boxů.

#### Vysvětlení a příklady

Když je TEX požádán, aby vytvořil box pomocí následujících příkazů pro vytváření boxů:

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

můžete zvolit nastavení velikosti boxu a požádat TEX, aby se pokusil váš obsah do něj vměstnat; například `\hbox to 20pt{<stuff>}` požádá TEX, aby se pokusil vměstnat váš `<stuff>` do boxu širokého 20pt. TEX se bude co nejvíce snažit, aby `<stuff>` vše sedělo natažením nebo smrštěním veškerého dostupného glue.

Alternativně, pokud *nezadáte* pevnou velikost boxu, napsáním `\hbox{<stuff>}`, TEX jednoduše vytvoří `\hbox` box, který je dostatečně široký, aby pojal `<stuff>` a v tom případě TEX tomuto boxu přiřadí hodnotu badness 0.

Když se TEX rozhodne vypočítat badness boxu, porovná skutečnou velikost vašeho obsahu s příslušným rozměrem boxu, do kterého se má vejít: je váš obsah příliš široký, aby se vešel do zadané `\hbox` nebo příliš vysoký, aby se vešel do určené `\vbox` nebo `\vtop`? Jako součást výpočtu badness TEX také bere v úvahu *celkové* množství každého typu glue uvnitř boxu — tedy kolik celkového natažení nebo smrštění je k dispozici, aby pomohlo vytvořit box požadované velikosti.

V praxi, když TEX potřebuje vypočítat hodnotu badness boxu, používá (přibližný) následující vzorec:

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

kde $$t$$ je požadovaná „přebytečná šířka“, která má být pojmuta, a $$s$$ je množství glue dostupného pro natažení nebo smrštění.

Hodnota badness obvykle leží mezi 0 a 10000, ale zvláštní hodnota je vyhrazena pro boxy, které ani po započtení smrštění glue prostě nejsou dost velké, aby pojaly obsah: tyto boxy jsou klasifikovány jako „overfull“ a TEX jim přiřazuje „zvláštní“ hodnotu badness 1000000.

Dobře, to by stačilo k diskusi/teorii; nyní se podíváme na několik příkladů. Vytvoříme 5 boxů a použijeme 5 `\count` registry k uchování `\badness` hodnoty boxu, který TEX právě vytvořil. Později tyto `\count` registry použijeme k výpisu `\badness` hodnoty příslušného boxu.

```
\newcount\aval\newcount\bval\newcount\cval\newcount\dval\newcount\eval
\setbox100=\hbox{Hello \TeX}\aval=\the\badness %Velikost boxu nenastavujeme
\setbox101=\hbox to25mm{Hello \TeX\hskip0pt plus5pt}\bval=\the\badness
\setbox102=\hbox to50mm{Hello \TeX}\cval=\the\badness
\setbox103=\hbox to50mm{Hello \TeX\hfill}\dval=\the\badness
\setbox104=\hbox to5mm{Overleaf}\eval=\the\badness
\setlength{\fboxsep}{0pt}% kolem každého boxu nastavte těsný rámeček
\noindent Zde jsou výsledky:\vskip5mm
\noindent box 100 (\fbox{\copy100}) má hodnotu \verb|\badness| \number\aval\par
\noindent box 101 (\fbox{\copy101}) má hodnotu \verb|\badness| \number\bval\par
\noindent box 102 (\fbox{\copy102}) má hodnotu \verb|\badness| \number\cval\par
\noindent box 103 (\fbox{\copy103}) má hodnotu \verb|\badness| \number\dval\par
\noindent box 104 (\fbox{\copy104}) má hodnotu \verb|\badness| \number\eval\par
```

Následující obrázek ukazuje výstup:

![](/files/b6b8eec812bc1badca3c3be1bfca4909071f40a9)

* box 100: `\hbox{Hello \TeX}`. To má `\badness` hodnotu 0, protože TEX nebyl požádán, aby obsah vměstnal do konkrétní velikosti.
* box 101: `\hbox to25mm{Hello \TeX\hskip0pt plus5pt}`. Tento box má dva prvky glue: mezeru mezi slovy po slově „Hello“ a 5pt pocházejících z `\hskip` glue. Požadovaný box je však široký 25mm, což znamená mnoho místa k vyplnění a jen málo glue, které by to umožnilo. Tato kombinace přebytečného prostoru a dostupného glue vede k `\badness` hodnotě 6396.
* box 102: `\hbox to50mm{Hello \TeX}`. Tento box má jen jednu položku glue: mezeru mezi slovy po slově „Hello“ a má k vyplnění spoustu přebytečného prostoru. Tato kombinace přebytečného prostoru a malého množství glue vede k velmi velké `\badness` hodnotě — tak vysoké, že ji TEX „ořízne“ na maximální hodnotu 10000. Kromě toho je mezislovní mezera výrazně natažena, aby vyplnila box, což má za následek obrovskou mezeru mezi „Hello“ a „TEX“
* box 103: `\hbox to50mm{Hello \TeX\hfill}`. Tento box je podobný boxu 102, ale má dvě položky glue: mezeru mezi slovy po slově „Hello“ a má také druhé velmi pružné glue poskytnuté `\hfill`—tzv. „nekonečně flexibilním“ glue. V důsledku toho`\hfill` se může natáhnout tak, jak je potřeba, a roztáhne se, aby pohltilo veškerý přebytečný prostor. Díky „nekonečně flexibilnímu“ glue je výsledná `\badness` hodnota 0.
* box 104: `\hbox to5mm{Overleaf}` Tento box překrývá text, který za ním následuje, a má `\badness` hodnotu 1000000. Velmi vysoká hodnota badness (a překrývající se text) je způsobena tím, že text „Overleaf“ je příliš velký, aby se vešel do `\hbox` boxu, který je široký pouze 5mm — a navíc nejsou k dispozici žádná glue schopná absorbovat přebytečnou šířku. TEX klasifikuje box 104 jako „overfull“ box a nastaví `\badness` na zvláštní hodnotu 1000000.

#### Související příkazy

TEX poskytuje řadu příkazů souvisejících s hlášením a zobrazováním badness boxů:

* `[\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/cs/primitiva-texu-latexu/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.
