> 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/03-a-six-part-article-series-on-expandafter-tex-tokens-and-expansion.md).

# Kuusiosainen artikkelisarja \expandafterista, TeX-tokeneista ja laajentamisesta

## Yleiskatsaus

TeXin primitiivi `\expandafter` on monipuolinen komento, jota LaTeX/TeX-ohjelmoijat käyttävät monimutkaisten makrojen luomiseen — kuten LaTeX-pakettien tarjoamat komennot (makrot). Pintapuolisesti, `\expandafter` on helppokäyttöinen, mutta tuo yksinkertaisuuden naamio katoaa nopeasti, kun kohtaat monimutkaisempia rakenteita, kuten useita peräkkäisiä `\expandafter` komentoja, joita käytetään kaikenlaiseen “tokenien jongleeraamiseen” `...\expandafter\expandafter\expandafter...`.

Tällä artikkelisarjalla on kunnianhimoinen tavoite: selittää *miten* sivustolta `\expandafter` komento ja TeX:n laajennus oikeasti toimivat — perusperiaatteista aina niiden prosessien tarkasteluun, jotka tapahtuvat syvällä TeX-moottoriohjelmiston sisällä. Lukijat voivat hypätä suoraan [artikkeleihin](#accessing-articles-the-navigation-bar) tai lukea [johdannossa](#introduction-and-who-is-this-series-for) sekä sarjan syyn ja perustelut.

## Artikkeleihin siirtyminen: navigointipalkki

Kunkin artikkelin tekstin edessä ja jälkeen on seuraava navigointipalkki, jotta voit siirtyä nopeasti toiseen sarjan artikkeliin:

[Osa 1](/latex/fi/syvalliset-artikkelit/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md) [Osa 2](/latex/fi/syvalliset-artikkelit/22-how-does-expandafter-work-the-meaning-of-expansion.md) [Osa 3](/latex/fi/syvalliset-artikkelit/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md) [Osa 4](/latex/fi/syvalliset-artikkelit/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md) [Osa 5](/latex/fi/syvalliset-artikkelit/17-how-does-expandafter-work-a-detailed-macro-case-study.md) [Osa 6](/latex/fi/syvalliset-artikkelit/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)

Tässä ovat linkit sarjan kuuteen artikkeliin:

1. [Johdatus TeX-tokenien maailmaan](/latex/fi/syvalliset-artikkelit/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md)
2. [Laajennuksen merkitys](/latex/fi/syvalliset-artikkelit/22-how-does-expandafter-work-the-meaning-of-expansion.md)
3. [TeX käyttää tilapäisiä tokenilistoja](/latex/fi/syvalliset-artikkelit/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md)
4. [Perusperiaatteista TeXin lähdekoodin tarkasteluun](/latex/fi/syvalliset-artikkelit/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md)
5. [Yksityiskohtainen makrotapaustutkimus](/latex/fi/syvalliset-artikkelit/17-how-does-expandafter-work-a-detailed-macro-case-study.md)
6. [Yksityiskohtainen tutkimus peräkkäisistä `\expandafter` komennot](/latex/fi/syvalliset-artikkelit/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)

## Johdanto ja kenelle tämä sarja on tarkoitettu?

### \expandafter: toiminnan perusperiaatteet

\expandafter-komennon tarkoitus on pakottaa syötteessä olevan tokenin ennenaikainen laajeneminen: kun syötteessä on kaksi peräkkäistä tokenia, $$\mathrm{T\_1}$$ ja $$\mathrm{T\_2}$$, `\expandafter` tallentaa tokenin $$\mathrm{T\_1}$$, laajentaa tokenin $$\mathrm{T\_2}$$ ja asettaa tokenin $$\mathrm{T\_1}$$ takaisin ... laajenemisen eteen $$\mathrm{T\_2}$$:

$$\verb\*\expandafter\*\ \mathrm{T\_1}\mathrm{T\_2} \rightarrow \mathrm{T\_1}\text{\<expansion of }\mathrm{T\_2}\text{>}$$

Seuraten `\expandafter`’n käyttäytymisen vakiokuvauksen mukaan havaitsimme, että se “tallentaa tokenin $$\mathrm{T\_1}$$”, pakottaa tokenin “laajenemisen $$\mathrm{T\_2}$$ (ennen kuin TeX normaalisti tekisi niin) ja sitten asettaa tokenin $$\mathrm{T\_1}$$ “takaisin syötteeseen”, jotta TeX lukisi sen uudelleen. Tämän artikkelin kirjoittaja muistaa olleensa hämmentynyt joistakin `\expandafter`’n “tokenien jongleeraus”-käyttäytymisen piirteistä; erityisesti:

* Mitä tarkoittaa “tokenin tallentaminen” tai “tokenin palauttaminen syötteeseen” — minne nämä tallennetut tokenit “menevät” ja miten TeX lukee ne uudelleen?
* Miltä laajeneminen “näyttää” tai mitä se oikeastaan tarkoittaa?
* Miten TeX käsittelee useita peräkkäisiä `\expandafter` komentoja — miten se *oikeasti* toimii?

### Artikkelisarjan tavoitteet

Tämä sarja pyrkii vastaamaan yllä esitettyihin kysymyksiin dokumentoimalla TeXin sisäiseen toimintaan kohdistuneen tutkimuksen tulokset. Overleaf rakensi räätälöidyn version yhdestä TeX-moottorista ja käytti [Eclipse IDE:tä](https://www.eclipse.org/ide/) sitä tarkkaillakseen TeXin lähdekoodin toimintaa sen käsitellessä `.tex` tiedostoa, joka sisälsi esimerkkikäyttöjä `\expandafter`.

Jaamme tuon tutkimuksen tulokset tarkastellaksemme:

* TeX-tokenien todellisen luonteen/merkityksen;
* TeXin tilapäisten tokenilistojen tuottamisen/käytön;
* mitä “laajennus” todella tarkoittaa.

Tutkimalla näitä aiheita kokoamme kokonaiskuvan selittääksemme *miten* `\expandafter` suorittaa “tokenien jongleeraus”-käyttäytymisensä. Tämä artikkelisarja on kirjoitettu kaikille, joita kiinnostaa kehittää näistä aiheista ymmärrystä: kurkistaa syvemmälle itse TeXiin ja tarkastella niitä TeXin sisäisen toiminnan osia, jotka mahdollistavat `\expandafter` tehdä taikojaan.

TeXistä ja TeXiin liittyvistä käsitteistä/periaatteista kirjoittaminen on haastavaa, koska TeX on poikkeuksellisen monimutkainen ohjelmisto — sen ladottu lähdekoodi ulottuu moniin satoihin sivuihin. Esimerkiksi katso tämä [Overleaf-projektin](https://www.overleaf.com/latex/examples/typeset-the-source-code-documentation-for-tex-e-tex-or-pdftex/qkgfgyspnhcv) joka oletusarvoisesti latoo lähdekoodin $$\mathrm{\varepsilon}\text{-}\mathrm{\TeX}$$: ladottu PDF-tiedosto sisältää yli 600 sivua.

Sisäisesti TeX on monimutkainen toisiinsa liittyvien toimintojen ja prosessien verkko, joka aiheuttaa haasteita, kun yritetään käsitellä sen käyttäytymisen yksittäisiä piirteitä: kun erotellaan tietty “osa”, kuten `\expandafter`, ja yrittää selittää sitä ilman, että täytyy jatkuvasti viitata TeX-ohjelmiston muihin puoliin. Jo luonteensa vuoksi `\expandafter` komento kytkeytyy TeXin *laajennus*—prosessiin, joka on monille meistä hämärä ja hieman vaikeasti täysin ymmärrettävä käsite. Laajennus on kuitenkin todella perustavanlaatuinen osa TeXin käyttäytymistä, kietoutuen läpi TeXin sisäisen toiminnan ja tapahtuessaan syvällä itse TeX-ohjelmistossa. Tässä artikkelisarjassa tarkastelemme laajennuksen todellista merkitystä aloittaen kokoamalla yhteen siihen liittyviä periaatteita ja käyttäytymismalleja, jotka riittävät muodostamaan perustason ymmärryksen laajennuksesta. Näiden perustojen varaan rakentaen päätämme tekemällä “syväluotauksen” itse TeXiin ja tutkimalla varsinaista lähdekoodia, joka toteuttaa TeXin laajennusmekanismin.

## Yhteenvetona

Näissä artikkeleissa olemme pyrkineet tarjoamaan sisältöä, josta on hyötyä/arvoa tai joka kiinnostaa mahdollisimman montaa lukijaa: pyrkien tasapainottamaan ytimekkyyden ja väistämättömän yksityiskohtaisuuden samalla kun olemme yrittäneet olla vaarantamatta lukijan kärsivällisyyttä tarjoamalla liikaa tai liian vähän taustatietoa. Toivomme, että olemme osaltamme tuoneet jotain hyödyllistä/arvokasta TeX-kirjallisuuteen, jota TeX-yhteisön nykyiset ja ehkä tulevat jäsenet lukevat mielellään.

Mukavia $$\mathrm{\TeX}\text{ing!}$$, Graham Douglasilta ja Overleafin tiimiltä.


---

# 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/03-a-six-part-article-series-on-expandafter-tex-tokens-and-expansion.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.
