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

# En serie i seks dele: Hvordan virker TeX-makroer egentlig?

## Om denne serie

Denne artikelserie har et ambitiøst mål: at forklare, trin for trin, *hvordan* hvordan TeX-makroer, såsom LaTeX-kommandoer, faktisk fungerer—ved at undersøge processer, der finder sted inde i TeX-motorens software. Den forsøger at fortælle historien om TeX's behandlingsadfærd:

* at læse indtastede tegn og bruge kategorikoder;
* produktionen af tegn- og kommandotokens—og de formler, som TeX bruger;
* hvordan TeX identificerer og derefter behandler TeX-kommandoer;
* de interne detaljer i lagring af makrodefinitioner og makroargumenter som tokenlister—ved hjælp af grafik produceret ud fra interne TeX-data;
* og afslutter med at undersøge, hvad makroudvidelse *faktisk* betyder—ved hjælp af virkelige data inde fra en TeX-motor.

Men fordi TeX-motorer er så komplekse softwareprogrammer, kan vi ikke håbe på at dække alt, men vi har forsøgt at behandle de vigtigste, centrale funktioner i TeX's makrobehandlingsmuligheder.

#### Navigationsbjælke

Hver artikel har følgende navigationsbjælke før og efter teksten, så du hurtigt kan hoppe til en anden 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: Kategorikoder

Denne artikel undersøger begrundelsen bag TeX's begreb om kategorikoder: hvad de er, og hvordan TeX bruger dem til at filtrere sit input til indhold til satsning og kommandoer, der skal udføres.

### Del 2: Læsning af input gennem TeX's “øjne”

Gennem en række grafik bruger vi den velafprøvede analogi med, at TeX har “øjne”, hvormed den læser (scanner) sit input. Vi udforsker eksempler på TeX's brug af kategorikoder til at oprette tegntokens og hvordan TeX genkender og behandler kommandoer ved hjælp af kategorikode 0 (“escape-tegn”).

### Del 3: Fra inputtekst til kommandoer

Denne artikel ser i dybden på, hvordan TeX genkender og behandler kommandoer, der registreres i inputtet. Vi udforsker, hvordan TeX lagrer og henter information om kommandoer: kommandokoder, kommandomodifikatorer, og gennemgår nogle interne variabler, som TeX bruger til at lagre information om elementer, der læses ind fra inputtet. Noget af artiklen er ret lavt niveau og kan springes over ved første læsning.

### Del 4: Strukturen af en makro

Vi introducerer og bruger følgende “rammeværk” til at beskrive strukturen af makroer:

```
<TeX-makro-primitive><makronavn><parametertekst>{<erstatningstekst>}
```

Vi udforsker derefter en række eksempler for at demonstrere rollen og formålet med en makros `<parametertekst>` som et “tokenskabelon”, som kan konstrueres ved brug af tokens, der fungerer som *afgrænsere*.

### Del 5: Tokenlister og TeX's interne makrolagring

Denne artikel udforsker i detaljer, hvordan TeX bruger tokenlister til at lagre makrodefinitioner. Ved hjælp af omfattende diagrammer genereret med en specielt modificeret version af TeX udforsker vi de specialiserede tokens, som TeX bruger til at identificere og behandle en brugers makroargumenter.

### Del 6: Makroudvidelse og behandling

I Del 6 bruger vi nogle detaljerede grafik til at forklare og udforske den nøjagtige betydning af makroudvidelse og konsekvenserne af TeX's tokenisering af makroargumenter, før de føres ind i en makros .

## En kort note: Brugen af “TeX” og ikke LaTeX

Som diskuteret i artiklen [Hvad ligger der i et navn: En guide til TeXs mange varianter](/latex/da/dybtgaende-artikler/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) bruges en bred vifte af termer til at henvise til/beskrive TeX, LaTeX og deres afledte. Derfor er det værd kort at præcisere vores brug/betydning af “TeX” i konteksten af denne serie.

