> 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/clanky-do-hloubky/11-boxes-and-glue-a-brief-but-visual-introduction-using-luatex.md).

# Boxy a lepidlo: Stručný, ale vizuální úvod pomocí LuaTeXu

## Úvod pro budoucí články

Tento příspěvek je stručným úvodem do některých klíčových konceptů/modelů, které se podílejí na sazbě pomocí $$\mathrm \TeX$$: boxů a lepidla — „nastavení scény“ pro budoucí články, které půjdou do mnohem větších detailů. Nadcházející příspěvek prozkoumá nízkoúrovňové chování $$\mathrm \TeX$$ boxů pomocí $$\mathrm{Lua}\mathrm\TeX$$ k vytvoření diagramů (grafů uzlů), jako je následující příklad:

![Graf uzlů boxu](/files/ff0233ca71ccf67d933e3a92f0751beb48e47bc8)

Tento graf uzlů je vytvořen z `\hbox{...}` vytvořeného pomocí následujícího $$\mathrm \TeX$$ kódu:

```latex

\hbox to100pt{A\hskip4pt plus3pt minus 2pt B%
\hskip 0pt plus 2fil C\hskip 0pt plus 2fill D\hskip 0pt plus 3fill}
```

který vypadá takto (vykreslený s ohraničujícím obdélníkem):

![Ukázkový \hbox](/files/40f1d341ab162baa2a978fd95129638bf317b2bb)

Tyto grafy uzlů ukazují hlubokou vnitřní strukturu $$\mathrm \TeX$$ boxů — odrážející to, jak jsou uloženy uvnitř $$\mathrm \TeX$$ a poskytují neocenitelný grafický popis, který pomáhá lépe porozumět chování příkazů pro konstrukci boxů, jako je `\hbox{...}` nebo `\vbox{...}`.

## Zpět k základům...

I jako nový, nebo příležitostný, $$\mathrm \LaTeX$$ uživatel se brzy setká s pojmem $$\mathrm \TeX$$ „boxy“ nebo že $$\mathrm \TeX$$ používá pro své základní sazečské činnosti model „boxů a lepidla“. Sazečské algoritmy $$\mathrm \TeX$$ tráví velkou část času vytvářením a následným skládáním vodorovných a svislých seznamů boxů. Například když $$\mathrm \TeX$$ sází odstavec textu a rozděluje jej do série řádků, považuje text odstavce za proud nebo sekvenci boxů a používá šířku, výšku a hloubku těchto znakových boxů (ve skutečnosti glyfů) k nalezení nejlepších zalomení řádků a poté přidává svislý prostor mezi řádky vysázeného textu (tomuto lepidlu se říká `\baselineskip`). Každý vysázený řádek odstavce je sám o sobě box (obsahující jiné boxy — např. znaky) a vysázené řádky odstavce (boxy) jsou skládány svisle, aby vytvořily odstavec. Nakonec vzniká ten největší box ze všech: vysázená stránka. Je zřejmé, že jde o extrémně zjednodušený obraz, protože také potřebujete schopnost tyto boxy přesouvat a umísťovat a $$\mathrm \TeX$$ to dělá pomocí tzv. *glue*: formy „pružného rozestupu“. Knuth poznamenal (strana 70 knihy The $$\mathrm \TeX \mathrm{book}$$) že „glue“ by se asi mělo označovat jako „spring“, ale termín glue byl přijat už na začátku a, jak si Knuth slovně hraje, přilepil se.

## Vizualizace vysázeného odstavce pomocí $$\mathrm{Lua}\mathrm\TeX$$

Pomocí $$\mathrm{Lua}\mathrm\TeX$$, vysázený odstavec lze zpracovat tak, aby zobrazil komponenty použité k jeho vysázení: znakové boxy a pružné lepidlo použité k vložení mezery mezi slova. Vytvořili jsme jednoduchý [$$\mathrm{Lua}\mathrm\TeX$$ (prostý $$\mathrm \TeX$$) projekt](https://www.overleaf.com/latex/examples/using-a-luatex-callback-to-parse-typeset-paragraphs/mzbpwxtjshsj) k demonstraci tohoto:

[![Screenshot of Overleaf](/files/5e8430d497a075c7bac7fee03c8acd2bf03d2975)](https://www.overleaf.com/latex/examples/using-a-luatex-callback-to-parse-typeset-paragraphs/mzbpwxtjshsj)

Kód projektu byl napsán tak, aby ilustroval tento příspěvek, a není plnou implementací analyzátoru odstavců — ignoruje řadu $$\mathrm{Lua}\mathrm \TeX$$ typů uzlů a je navržen čistě k ilustraci myšlenek probíraných v tomto příspěvku.

![boxů a lepidla](/files/9bf6741b5c3e805cbe3c917b54f3a2d318496022)

V sekci se zvětšeným obrázkem níže můžete vidět jednotlivé řádky odstavce vyznačené jako šedé pruhy — všimněte si, že mezi řádky je bílý prostor: svislé lepidlo, které $$\mathrm \TeX$$ vkládá při jejich skládání do podoby odstavce. Pokud se chcete dozvědět víc o svislém lepidle vkládaném mezi řádky vysázeného odstavce, použijte Google k nalezení článků, které pojednávají o `\baselineskip` a `\lineskiplimit`.

![analyzovaný odstavec zobrazující boxy a lepidlo](/files/82817d7148bc6928a2fca17757c75f87108b74b3)

Když $$\mathrm \TeX$$ čte a sází odstavec, převádí mezislovní mezery na shluky lepidla, jejichž přesná hodnota je vlastností použitého písma. Během sazby jsou tato mezislovní lepidla roztahována nebo stlačována o množství považované za nezbytné k dosažení příjemného zalomení řádku. Na obrázku výše si povšimněte následujícího:

* šedé pruhy jsou hranice jednotlivých řádků vysázeného odstavce;
* každý znak je zobrazen uvnitř boxu, který definuje jeho rozměry (jak je $$\mathrm \TeX$$ ho vidí);
* žluté boxy ukazují lepidlo, které $$\mathrm \TeX$$ vložil mezi slova, aby dosáhl příjemného zalomení řádku. Všimněte si následujícího:
* šířka mezislovního lepidla se liší řádek od řádku, protože $$\mathrm \TeX$$ ho roztahuje nebo stlačuje, aby dosáhl každého zalomení řádku;
* ve třetím řádku je lepidlo za tečkou širší než ostatní lepidla na stejném řádku.
* červený box ukazuje, kde bylo použito explicitní `\hbox{...}` bylo použito. Definice `\TeX` příkazu vloží písmeno E do `\hbox{...}` horního indexu, aby jej bylo možné snížit a vytvořit $$\mathrm \TeX$$ logo.

Na konci našeho ukázkového odstavce je dlouhý pruh lepidla, který se nazývá `\parfillskip`: to vkládají $$\mathrm \TeX$$ sazební stroje, aby vyplnily prostor na posledním řádku. ![parfillskip glue](/files/d28539cc9a204783b1c7cb4ac875ed87c6d8d619)

### Do příštího příspěvku

Doufáme, že vám tento příspěvek poskytl užitečný úvod do principu boxů a lepidla používaného v $$\mathrm \TeX$$. V nadcházejícím příspěvku použijeme $$\mathrm{Lua}\mathrm\TeX$$ k tomu, abychom se ponořili mnohem hlouběji do obsahu $$\mathrm \TeX$$ boxů — pomocí grafů uzlů, jako je příklad zobrazený na začátku tohoto článku.


---

# 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/clanky-do-hloubky/11-boxes-and-glue-a-brief-but-visual-introduction-using-luatex.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.
