> 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/dybtgaende-artikler/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md).

# De to tilstande for TeX-motorer: INI-tilstand og produktions-tilstand

Alle TeX-motorer har to "tilstande" for drift: en "INI"-tilstand og en "produktions"-tilstand—den sidstnævnte er blot standardtilstanden (normaltilstanden), der bruges til produktion af satsede materialer. INI-tilstand er ret anderledes, og du skal bruge en kommandolinjeindstilling for at sætte en TeX-motor i INI-tilstand. Du kan se, hvordan man gør det ved at køre `--help` på kommandolinjen. For eksempel, med LuaTeX, hvis du gør

`luatex --help`

vil du se mange kommandolinjeindstillinger, som understøttes af den motor:

```
Brug: luatex --lua=FILE [OPTION]... [TEXNAME[.tex]] [COMMANDS]
   eller: luatex --lua=FILE [OPTION]... \\FIRST-LINE
   eller: luatex --lua=FILE [OPTION]... &FMT ARGS
  Kør LuaTeX på TEXNAME og opret normalt TEXNAME.pdf.
  Eventuelle resterende COMMANDS behandles som luatex-input, efter at TEXNAME er læst.

  Alternativt, hvis det første argument uden optioner begynder med en backslash,
  fortolker luatex alle argumenter uden optioner som en inputlinje.

  Alternativt, hvis det første argument uden optioner begynder med et &,
  tages det næste ord som den FMT, der skal læses, og tilsidesætter alt andet. Eventuelle
  resterende argumenter behandles som ovenfor.

  Hvis ingen argumenter eller indstillinger er angivet, bed om input.

  Følgende almindelige indstillinger understøttes:

   --credits                     vis kreditter og afslut
   --debug-format                aktiver formatfejlfinding
   --draftmode                   slå kladdetilstand til (genererer ingen PDF-output)
   --[no-]file-line-error        deaktivér/aktiver fejlmeddelelser i fil:linje:fejl-stil
   --[no-]file-line-error-style  alias for --[no-]file-line-error
   --fmt=FORMAT                  indlæs formatfilen FORMAT
   --halt-on-error               stop behandlingen ved den første fejl
   --help                        vis hjælp og afslut
   --ini                         være iniluatex, til at dumpe formater
   --interaction=STRING          sæt interaktionstilstand (STRING=batchmode/nonstopmode/scrollmode/errorstopmode)
   --jobname=STRING              sæt jobnavnet til STRING
   --kpathsea-debug=NUMBER       sæt fejlfindingsflag for stisøgning i henhold til bittene i NUMBER
   --lua=FILE                    indlæs og udfør et Lua-initialiseringsscript
   --[no-]mktex=FMT              deaktivér/aktiver generering af mktexFMT (FMT=tex/tfm)
   --nosocket                    deaktivér Lua socket-biblioteket
   --output-comment=STRING       brug STRING som kommentar i DVI-filen i stedet for dato (ingen effekt for PDF)
   --output-directory=DIR        brug den eksisterende DIR som den mappe, der skal skrives filer i
   --output-format=FORMAT        brug FORMAT som joboutput; FORMAT er 'dvi' eller 'pdf'
   --progname=STRING             sæt programnavnet til STRING
   --recorder                    aktivér filnavneoptager
   --safer                       deaktivér let udnyttelige Lua-kommandoer
   --[no-]shell-escape           deaktivér/aktiver systemkommandoer
   --shell-restricted            begræns systemkommandoer til en liste over kommandoer angivet i texmf.cnf
   --synctex=NUMBER              aktivér synctex (se man synctex)
   --utc                         sæt init-tid til UTC
   --version                     vis version og afslut

Alternative adfærdsmodeller kan opnås med særlige flag

  --luaonly                      kør en Lua-fil og afslut derefter
  --luaconly                     byte-kompilér en Lua-fil og afslut derefter
  --luahashchars                 de bit, som den aktuelle Lua-fortolker bruger til streng-hashing

Se referencehåndbogen for flere oplysninger om opstartprocessen.

Send fejlrapporter via e-mail til dev-luatex@ntg.nl.
```

