> 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/lisaa-aiheita/01-a-six-part-series-how-do-tex-macros-actually-work.md).

# Kuusiosainen sarja: miten TeX-makrot oikeastaan toimivat?

## Tietoa tästä sarjasta

Tällä artikkelisarjalla on kunnianhimoinen tavoite: selittää vaihe vaiheelta, *miten* miten TeX-makrot, kuten LaTeX-komennot, todella toimivat—tutkimalla prosesseja, jotka tapahtuvat TeX-moottoriohjelmiston sisällä. Se pyrkii kertomaan TeXin käsittelykäyttäytymisen tarinan:

* syöttömerkkien lukemista ja luokkakoodien käyttöä;
* merkki- ja komentotokenien muodostamista—ja TeX:n käyttämiä kaavoja;
* miten TeX tunnistaa ja sitten käsittelee TeX-komentoja;
* makromääritelmien ja makroargumenttien tallentamisen sisäisiä yksityiskohtia tokenilistoina—käyttäen sisäisestä TeX-datasta tuotettuja grafiikoita;
* ja päättyy siihen, että tutkitaan, mitä makrojen laajeneminen *todellisuudessa* tarkoittaa—käyttäen todellista dataa TeX-moottorin sisältä.

Koska TeX-moottorit ovat kuitenkin niin monimutkaisia ohjelmistoja, emme voi toivoa käsittelevämme kaikkea, mutta olemme pyrkineet käsittelemään TeXin makrokäsittelyominaisuuksien tärkeimmät, ydinpiirteet.

#### Navigointipalkki

Jokaisessa artikkelissa on seuraava navigointipalkki ennen tekstiä ja sen jälkeen, jotta voit hypätä nopeasti toiseen sarjan artikkeliin:

[Osa 1](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_1?preview=true) [Osa 2](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_2?preview=true) [Osa 3](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_3?preview=true) [Osa 4](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_4?preview=true) [Osa 5](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_5?preview=true) [Osa 6](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_6?preview=true)

### Osa 1: Luokkakoodit

Tässä artikkelissa tarkastellaan TeXin luokkakoodi-käsitteen taustalla olevaa logiikkaa: mitä ne ovat ja miten TeX käyttää niitä suodattaakseen syötteensä ladottavaksi sisällöksi ja suoritettaviksi komennoiksi.

### Osa 2: Syötteen lukeminen TeXin ”silmin”

Sarjan grafiikoiden avulla käytämme aikaa kestänyttä analogiaa siitä, että TeX:illä on ”silmät”, joilla se lukee (skannaa) syötteensä. Tarkastelemme esimerkkejä siitä, miten TeX käyttää luokkakoodeja luodakseen merkkitokeneita ja miten TeX tunnistaa ja käsittelee komentoja käyttämällä luokkakoodia 0 (”escape-merkki”).

### Osa 3: Syöteteksistä komennoiksi

Tässä artikkelissa tarkastellaan perusteellisesti, miten TeX tunnistaa ja käsittelee syötteessä havaitut komennot. Tutkimme, miten TeX tallentaa ja hakee tietoa komennoista: komentokoodeista, komentomuutteista, ja käymme läpi muutamia sisäisiä muuttujia, joita TeX käyttää syötteestä luetuista kohteista tallennettavan tiedon säilyttämiseen. Osa artikkelista on melko matalan tason aineistoa, joka voidaan ohittaa ensimmäisellä lukukerralla.

### Osa 4: Makron rakenne

Esittelemme ja käytämme seuraavaa ”viitekehystä” makrojen rakenteen kuvaamiseen:

```
<TeX-makron primitiivi><makron nimi><parametriteksti>{<korvausteksti>}
```

Tarkastelemme sitten useita esimerkkejä osoittaaksemme makron `<parametriteksti>` roolin ja tarkoituksen ”tokeneista koostuvana mallipohjana”, joka voidaan rakentaa käyttämällä tokeneita, jotka toimivat *erottimet*.

### Osa 5: Tokenilistat ja TeXin sisäinen makrotallennus

Tässä artikkelissa tarkastellaan yksityiskohtaisesti, miten TeX käyttää tokenilistoja makromääritelmien tallentamiseen. Laajojen kaavioiden avulla, jotka on tuotettu erityisesti muokatulla TeX-versiolla, tutkimme erikoistuneita tokeneita, joita TeX käyttää käyttäjän makroargumenttien tunnistamiseen ja käsittelyyn.

### Osa 6: Makrojen laajeneminen ja käsittely

Osassa 6 käytämme yksityiskohtaisia grafiikoita selittämään ja tutkimaan makrojen laajenemisen tarkkaa merkitystä ja TeXin makroargumenttien tokenisoinnin seurauksia ennen niiden syöttämistä makron .

## Lyhyt huomautus: Käytämme ”TeX”:iä, emme LaTeXia

Kuten artikkelissa käsitellään [Mitä nimi kertoo: opas TeXin moniin muotoihin](/latex/fi/syvalliset-artikkelit/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) TeX:n, LaTeXin ja niiden johdannaisten viittaamiseen/kuvaamiseen käytetään laajaa valikoimaa termejä. Siksi on syytä lyhyesti täsmentää ”TeX”-sanan käyttö/merkitys tämän sarjan yhteydessä.

