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

# En serie i sex delar: Hur fungerar TeX-makron egentligen?

## Om den här serien

Den här artikelserien har ett ambitiöst mål: att steg för steg förklara, *hur* hur TeX-makron, såsom LaTeX-kommandon, faktiskt fungerar—genom att utforska processer som sker inne i TeX-motorns programvara. Den försöker berätta historien om TeX:s bearbetningsbeteende:

* att läsa inmatade tecken och använda kategori-koder;
* skapandet av tecken- och kommandotoken—och de formler TeX använder;
* hur TeX identifierar och sedan bearbetar TeX-kommandon;
* de interna detaljerna kring hur makrodefinitioner och makroargument lagras som tokenlistor—med hjälp av grafik som genereras från interna TeX-data;
* och avslutas med att utforska vad makroexpansion *faktiskt* betyder—med hjälp av verklig data inifrån en TeX-motor.

Men eftersom TeX-motorer är så komplexa programvarusystem kan vi inte hoppas på att täcka allt, utan vi har försökt ta upp de viktigaste, grundläggande funktionerna i TeX:s makrobearbetningsförmåga.

#### Navigeringsfält

Varje artikel har följande navigeringsfält före och efter texten så att du snabbt kan hoppa till en annan artikel i serien:

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

### Del 1: Kategori-koder

Den här artikeln undersöker resonemanget bakom TeX:s begrepp kategori-koder: vad de är och hur TeX använder dem för att filtrera sin inmatning till innehåll för sättning och kommandon som ska utföras.

### Del 2: Att läsa inmatning genom TeX:s ”ögon”

Genom en serie grafikbilder använder vi den beprövade analogin att TeX har ”ögon” med vilka det läser (skannar) sin inmatning. Vi utforskar exempel på TeX:s användning av kategori-koder för att skapa teckentoken och hur TeX känner igen och bearbetar kommandon genom att använda kategori-kod 0 (”escape-tecken”).

### Del 3: Från inmatad text till kommandon

Den här artikeln går på djupet med hur TeX känner igen och bearbetar kommandon som upptäcks i inmatningen. Vi utforskar hur TeX lagrar och hämtar information om kommandon: kommandokoder, kommandomodifierare och granskar några interna variabler som TeX använder för att lagra information om saker som lästs in från inmatningen. En del av artikeln är ganska lågnivåmaterial som kan hoppas över vid en första läsning.

### Del 4: Strukturen hos ett makro

Vi introducerar och använder följande ”ramverk” för att beskriva makrons struktur:

```
<TeX macro primitive><macro name><parameter text>{<replacement text>}
```

Vi utforskar sedan ett antal exempel för att demonstrera rollen och syftet med ett makros `<parametertext>` som en ”tokentemplate” som kan konstrueras genom att använda token som fungerar som *avgränsare*.

### Del 5: Tokenlistor och TeX:s interna makrolagring

Den här artikeln utforskar i detalj hur TeX använder tokenlistor för att lagra makrodefinitioner. Med hjälp av omfattande diagram som genererats med en särskilt modifierad version av TeX utforskar vi de specialiserade token som TeX använder för att identifiera och bearbeta en användares makroargument.

### Del 6: Makroexpansion och bearbetning

I del 6 använder vi några detaljerade grafikbilder för att förklara och utforska den exakta betydelsen av makroexpansion och konsekvenserna av TeX:s tokenisering av makroargument innan de matas in i ett makros .

## En kort notis: Att använda ”TeX” och inte LaTeX

Som diskuterats i artikeln [Vad ligger i ett namn: En guide till de många smakerna av TeX](/latex/sv/fordjupade-artiklar/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) används ett brett spektrum av termer för att hänvisa till/beskriva TeX, LaTeX och deras derivat. Därför är det värt att kort klargöra vår användning/betydelse av ”TeX” i kontexten av den här serien.

”TeX” är, något förvirrande, både namnet på ett körbart program och namnet på ett sättningsspråk. För att skilja mellan de två används termen *TeX-motor* för att skilja mellan ett körbart TeX-program och sättningsspråket. En del av de specifika data, den information och de detaljer som används i den här serien är hämtade från en noggrann genomgång av källkoden till Knuths ursprungliga TeX-programvara, men de principer som beskrivs är gemensamma för alla TeX-motorer. Så genom hela vår diskussion bör användningen av ”TeX” förstås som en av de körbara TeX-motorerna—såsom Knuths ursprungliga TeX, pdfTeX, XeTeX eller LuaTeX.

I artiklarna använder vi TeX:s primitiva kommando `\def` för att definiera våra makroexempel: vi använder inte LaTeX-kommandot `\\newcommand` som nästan säkert är mer bekant för de flesta Overleaf-användare. Det finns en mycket god anledning till detta: vårt mål är att förstå de grundläggande principerna bakom TeX:s makrobeteende, men för att göra det behöver vi använda de kärnkommandon (primitiver) som är inbyggda i TeX-programvaran. LaTeX-kommandon, såsom `\\newcommand`, är själva makron: kommandon med ett specifikt programmerat beteende och som i slutändan är konstruerade av lager av TeX:s kommandon på lägre nivå, primitiva kommandon. För att bättre förstå TeX:s grundläggande beteende måste vi använda TeX-primitiver, inte LaTeX-makron.

## Exempel och grafik

I stället för att enbart förlita oss på en uppsättning exempelmakron utformade för att demonstrera olika funktioner, specialfall och beteenden hos TeX, använder vi också ett omfattande urval grafik för att titta in i TeX självt och se *hur* och *varför* hur dess makrobearbetning fungerar som den gör. Många av grafikbilderna (tokenlistor/noddiagram) har tagits fram med hjälp av en särskilt modifierad version av Knuths ursprungliga TeX.

Overleaf anpassade Knuths TeX med extra kod (skriven i C) som ”kopplar in sig” på TeX:s makrobearbetning och utforskar data och datastrukturer som normalt är otillgängliga för användare. Varje gång ett makro anropas genererar den modifierade TeX-motorn ytterligare utdatafiler som innehåller data i ett format som kan bearbetas med [Graphviz](https://www.graphviz.org/), ett öppen källkod-program för grafvisualisering. Slutresultatet är grafik (nodlistsdiagram) som visar exakt hur TeX lagrar ett makros definition, tillsammans med en grafisk representation av eventuella argument som användaren angav när makrot anropades.

Av nödvändighet kräver den här seriens mål diskussion av ett brett spektrum av ämnen, många av dem ganska lågnivåmässiga, och till en början kan de verka mycket avlägsna från uppgiften att sätta dina dokument. Förhoppningsvis kommer du efter att ha gått på djupet få en grund för att bygga en bättre förståelse som i slutändan sparar dig mycket tid och kanske också minskar frustrationen. Vi hoppas också att den särskilt genererade grafiken som följer med serien ger en unikt värdefull insikt som hjälper och stödjer alla läsare i deras strävan att bättre förstå TeX-makron.

## Overleafs anpassade version av TeX

Videon ger en kort demonstration av Overleafs modifierade version av TeX, anpassad för att generera Graphviz-noddiagram (`.gv` -filer)—inga andra aspekter av TeX:s beteende påverkas av dessa ändringar.  `.gv` filerna innehåller representationer av TeX-tokenlistorna som används för att lagra makrodefinitioner och makroargument. Graphviz-visualiseringen exporteras till SVG som sedan importeras till [Inkscape](https://inkscape.org/) för vidare annotering innan grafiken införlivas i en artikel.

{% 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/sv/fler-amnen/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.
