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

# En serie i seks deler: Hvordan fungerer TeX-makroer egentlig?

## Om denne serien

Denne artikkelserien har et ambisiøst mål: å forklare, steg for steg, *hvordan* hvordan TeX-makroer, som LaTeX-kommandoer, faktisk fungerer—ved å utforske prosesser som finner sted inne i TeX-motorprogramvaren. Den forsøker å fortelle historien om TeXs prosesseringsatferd:

* lese inn tegn og bruke kategorikoder;
* produksjonen av tegn- og kommando-tokener—og formlene TeX bruker;
* hvordan TeX identifiserer, og deretter behandler, TeX-kommandoer;
* de interne detaljene ved lagring av makrodeﬁnisjoner og makroargumenter som tokendlister—ved hjelp av grafikk produsert fra interne TeX-data;
* og avslutter med å utforske hva makroekspansjon *faktisk* betyder—ved å bruke reelle data fra innsiden av en TeX-motor.

Men fordi TeX-motorer er så komplekse programvareprogrammer, kan vi ikke håpe å dekke alt, men vi har forsøkt å ta opp de viktigste, sentrale funksjonene i TeXs makrobehandlingsmuligheter.

#### Navigasjonsfelt

Hver artikkel har følgende navigasjonsfelt før og etter teksten, slik at du raskt kan hoppe til en annen artikkel 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 artikkelen undersøker begrunnelsen bak TeXs begrep om kategorikoder: hva de er og hvordan TeX bruker dem til å filtrere inndataene sine til innhold for typografering og kommandoer som skal utføres.

### Del 2: Lese inndata gjennom TeXs «øyne»

Gjennom en serie grafikker bruker vi den velprøvde analogien om at TeX har «øyne» som det kan lese (skanne) inndataen med. Vi utforsker eksempler på TeXs bruk av kategorikoder for å lage tegntokener og hvordan TeX gjenkjenner og behandler kommandoer ved å bruke kategorikode 0 («escape-tegn»).

### Del 3: Fra inngangstekst til kommandoer

Denne artikkelen tar et grundig blikk på hvordan TeX gjenkjenner og behandler kommandoer som oppdages i inndataen. Vi utforsker hvordan TeX lagrer og henter informasjon om kommandoer: kommando-koder, kommandomodifikatorer, og ser på noen interne variabler som TeX bruker til å lagre informasjon om elementer lest inn fra inndataen. En del av artikkelen er ganske lavnivå materiale som kan hoppes over ved første gjennomlesning.

### Del 4: Strukturen til en makro

Vi introduserer og bruker følgende «rammeverk» for å beskrive strukturen til makroer:

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

Vi utforsker deretter en rekke eksempler for å demonstrere rollen og hensikten til en makros `<parametertekst>` som en «tokensjablon» som kan konstrueres ved bruk av tokener som fungerer som *avgrensere*.

### Del 5: Tokendlister og TeXs interne makrolagring

Denne artikkelen utforsker i detalj hvordan TeX bruker tokendlister til å lagre makrodeﬁnisjoner. Ved hjelp av omfattende diagrammer generert med en spesielt modifisert versjon av TeX, utforsker vi de spesialiserte tokene som TeX bruker til å identifisere og behandle brukerens makroargumenter.

### Del 6: Makroekspansjon og behandling

I Del 6 bruker vi noen detaljerte grafikker for å forklare og utforske den nøyaktige betydningen av makroekspansjon og konsekvensene av TeXs tokenisering av makroargumenter før de mates inn i en makros .

## En kort merknad: Bruke «TeX» og ikke LaTeX

Som diskutert i artikkelen [Hva er i et navn: En guide til de mange variantene av TeX](/latex/no/dybdeartikler/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) brukes et bredt spekter av termer for å referere til/beskrive TeX, LaTeX og deres avledninger. Derfor er det verdt å avklare, kort, vår bruk/betydning av «TeX» i konteksten av denne serien.