Blandt disse mange indstillinger er der to, som er relevante her:

```
--ini              være iniluatex, til at dumpe formater
--fmt=FORMAT       indlæs formatfilen FORMAT
```

Her henviser LuaTeX til sin INI-tilstand under navnet `iniluatex`. Så hvad betyder dette `iniluatex` (INI-tilstand) egentlig? Et lille hint er den anden kommandolinjeindstilling vist ovenfor:

```
--fmt=FORMAT       indlæs formatfilen FORMAT
```

### INI-tilstand? Formatfiler? Jeg er forvirret...

Makropakker, såsom LaTeX, er store samlinger af komplekse makroer: indlæsning og behandling af råteksten i alle de tilhørende filer medfører en vis tids- og beregningsmæssig overhead; for eksempel:

* læse og skanne titusindvis af individuelle teksttegn;
* fortolke, behandle og gemme hundredvis af makroer/kommandoer;
* initialisere interne tabeller over skrifttyper og orddelingsdata.

Alt dette skal finde sted, og resultaterne skal gemmes i hukommelsen, før TeX-motoren faktisk er klar til at behandle en brugers TeX-dokument, som gør brug af de makroer, der leveres af for eksempel Plain TeX- eller LaTeX-makrosamlingerne. Du kan tænke på dette som en TeX-motors opstartsproces: nødvendige forberedelser, før den er klar til at behandle dit dokument.

Måske som et udtryk for datidens teknologi tilbyder TeX-motorer en genvej til behandling af tekstfiler fulde af makrosamlinger: indlæsning af forbehandlede binære (*format*) filer.

Når en TeX-motor sættes i INI-tilstand, er dens opgave ikke at udføre satsning, men i stedet at:

1. indlæse og initialisere alle dens primitive kommandoer samt opsætte det absolut nødvendige minimum af catcodes (og andre koder), så TeX-motoren kan begynde videre behandling.
2. når (1) er gjort, indlæser og behandler den derefter en brugerleveret makrosamling, kaldet et "format" (f.eks. Plain TeX eller LaTeX-makrosamlingen).
3. når den har gennemført (1) og (2) med succes, vil TeX lave en "binær hjernedump" af alt, der er blevet indlæst og behandlet i hukommelsen, og skrive det ud til en binær *format* fil (f.eks., `lualatex.fmt`).

En formatfil er en binær fil, som gemmer en repræsentation af TeX's "sindstilstand" efter at have initialiseret adskillige interne datatabeller (herunder de primitive kommandoer) og behandlet alle de makrokommandoer, der findes i den brugerleverede makrosamling. TeX-motorer gør dette, fordi det er hurtigere at indlæse en "forudkompileret" binær fil end at genbehandle de rå makroer hver gang du ønsker at køre en TeX-motor ved hjælp af for eksempel Knuths Plain TeX eller LaTeX-makropakken—eller faktisk enhver makropakke, der er designet som et "format".

Når du for eksempel behandler et dokument, der skal sættes med LaTeX, genlæser TeX-motoren ikke alle LaTeX's kernemakroer, men læser i stedet en binær fil, kaldet for eksempel `lualatex.fmt`. De indre detaljer i formatfiler er specifikke for hver TeX-motor og hver version af den makropakke, der bruges til at generere en `.fmt` fil. Hvis du for eksempel opgraderer din LaTeX-distribution (dvs. selve kernen i LaTeX, ikke tillægspakker), kan du også være nødt til at generere en ny `.fmt` fil også.

### Eksempel

I LaTeX-kildekodedistributionen finder du filer med en `.ini` udvidelse, for eksempel lualatex.ini, som bruges til at generere `.fmt` filer—de `.ini` filer indeholder typisk motor-specifik initialiseringskode og går derefter videre til at indlæse de centrale LaTeX-makrofiler. Hvis du for eksempel kører LuaTeX med følgende kommandolinje:

