> 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/fi/syvalliset-artikkelit/24-how-tex-calculates-glue-settings-in-an-hbox.md).

# Miten TeX laskee liima-asetukset \hboxissa

Tämä on sarjan kolmas ja päättävä artikkeli, joka tarkastelee $$\mathrm \TeX$$ laatikoita ja liimaa. Ensimmäinen kirjoitus [Laatikot ja liima: lyhyt, mutta visuaalinen, johdanto LuaTeXillä](/latex/fi/syvalliset-artikkelit/11-boxes-and-glue-a-brief-but-visual-introduction-using-luatex.md) esitteli laatikoiden ja liiman käsitteet, ja sitä seurasi [Pandoran \hbox: LuaTeXilla TeX-laatikoiden kannen nostaminen](/latex/fi/syvalliset-artikkelit/36-pandora-s-hbox-using-luatex-to-lift-the-lid-of-tex-boxes.md) jossa esiteltiin [$$\text{Lua}\mathrm\TeX$$-pohjainen Overleaf-projekti](https://www.overleaf.com/latex/examples/exploring-the-structure-of-tex-boxes-with-luatex/pwdrypmtdbgs) tutkimaan syvempiä rakenteita $$\mathrm \TeX$$ laatikoista solmukaavioita käyttäen. Tässä viimeisessä osassa sukellamme syvälle siihen, miten $$\mathrm \TeX$$ laskee liima-arvoja `\hbox`: prosessi, jota kutsutaan *liiman asettamiseksi*. Käytämme laajasti solmukaavioita (esitelty [Pandoran \hbox: LuaTeXilla TeX-laatikoiden kannen nostaminen](/latex/fi/syvalliset-artikkelit/36-pandora-s-hbox-using-luatex-to-lift-the-lid-of-tex-boxes.md) tässä sarjassa) ja näytämme, miten niiden tarjoamia tietoja käytetään ja tulkitaan: `glue_set`, `glue_sign` ja `glue_order`.

Esitämme täysin läpikäydyn esimerkin liimalaskuista `\hbox` ja käsittelemme paljon yksityiskohtia; kuitenkin voi olla lisäolosuhteita ja huomioon otettavia seikkoja, joihin meillä ei ole tilaa puuttua tässä, ja kiinnostunut lukija ohjataan sivulle 77 teoksessa $$\text{The } \mathrm \TeX \text{book}$$.

## Haaste

Oletetaan, että meillä on `\hbox` tällainen:

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

Tältä tämä laatikko näyttää—selkeyden vuoksi suurennettuna ja reunuksella:

![laatikko](/files/b9601b89a8bc2c1d7c223c055ba65a18409e4a85)

Kysymys on: mikä on lopullinen arvo, $$\mathrm \TeX$$ pisteinä mitattuna, seuraavien kohteiden väliselle tilalle (liimalle):

* A:n ja B:n
* B:n ja C:n
* C:n ja D:n
* D:n ja laatikon lopun

eli haluamme laskea arvoille $$\mathrm{g}*{1}, \mathrm{g}*{2}, \mathrm{g}*{3} \text{ and } \mathrm{g}*{4}:$$

![liima](/files/5934f5b28394d3c00ace0b5295bba5ebd31573e7)

Tässä on yllä olevaa laatikkoa kuvaava solmukaavio. Erityisen kiinnostavia ovat kolme arvoa, jotka sijaitsevat “metadata”-osiossa:

* `glue_set`
* `glue_sign`
* `glue_order`

![solmukaavio](/files/61e129b7cd3506651aee10b1cdc2677fc99e8be1)

On tärkeää huomata, että tietyt arvot `glue_set`, `glue_sign` ja `glue_order` vaikuttavat vain ylimmän tason laatikon sisäisiin liimoihin: ne eivät vaikuta liimoihin *sisäkkäisissä* laatikoissa: jokaisella sisäkkäisellä laatikolla (hlist- tai vlist-objektilla) on omat arvonsa näille kolmelle parametrille. Tässä on esimerkki `\hbox` sisäkkäinen ulomman laatikon sisällä `\hbox`. Tässä esimerkissä voit selvästi nähdä eri arvot `glue_set`—tietysti sisäkkäisellä laatikolla voi olla myös eri arvot `glue_sign` ja `glue_order`.

```latex
\hbox to 75pt{\hfill ABC\hbox to15pt{\hfill D}}
```

![solmukaavio](/files/355808e5a3af942fe83653c1cd63146326b1890a)

## Liimatyypit, äärettömyydet ja järjestykset: yhteenveto

$$\mathrm \TeX$$ tarjoaa useita perusliimaan liittyviä komentoja, mukaan lukien:

* vaakasuora liima: `\hskip`, `\hfil`, `\hfill`, `\hfilneg`, `\hss`;
* pystysuora liima:`\vskip`, `\vfil`, `\\vfill`, `\vfilneg`, `\vss`;

sekä `\mskip` liiman lisäämiseen matemaattisiin lausekkeisiin.

Liima-alkio määritellään kolmen arvon joukkona:

* **luonnollinen leveys**: kuinka paljon tilaa se vie, jos sitä ei venytetä eikä kutisteta;
* **venytyskomponentti**: kuinka paljon liima voi venyä;
* **kutistumiskomponentti**: kuinka paljon liima voi kutistua.

Tarkastelemme liiman käyttöä eräässä `\hbox{...}` ja laskelmia $$\mathrm \TeX$$ jota käytetään määrittämään, kuinka paljon tilaa liima lopulta vie. Komento, jota käytämme jonkin *vaaka* liiman luomiseen, on `\hskip`, ja sen muoto on:

`**\hskip** *<natural width>* **plus** *<amount to stretch>* **minus** *<amount to shrink>*`

Tiedostoissa *pysty* liimaa käyttäisit `**\vskip** *<natural width>* **plus** *<amount to stretch>* **minus** *<amount to shrink>*`.

Esimerkiksi jokin tyypillinen vaakasuora liima ilmaistaisiin näin `\hskip 3pt plus 2pt minus 1pt`. Voit käyttää myös muita fyysisiä yksiköitä:

* `\hskip 3mm plus 2mm minus 1mm`
* `\hskip 3in plus 2in minus 1in`
* `\hskip 1in plus 3cm minus 20mm`

## $$\mathrm \TeX$$ liima ja “äärettömyyden” yksiköt

Liiman kutistus- tai venytyskomponentille $$\mathrm \TeX$$ esitellään toinen yksikkötyyppi: niin sanotut “äärettömyydet”: $$\text{fil}$$, $$\text{fill}$$ ja $$\text{filll}$$. Nämä kolme “äärettömyyden tasoa” ovat sellaisia, että kun ne listataan järjestyksessä, kukin on “äärettömämpi” kuin edellinen:

$$\text{fil} < \text{fill} < \text{filll}$$

Ehkä “äärettömyydet” on hieman hämäävä nimi näille yksiköille—voi olla hyödyllistä ajatella niitä myös eri tasoina *prioriteettia*, koska lopulta ne auttavat määrittämään, mitkä liimat todella osallistuvat venytys- tai kutistusprosessiin. Kun liimalla on “ääretön” venytys- tai kutistumiskomponentti, $$\mathrm \TeX$$ voit luoda liimaa, joka voi venyä tai kutistua halutulla määrällä. Huomaa, että äärellisillä liimoilla, $$\mathrm \TeX$$ rajoittaa tällaisten liimojen kutistumisen määrää. Esimerkki “äärettömästä” liimasta on

`\hskip 3pt plus 2fil minus 1fill`

Huomaa, emme voi kirjoittaa esimerkiksi `\hskip 1fil` koska $$\mathrm \TeX$$ ilmoittaa virheestä viestillä `Luvaton mittayksikkö (pt lisätty)`. Tässä vaiheessa nämä “äärettömyyden tasot” saattavat kuulostaa hyvin oudoilta, mutta toistaiseksi hyväksy se sellaisenaan, ja pian näemme, miten $$\mathrm \TeX$$ käyttää näitä äärettömyyksiä liimalaskelmia suorittaessaan.

### Äärettömyyden tasot (“liiman järjestys”)

Sisäisesti, kun $$\mathrm \TeX$$ suorittaa liimalaskelmiaan, se katsoo, että kukin äärettömyyden taso on “liiman järjestys” välillä 0–3, jossa 0. järjestys on fyysisillä yksiköillä, kuten bp, pt, mm ja niin edelleen, ilmaistulle liimalle. Kuitenkin $$\text{Lua}\mathrm\TeX$$ on pieni poikkeama, koska siinä on itse asiassa ylimääräinen äärettömyyden tyyppi (järjestys), jota ei ole monissa muissa $$\mathrm \TeX$$ moottoreissa: $$\text{fi}$$ (katso selitys alla). Jos luet $$\text{The } \mathrm \TeX\text{book}$$ et näe mitään mainintaa $$\text{fi}$$ äärettömyydestä—yksinkertaisesti siksi, ettei sitä ole toteutettu Knuthin alkuperäisessä $$\mathrm \TeX$$ ohjelmistossa. Tämän seurauksena meillä on pieni “epäsuhta” $$\text{Lua}\mathrm\TeX\text{'s}$$ äärettömyyksien järjestyksen ja niiden välillä, joita saatat nähdä kirjoissa $$\mathrm \TeX$$. $$\text{Lua}\mathrm\TeX$$ käyttää äärettömyyksiä, joiden järjestys vaihtelee välillä 0–4, mutta muut (yleiset) $$\mathrm \TeX$$ moottorit välillä 0–3. Tässä on taulukko, joka näyttää kullekin liamayksikkötyypille määritetyn liiman järjestyksen.

|                           |                               |            |     |      |       |
| ------------------------- | ----------------------------- | ---------- | --- | ---- | ----- |
|                           | Fyysiset yksiköt (pt, mm, in) | fi         | fil | fill | filll |
| $$\text{Lua}\mathrm\TeX$$ | 0                             | 1          | 2   | 3    | 4     |
| Muut moottorit            | 0                             | Ei sovellu | 1   | 2    | 3     |

### Huomautuksia aiheesta $$\text{Lua}\mathrm\TeX$$: Miksi on ylimääräinen äärettömyys?

$$\text{Lua}\mathrm\TeX$$ on johdettu useista projekteista ja koodikirjastoista, mukaan lukien yksi nimeltä [Omega](https://en.wikipedia.org/wiki/Omega_\(TeX\)). $$\text{Lua}\mathrm\TeX$$ sisällytti tiettyjä Omegasta peräisin olevia koodin osia, ja siihen kuuluu uusi äärettömän liiman tyyppi nimeltä $$\text{fi}$$. Omegamanuaalista:

> “Uusi äärettömyyden taso $$\text{fi}$$ on lisätty. Se on pienempi kuin $$\text{fil}$$ mutta suurempi kuin mikään äärellinen suure. Sen alkuperäinen tarkoitus oli kirjainten välinen venytys: joko mustien alueiden täyttäminen, kuten tehdään kalligrafisissa kirjoitusjärjestelmissä, kuten arabiassa; tai korostus, kuten venäjässä; kaikki tämä ilman, että olemassa olevia makropaketteja tarvitsisi kirjoittaa uudelleen. Siksi on uusi avainsana, $$\text{fi}$$, ja kaksi uutta primitiiviä, `\hfi` ja `\vfi`.”

## Takaisin haasteeseemme

Knuthin mallia noudattaen määritellään kaksi suuretta:

* laatikon haluttu leveys: $$\mathrm{W}\_{\mathrm{D}}$$—kuinka suuren haluamme sen olevan;
* laatikon luonnollinen leveys: $$\mathrm{W}\_{\mathrm{N}}$$—sen muodostavien osien käyttämä kokonaisleveys ennen kuin mitään liimoja venytetään tai kutistetaan.

### Laatikon luonnollinen leveys

Laatikon luonnollinen leveys on kaikkien laatikon osien kokonaisleveys: merkkien, kernien, sisäkkäisten laatikoiden ja kaiken liiman. Laatikon sisällä olevan liiman luonnollinen leveys jättää huomiotta liiman venytyksen tai kutistuksen: eli sen koon ennen kuin mitään venytystä tai kutistusta tapahtuu.

Tässä on jälleen laatikko, jota tutkimme:

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

On selvää, että haluamme laatikon olevan 100pt leveä, joten $$\mathrm{W}*{\mathrm{D}}=100\mathrm{pt}$$ mutta entä sen luonnollinen leveys, $$\mathrm{W}*{\mathrm{N}}$$? Luonnollisen leveyden laskemiseksi tarvitsemme selvästi neljän merkin (A, B, C ja D) leveydet sekä neljän liiman luonnolliset leveydet.

$$\eqalign{\mathrm{W}\_{\mathrm{N}} &= &\text{width(A)} + \text{width(B)} + \text{width(C)} + \text{width(D)} \ & &+ \text{width}(\verb\*\hskip 4pt plus3pt minus 2pt\*)\ & &+\text{width}(\verb\*\hskip 0pt plus 2fil\*)\ & &+\text{width}(\verb\*\hskip 0pt plus 2fill)*\ & &+\text{width}(\verb*\hskip 0pt plus 3fill\*)\ }$$

Missä $$\text{width}$$ on vain merkintätapa, jolla osoitetaan kohteen luonnollinen leveys. Voimme saada neljän merkin (A, B, C ja D) luonnolliset leveydet solmukaaviostamme:

![solmukaavio](/files/6e40ced3830a00a030eae0b3217f91043cfba167)

Yllä olevasta solmukaaviosta näemme, että:

$$\eqalign{ \text{width(A)} &= 7.50002\text{pt}\ \text{width(B)} &= 7.08336\text{pt}\ \text{width(C)} &= 7.22223\text{pt}\ \text{width(D)} &= 7.6389\text{pt}\ }$$

Nyt tarvitsemme vain liimojemme luonnolliset leveydet, jotka saadaan helposti jättämällä venytys- ja kutistumiskomponentit huomiotta:

$$\eqalign{ &\text{width}(\verb\*\hskip 4pt plus3pt minus 2pt\*) & = 4\text{pt}\ &\text{width}(\verb\*\hskip 0pt plus 2fil\*) &=0\text{pt}\ &\text{width}(\verb\*\hskip 0pt plus 2fill)*&=0\text{pt}\ &\text{width}(\verb*\hskip 0pt plus 3fill\*)&=0\text{pt}\ }$$

Siis:

$$\eqalign{ \mathrm{W}\_{\mathrm{N}} & = \text{widths of characters} + \text{width of all glues}\ &= 7.50002\text{pt}+ 7.08336\text{pt} + 7.22223\text{pt} + 7.6389\text{pt} + 4\text{pt}\space \text{(from }\verb\*\hskip\*\text{)}\ &=33.4445\text{pt}\ }$$

Meillä on nyt kaksi keskeistä tietoa:

$$\eqalign{ \mathrm{W}*{\mathrm{D}} & = 100\text{pt}\ \mathrm{W}*{\mathrm{N}} & = 33.4445\text{pt}\ }$$

On selvää, $$\mathrm{W}*{\mathrm{D}} > \mathrm{W}*{\mathrm{N}}$$ ja erotus on $$(100-33.4445)\text{pt}=66.5555\text{pt}$$; tämä ylimääräinen tila on täytettävä venyttämällä liimoja—mutta mitkä niistä ja kuinka paljon?

### Kummalla on eniten venyvyyttä?

Knuthin menetelmää noudattaen (sivulla 77 teoksessa $$\text{The } \mathrm \TeX \text{book}$$), mutta huomioiden lisä-äärettömyystyypin ($$\text{fi}$$) jonka tarjoaa $$\text{Lua}\mathrm \TeX$$, seuraava askel on kirjoittaa ylös laatikon *kokonais* venyvyys muodossa:

$$\text{total stretch} = y\_{0}+ y\_{1}\text{fi} +y\_{2}\text{fil} +y\_{3}\text{fill} +y\_{4}\text{filll}$$

Ensinnäkin, jos kirjoitamme ylös $$\text{total glue}$$:

$$\text{total glue } = (\verb*4pt plus3pt minus 2pt*) + (\verb*0pt plus 2fil*) + (\verb*0pt plus 2fill*) + (\verb*0pt plus 3fill*)$$

voimme sitten nähdä, että $$\text{total stretch}$$ on:

$$\eqalign{ \text{total stretch} & = 3\text{pt}+ 0\text{fi} + (2\text{fil}) + (2\text{fill} + 3\text{fill}) + 0\text{filll}\ &=3\text{pt}+ 0\text{fi} + 2\text{fil} + 5\text{fill} + 0\text{filll}\ }$$

Verrattuna tähän $$\text{total stretch} = y\_{0}+ y\_{1}\text{fi} +y\_{2}\text{fil} +y\_{3}\text{fill} +y\_{4}\text{filll}\space$$näemme, että:

$$\eqalign{ y\_0 &=3\text{pt}\ y\_1 &=0\ y\_2 &=2\ y\_3&=5\ y\_4&=0\ }$$

$$\mathrm\TeX$$ seuraavaksi “kysyy itseltään”: tarkastellen $$\text{total stretch}$$, mikä on korkein äärettömyyden taso, jolla on nollasta poikkeava arvo? Laatikkomme $$\text{total stretch}$$ tutkittaessa on selvää, että “äärettömin” nollasta poikkeava venytyskomponentti on $$\text{fill}$$ ja meillä on $$y\_3=5$$ yksikköä siitä: kyse on liimoista, joilla on $$\text{fill}$$ venytyskomponentti, joka tuottaa kaiken venytyksen. Alaviite 3 kohdassa $$y\_3$$ kertoo meille `glue_order` liiman, jota käytetään—tässä tapauksessa venyttämiseen. Nyt, jos tarkastelemme tämän solmukuvaajan “metadata”-osiota `\hbox` voimme nyt ymmärtää vielä kaksi “metadata-arvoa” (käsittelemme `glue_set` seuraavassa osiossa)

![metadata](/files/81ff2ed40d43322344e6e5333b22e645fc0d5fd7)

* `glue_sign`: kertoo, onko liima asetettu luonnolliseen pituuteensa, venytetty vai kutistettu:
* 0=asetettu luonnolliseen leveyteen
* 1=venytys
* 2=kutistus

Esimerkissämme `glue_sign` on arvon `1`, mikä tarkoittaa, että osallistuvia liimoja venytetään.

* `glue_order` kertoo, mikä “äärettömyys” on kyseessä; kohdassa $$\text{Lua}\mathrm \TeX$$ arvo 3 kertoo, että liimat, joilla on $$\text{fill}$$ komponentti, osallistuvat liimalaskelmiin—meidän tapauksessamme ne venyvät.

Kaikki liima, jolla ei ole venytyskomponenttia määriteltynä yksiköissä $$\text{fill}$$ on **asetettu luonnolliseen pituuteensa**: eli se ei (meidän tapauksessamme) veny lainkaan.

### Kuinka paljon venytetään tai kutistetaan: glue\_setin laskeminen

Yhteenvetona siitä, missä olemme ja mitä tiedämme:

1. laatikon haluttu leveys: $$\mathrm{W}\_{\mathrm{D}} = 100\text{pt}$$;
2. laatikon luonnollinen leveys: $$\mathrm{W}\_{\mathrm{N}} = 33.4445\text{pt}$$;
3. liiman on venyttävä, mutta vain liimat, joilla on $$\text{fill}$$ venytyskomponentti, tekevät tämän venytyksen;
4. meillä on yhteensä $$(2+3)=5$$ yksikköä $$\text{fill}$$ käytettävissä.

Seuraava kysymys on: kuinka paljon nuo liimat itse asiassa venyvät? Tässä tulee *liiman asetuskerroin*—johon viitataan nimellä `glue_set` solmukaaviossamme. Mitä $$\mathrm \TeX$$ tekee, on selvittää, kuinka paljon tilaa on täytettävä, ja jakaa sitten tämän tilan sopivien liimojen kesken niiden venytyskomponentin suuruuden suhteessa. Jos katsot takaisin varsinaiseen `\hbox` näet täsmälleen, millä liimoilla on venytyskomponentit, jotka sisältävät yksiköitä $$\text{fill}$$:

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

Se $$\textit{glue set ratio }(\text{or } \verb*glue\_set*)$$ lasketaan seuraavasti:

$$\eqalign{ \text{glue set ratio}\space (\verb*glue\_set*) = & {\text{amount to stretch}}\over{\text{value of highest infinity}}\ =& {\mathrm{W}*{\mathrm{D}}-\mathrm{W}*{\mathrm{N}}}\over{y\_3}\ =& {(100-33.4445)}\over{5}\ =& {66.5555}\over{5}\ =& 13.3111\space (\text{to 4 decimal places})\ }$$

Ja nyt viimeinen vaihe $$\mathrm\TeX$$ algoritmissa suoritetaan:

1. jokaiselle liima-alkiolle, jonka venytyskomponentti vastaa haluttua `glue_order` (3 meidän tapauksessamme) kyseisen liiman pituudeksi tulee:

$$\text{stretched value} = \text{natural length} + (\verb*glue\_set* \times \text{value of stretch component})$$

3. kaikki muut liimat asetetaan luonnolliseen pituuteensa—eli ne eivät veny lainkaan.

Tarkastellaan laatikkomme liimoja:

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

voimme käydä ne läpi laskeaksemme niiden lopulliset arvot:

1. **A:n ja B:n välillä**: `\hskip 4pt plus3pt minus 2pt`. Venytyskomponentti on `3pt`, joka on järjestystä `0`. Vaadittu `glue_order` on `3`: venytyskomponentti jätetään huomiotta, ja tämä liima ottaa luonnolliseksi leveydekseen `4pt`.
2. **B:n ja C:n välillä**: `\hskip 0pt plus 2fil`. Venytyskomponentti on `2fil`, joka on järjestystä `2`. Vaadittu `glue_order` on `3`: venytyskomponentti jätetään huomiotta, ja tämä liima ottaa luonnolliseksi leveydekseen `0pt`.
3. **C:n ja D:n välillä**: `\hskip 0pt plus 2fill`. Venytyskomponentti on `2fill`, joka on järjestystä `3` ja vastaa vaadittua `glue_order` kohteelle `3`. Tämä liima venytetään arvoon: $$\eqalign{ \text{stretched value}\space = & \text{natural width} + (\verb*glue\_set* \times \text{value of stretch component})\ = & 0\text{pt} + 13.3111 \times 2 \ = & 26.6222\text{pt}\ }$$5. **D:n ja laatikon lopun välillä**: `\hskip 0pt plus 3fill`. Venytyskomponentti on `3fill`, joka on järjestystä `3` ja vastaa vaadittua `glue_order` kohteelle `3`. Tämä liima venytetään arvoon: $$\eqalign{ \text{stretched value}\space = &\text{natural width} + (\verb*glue\_set* \times \text{value of stretch component})\ =& 0\text{pt} + 13.3111 \times 3 \ = &39.9333\text{pt}\ }$$

## Ja lopuksi: kokonaisleveyden tarkistaminen

Prosessia, jossa lasketaan liiman todellisesti käyttämä tila, kutsutaan *liiman asettamiseksi* joten voimme nyt tarkistaa, olemmeko täyttäneet laatikon haluttuun leveyteen, $$(\mathrm{W}\_{\mathrm{D}} = \text{100pt})$$:

$$\eqalign{ \mathrm{W}\_{\mathrm{D}} & = \text{width of all characters} + \text{width of all }\textbf{set}\text{ glue values}\ & = \text{A:7.50002pt} + \text{B:7.08336pt} + \text{C:7.22223pt} + \text{D:7.6389pt}\ & + \text{4pt} + \text{0pt} + \text{26.6222pt} + \text{39.9333pt}\ & = \text{100.00pt} }$$

Tiedämme nyt kaikkien liimojen leveydet ja voimme valmistella grafiikan, joka vastaa tämän artikkelin alussa esitettyyn kysymykseen: tässä ovat liiman leveydet merkkien välissä meidän `\hbox`:

![liima](/files/b1bed7035f8fd7193e9033ecc01bcc7aee5303c3)


---

# 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/fi/syvalliset-artikkelit/24-how-tex-calculates-glue-settings-in-an-hbox.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.