“TeX” er, lidt forvirrende, både navnet på et eksekverbart program og navnet på et satsningssprog. For at skelne mellem de to bruges termen *TeX-motor* til at skelne mellem et eksekverbart TeX-program og satsningssproget. Nogle af de specifikke data, oplysninger og detaljer, der bruges i denne serie, stammer fra en grundig gennemgang af kildekoden til Knuths oprindelige TeX-software, men de beskrevne principper er fælles for alle TeX-motorer. Så gennem hele vores diskussion bør brugen af “TeX” forstås som en af de eksekverbare TeX-motorer—såsom Knuths oprindelige TeX, pdfTeX, XeTeX eller LuaTeX.

Inden for artiklerne bruger vi den TeX-primitive kommando `\def` til at definere vores makroeksempler: vi bruger ikke LaTeX-kommandoen `\newcommand` som næsten helt sikkert er mere bekendt for de fleste Overleaf-brugere. Der er en meget god grund til dette: vores mål er at forstå de grundlæggende principper, der ligger til grund for TeX's makroadfærd, men for at gøre det er vi nødt til at bruge de kernekommandoer (primitiver), der er indbygget i TeX-softwaren. LaTeX-kommandoer, såsom `\newcommand`, er i sig selv makroer: kommandoer med specifik programmeret adfærd, og som i sidste ende er opbygget af lag af TeX-primitive kommandoer på lavere niveau. For bedre at forstå TeX's grundlæggende adfærd er vi nødt til at bruge TeX-primitiver, ikke LaTeX-makroer.

## Eksempler og grafik

I stedet for udelukkende at stole på en række makroeksempler, der er designet til at demonstrere forskellige funktioner, kanttilfælde og adfærd i TeX, bruger vi også et omfattende sæt grafik til at kigge ind i selve TeX for at se *hvordan* og *hvorfor* hvordan dets makrobehandling fungerer, som den gør. Mange af grafikkerne (tokenlister/node-diagrammer) er forberedt ved hjælp af en specielt modificeret version af Knuths oprindelige TeX.

Overleaf tilpassede Knuths TeX med ekstra kode (skrevet i C), der “kobler sig ind” på TeX's makrobehandling og udforsker data og datastrukturer, som normalt er utilgængelige for brugerne. Hver gang en makro kaldes, genererer den modificerede TeX-motor yderligere outputfiler, der indeholder data i et format, som kan behandles ved hjælp af [Graphviz](https://www.graphviz.org/), et open source-program til grafvisualisering. Slutresultatet er grafik (node-liste-diagrammer), som viser præcis, hvordan TeX lagrer en makros definition, sammen med en grafisk repræsentation af eventuelle argumenter, som brugeren leverer, når makroen blev kaldt.

Af nødvendighed kræver denne series mål en diskussion af en bred vifte af emner, hvoraf mange er ret lavt niveau og i begyndelsen måske virker meget fjernt fra opgaven med at sætte dine dokumenter. Forhåbentlig vil du efter at have taget et dybere dyk komme ud med et fundament for at opbygge en bedre forståelse, som i sidste ende vil spare dig for en masse tid og måske også mindske frustrationen. Det er også vores håb, at de specialgenererede grafik, der ledsager denne serie, også giver et unikt værdifuldt indblik, som kan hjælpe og støtte læsere i deres søgen efter bedre at forstå TeX-makroer.

## Overleafs tilpassede version af TeX

Videoen giver en kort demonstration af Overleafs modificerede version af TeX, tilpasset til at generere Graphiviz-node-diagrammer (`.gv` filer)—ingen andre aspekter af TeX's adfærd påvirkes af disse ændringer. De `.gv` filer indeholder repræsentationer af de TeX-tokenlister, der bruges til at lagre makrodefinitioner og makroargumenter. Graphviz-visualiseringen eksporteres til SVG, som derefter importeres til [Inkscape](https://inkscape.org/) til yderligere annotering, før grafikken inkorporeres 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/da/flere-emner/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.