`luatex --ini lualatex.ini`

vil LuaTeX skrive en fil med navnet `lualatex.fmt`

På skrivende tidspunkt, `lualatex.ini` indeholder følgende kode:

```
% tex-ini-files 2016-04-15: lualatex.ini
% Oprindeligt skrevet i 2008 af Karl Berry. Public domain.

\input luatexconfig.tex

\begingroup
  \catcode`\{=1 %
  \catcode`\}=2 %
  % Opsæt anførselstegn omkring jobnavne før latex.ltx
  % Web2c pdfTeX/XeTeX sætter anførselstegn omkring jobnavne, der indeholder mellemrum, men LuaTeX gør
  % ikke dette på motor-niveau. Adfærden kan ændres ved hjælp af
  % en callback. Oprindeligt blev denne kode indlæst via lualatexquotejobname.tex
  % men det krævede et hack omkring latex.ltx: adfærden er blevet ændret
  % for at tillade, at callback-vejen kan bruges direkte.
  \global\everyjob{\directlua{require("lualatexquotejobname.lua")}}
\endgroup

\input latex.ltx
```

`lualatex.ini` begynder med at indlæse en fil kaldet `luatexconfig.tex` som udfører en del LuaTeX-specifik initialisering—som man kunne forvente af en `.ini` (initialiserings)fil! På den sidste linje indlæser den `latex.ltx` hvilket får LuaTeX til at læse og behandle de centrale LaTeX-makroer.

Når LuaTeX er færdig med at behandle `lualatex.ini` vil den skrive den binære *formatfil* kaldet `lualatex.fmt`. Når LaTeX-koden er blevet kompileret til et binært format, kan LuaTeX (eller en hvilken som helst anden TeX-motor) meget hurtigt læse `.fmt` filen for at opstarte og initialisere dens interne tabeller over LaTeX's makrodefinitioner, skrifttyper og så videre—den behøver ikke gennemgå den lange proces med at læse og behandle de mange tusinde tegn, der findes i LaTeX-makropakken.

Du kan nu bede LuaTeX om at sætte dit LaTeX-dokument `yourfile.tex` (ved at bruge `lualatex` formatfil) ved at køre kommandoen:

```
luatex --fmt=lualatex yourfile.tex
```

`.fmt` filer er normalt specifikke for en bestemt motor: f.eks. er LuaTeX's `.fmt` filer er generelt ikke portable til brug med en anden TeX-motor: f.eks. pdfTeX eller XeTeX. Desuden, hvis LuaTeX-programmet opdateres med nye funktioner, er det meget muligt, at en `.fmt` fil, der er forberedt med en ældre version af LuaTeX, ikke vil fungere med den nye motor: du bliver nødt til at genopbygge (genkompilere) `.fmt` filen.

Hvis du forsøger at bruge en inkompatibel `.fmt` fil, vil en TeX-motor ikke kunne indlæse den og svare med fejlen:

```
Fatal formatfilfejl; jeg er sat fast
```

Tilsvarende, hvis de centrale LaTeX-makroer opdateres, kan du også være nødt til at genopbygge `lualatex.fmt` fil også.

`.fmt` filer kan forberedes ud fra enhver passende makropakke—ikke kun LaTeX; for eksempel kan Knuths oprindelige og langt enklere "Plain" TeX-makroer også behandles for at generere en `.fmt` fil. Du kunne, hvis du havde tiden, skrive din egen makrosamling og producere en formatfil til den pakke—bemærk, at du et sted i din makropakke skulle kalde den primitive kommando `\dump` som fortæller TeX-motoren, at den skal lave sin "binære hjernedump" og skrive `.fmt` filen.

Men langt de fleste brugere behøver aldrig at bekymre sig om TeX-motorers "INI"-tilstand eller processen med at generere `.fmt` filer: Overleaf og TeX Live-distributionen skjuler disse detaljer for dig—medmindre du har brug for at opsøge dem.


---

# 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/dybtgaende-artikler/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.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.