«TeX» er, noe forvirrende, både navnet på et kjørbart program og navnet på et satsingsspråk. For å skille mellom de to brukes begrepet *TeX-motor* brukes for å skille mellom et kjørbart TeX-program og satsingsspråket. Noen av de spesifikke dataene, opplysningene og detaljene som brukes i denne serien, er hentet fra en grundig gjennomgang av kildekoden til Knuths opprinnelige TeX-programvare, men prinsippene som beskrives, er felles for alle TeX-motorer. Så gjennom hele diskusjonen vår skal «TeX» forstås som en av de kjørbare TeX-motorene—slik som Knuths opprinnelige TeX, pdfTeX, XeTeX eller LuaTeX.

I artiklene bruker vi TeXs primitive kommando `\def` for å definere makroeksemplene våre: vi bruker ikke LaTeX-kommandoen `\newcommand` som nesten helt sikkert er mer kjent for de fleste Overleaf-brukere. Det er en veldig god grunn til dette: målet vårt er å forstå de grunnleggende prinsippene som ligger til grunn for TeXs makroatferd, men for å gjøre det må vi bruke kjernekommandoene (primitivene) innebygd i TeX-programvaren. LaTeX-kommandoer, som `\newcommand`, er i seg selv makroer: kommandoer med spesifikk programmert atferd og som til slutt er konstruert av lag med lavere-nivå TeX-primitive kommandoer. For bedre å forstå TeXs grunnleggende atferd må vi bruke TeX-primitiver, ikke LaTeX-makroer.

## Eksempler og grafikk

I stedet for bare å stole på en samling eksempelmakroer designet for å demonstrere ulike funksjoner, hjørnetilfeller og atferd i TeX, bruker vi også et omfattende utvalg av grafikk for å se inn i selve TeX og se *hvordan* og *hvorfor* hvordan makrobehandlingen fungerer slik den gjør. Mange av grafikkene (tokendlister/nodediagrammer) er forberedt ved hjelp av en spesielt modifisert versjon av Knuths opprinnelige TeX.

Overleaf tilpasset Knuths TeX med ekstra kode (skrevet i C) som «kobler seg inn» på TeXs makrobehandling og utforsker data og datastrukturer som normalt er utilgjengelige for brukere. Hver gang en makro kalles, genererer den modifiserte TeX-motoren ekstra utdatafiler som inneholder data i et format som kan behandles med [Graphviz](https://www.graphviz.org/), et åpen kildekode-program for grafvisualisering. Sluttresultatet er grafikk (nodeliste-diagrammer) som viser nøyaktig hvordan TeX lagrer en makros definisjon, sammen med en grafisk framstilling av eventuelle argumenter som brukeren oppga da makroen ble kalt.

På grunn av nødvendighet krever målene til denne serien diskusjon av et bredt spekter av emner, mange av dem ganske lavnivå, og som i starten kan synes å ligge svært langt fra oppgaven med å sette opp dokumentene dine. Forhåpentligvis vil du, etter å ha gått i dybden, sitte igjen med et fundament for å bygge en bedre forståelse som til slutt vil spare deg for mye tid og kanskje også redusere frustrasjonsnivået. Vi håper også at den spesialgenererte grafikken som følger denne serien, også gir et unikt verdifullt innblikk som kan hjelpe og støtte lesere i deres søken etter å forstå TeX-makroer bedre.

## Overleafs tilpassede versjon av TeX

Videoen gir en kort demonstrasjon av Overleafs modifiserte versjon av TeX, tilpasset for å generere Graphviz-nodediagrammer (`.gv` filer)—ingen andre aspekter ved TeXs oppførsel påvirkes av disse endringene. Den `.gv` filene inneholder representasjoner av TeX-tokendlistene som brukes til å lagre makrodeﬁnisjoner og makroargumenter. Graphviz-visualiseringen eksporteres til SVG, som deretter importeres til [Inkscape](https://inkscape.org/) for videre annotering før grafikken innlemmes i en artikkel.

{% 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/no/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.
