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

# Блоки та клей: короткий, але візуальний вступ із використанням LuaTeX

## Вступ до майбутніх статей

Ця публікація — короткий вступ до деяких ключових понять/моделей, що використовуються під час верстки за допомогою $$\mathrm \TeX$$: боксів і клею — «створення тла» для майбутніх статей, у яких буде значно більше деталей. У наступній публікації буде розглянуто низькорівневу поведінку $$\mathrm \TeX$$ боксів за допомогою $$\mathrm{Lua}\mathrm\TeX$$ щоб створювати діаграми (графи вузлів), такі як у наступному прикладі:

![Граф вузлів бокса](/files/e71830c487a3c94a8ead94c567d27f7159f3459a)

Цей граф вузлів побудовано на основі `\hbox{...}` створеного за допомогою такого $$\mathrm \TeX$$ коду:

```latex

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

який виглядає так (намальований із охоплювальним прямокутником):

![Зразок \hbox](/files/4984b4750d59d412a7a9f32121db5c67b16be445)

Ці графи вузлів показують глибинну внутрішню структуру $$\mathrm \TeX$$ боксів — відображаючи, як їх зберігають усередині $$\mathrm \TeX$$ і пропонують неоціненний графічний опис, що допомагає краще зрозуміти поведінку команд побудови боксів, таких як `\hbox{...}` або `\vbox{...}`.

## Повернімося до основ...

Навіть як новий або звичайний, $$\mathrm \LaTeX$$ користувачеві не знадобиться багато часу, перш ніж ви натрапите на поняття $$\mathrm \TeX$$ «боксів» або на те, що $$\mathrm \TeX$$ використовує модель «боксів і клею» для своїх основних верстальних операцій. Алгоритми верстки $$\mathrm \TeX$$ проводять значну частину часу, створюючи, а потім укладаючи горизонтальні й вертикальні списки боксів. Наприклад, коли $$\mathrm \TeX$$ верстає абзац тексту й розбиває його на серію рядків, він розглядає текст абзацу як потік або послідовність боксів і використовує ширину, висоту та глибину цих боксів символів (насправді гліфів), щоб знайти найкращі переноси рядків, а потім додає вертикальний проміжок між рядками набраного тексту (цей клей називається `\baselineskip`). Кожен набраний рядок абзацу сам є боксом (що містить інші бокси — наприклад, символи), а набрані рядки абзацу (бокси) вертикально складаються, утворюючи абзац. Зрештою, створюється найбільший із усіх боксів: набрана сторінка. Очевидно, це надзвичайно спрощена картина, адже вам також потрібна можливість переміщувати й позиціонувати ці бокси та $$\mathrm \TeX$$ робить це за допомогою так званого *клей*: форми «гнучкого проміжку». Кнут зауважив (сторінка 70 книги The $$\mathrm \TeX \mathrm{book}$$) що «glue» імовірно слід було називати «spring», але термін glue було прийнято на початку, і, якщо скористатися грою слів Кнута, він прижився.

## Візуалізація набраного абзацу за допомогою $$\mathrm{Lua}\mathrm\TeX$$

Використання $$\mathrm{Lua}\mathrm\TeX$$, набраний абзац можна обробити, щоб показати компоненти, використані для його набору: бокси символів і гнучкий клей, що використовується для проміжків між словами. Ми створили простий [$$\mathrm{Lua}\mathrm\TeX$$ (звичайний $$\mathrm \TeX$$) проєкт](https://www.overleaf.com/latex/examples/using-a-luatex-callback-to-parse-typeset-paragraphs/mzbpwxtjshsj) щоб це продемонструвати:

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

Код проєкту було написано, щоб проілюструвати цю публікацію, і це не повноцінна реалізація «парсера» абзаців — він ігнорує низку $$\mathrm{Lua}\mathrm \TeX$$ типів вузлів і створений виключно для ілюстрації ідей, обговорених у цій публікації.

![бокси і клей](/files/1da442b88f4969b497e410bad78fc206394cc857)

У розділі збільшеного зображення нижче ви можете побачити окремі рядки абзацу, затінені як сірі смуги — зверніть увагу, що між рядками є білий простір: вертикальний клей, який $$\mathrm \TeX$$ вставляє, коли складає їх, щоб утворити абзац. Якщо хочете дізнатися більше про вертикальний клей, вставлений між рядками в набраному абзаці, скористайтеся Google, щоб знайти статті, які обговорюють `\baselineskip` та `\lineskiplimit`.

![розібраний абзац, що показує бокси і клей](/files/e730f694b99e5420ca89361e24a551ea11bd45b2)

Коли $$\mathrm \TeX$$ читає й верстає абзац, він перетворює символи проміжків між словами на грудки клею, точне значення якого є властивістю шрифту, що використовується. Під час верстки ці проміжки між словами розтягуються або стискаються настільки, наскільки це вважається необхідним для досягнення приємного переносу рядка. На зображенні вище слід звернути увагу на таке:

* сірі смуги — це межі окремих рядків набраного абзацу;
* кожен символ показано в боксі, що визначає його розміри (як $$\mathrm \TeX$$ його бачить);
* жовті бокси показують клей, який $$\mathrm \TeX$$ було вставлено між словами, щоб досягти приємного переносу рядка. Зверніть увагу на таке:
* ширина міжслівного клею змінюється від рядка до рядка, оскільки $$\mathrm \TeX$$ розтягує або стискає його, щоб досягти кожного переносу рядка;
* у третьому рядку клей після символу крапки ширший, ніж інші клеї в тому самому рядку.
* червоний бокс показує, де явний `\hbox{...}` було використано. Визначення `\TeX` команди вставляє E в `\hbox{...}` так, щоб його можна було опустити, щоб створити $$\mathrm \TeX$$ логотип.

Наприкінці нашого прикладного абзацу є довга смуга клею, яка називається `\parfillskip`: це вставляється $$\mathrm \TeX$$ верстальними рушіями, щоб заповнити простір у останньому рядку. ![parfillskip glue](/files/34056158e195f36708e2ae6666fdce9ca91972e9)

### До наступної публікації

Сподіваємося, ця публікація дала корисний вступ до принципу боксів і клею, що використовується в $$\mathrm \TeX$$. У наступній публікації ми використаємо $$\mathrm{Lua}\mathrm\TeX$$ щоб набагато глибше зануритися в зміст $$\mathrm \TeX$$ боксів — використовуючи графи вузлів, такі як приклад, показаний на початку цієї статті.


---

# 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/dokladni-statti/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.