”TeX” on hieman hämmentävästi sekä suoritettavan ohjelman nimi että ladontakielen nimi. Näiden kahden erottamiseksi termi *TeX-moottori* käytetään erottamaan suoritettava TeX-ohjelma ja ladontakieli. Jotkin tässä sarjassa käytetyistä erityisistä tiedoista, informaatioista ja yksityiskohdista perustuvat Knuthin alkuperäisen TeX-ohjelmiston lähdekoodin yksityiskohtaiseen tarkasteluun, mutta kuvatut periaatteet ovat yhteisiä kaikille TeX-moottoreille. Siksi keskustelussamme ”TeX”:llä pitäisi ymmärtää tarkoitettavan jotakin suoritettavista TeX-moottoreista—kuten Knuthin alkuperäistä TeXiä, pdfTeX:iä, XeTeXiä tai LuaTeX:iä.

Artikkeleissa käytämme TeXin primitiivikomentoa `\def` makroesimerkkien määrittelemiseen: emme käytä LaTeX-komentoa `\newcommand` joka on lähes varmasti useimmille Overleafin käyttäjille tutumpi. Tähän on erittäin hyvä syy: tavoitteemme on ymmärtää TeXin makrokäyttäytymisen taustalla olevat perusperiaatteet, mutta sitä varten meidän on käytettävä TeX-ohjelmistoon sisäänrakennettuja ydin-komentoja (primitiivejä). LaTeX-komennot, kuten `\newcommand`, ovat itse makroja: komentoja, joilla on tietty ohjelmoitu toiminta ja jotka lopulta rakentuvat matalamman tason TeX-primitiivikomentojen kerroksista. Ymmärtääksemme paremmin TeXin peruskäyttäytymistä meidän on käytettävä TeX-primitiivejä, ei LaTeX-makroja.

## Esimerkit ja grafiikat

Sen sijaan, että luottaisimme pelkästään esimerkkimakrojen kokoelmaan, joka on suunniteltu havainnollistamaan TeXin erilaisia ominaisuuksia, reunaehtoja ja käyttäytymistä, käytämme myös laajaa grafiikkavalikoimaa tarkastellaksemme TeXiä sisältä ja nähdäksemme *miten* ja *miksi* miksi sen makrokäsittely toimii niin kuin toimii. Monet grafiikoista (tokenilistat/solmukaaviot) on valmistettu käyttämällä erityisesti muokattua versiota Knuthin alkuperäisestä TeXistä.

Overleaf mukautti Knuthin TeXin lisäkoodilla (C:llä kirjoitetulla), joka ”kytkeytyy” TeXin makrokäsittelyyn ja tutkii dataa sekä tietorakenteita, joihin käyttäjillä ei normaalisti ole pääsyä. Aina kun makroa kutsutaan, muokattu TeX-moottori tuottaa lisätulostiedostoja, jotka sisältävät dataa muodossa, jota voidaan käsitellä käyttäen [Graphviz](https://www.graphviz.org/), avoimen lähdekoodin graafien visualisointiohjelmaa. Lopputuloksena on grafiikkaa (solmulistakaavioita), jotka näyttävät täsmälleen, miten TeX tallentaa makron määritelmän, sekä graafinen esitys kaikista käyttäjän makron kutsun yhteydessä antamista argumenteista.

Välttämättömyyden vuoksi tämän sarjan tavoitteet edellyttävät laajan aihekirjon käsittelyä; monet niistä ovat melko matalan tason asioita ja voivat aluksi tuntua hyvin kaukaisilta asiakirjojesi ladontatehtävästä. Toivottavasti syväsukelluksen jälkeen saat perustan paremman ymmärryksen rakentamiseen, mikä lopulta säästää paljon aikaa ja ehkä myös vähentää turhautumisen määrää. Toivomme myös, että tätä sarjaa seuraavat erityisesti tuotetut grafiikat tarjoavat ainutlaatuisen arvokasta näkemystä ja auttavat sekä tukevat kaikkia lukijoita heidän pyrkimyksessään ymmärtää TeX-makroja paremmin.

## Overleafin muokattu TeX-versio

Video antaa lyhyen esittelyn Overleafin muokatusta TeX-versiosta, joka on sovitettu tuottamaan Graphviz-solmukaavioita (`.gv` tiedostoja)—mikään muu TeXin käyttäytymisen osa ei muutu näiden muutosten vuoksi.  `.gv` Tiedostot sisältävät esityksiä TeXin tokenilistoista, joita käytetään makromääritelmien ja makroargumenttien tallentamiseen. Graphviz-visualisointi viedään SVG-muotoon, joka sitten tuodaan [Inkscape](https://inkscape.org/) lisämerkintää varten ennen kuin grafiikka liitetään artikkeliin.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/40EAwKxZnNwgxwe9SpAwNY/5bce5de21509f3324bc50527ec6815e7/texdemo.mp4>" %}


---

# 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/lisaa-aiheita/01-a-six-part-series-how-do-tex-macros-actually-work.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.
