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

# De två lägena för TeX-motorer: INI-läge och produktionsläge

Alla TeX-motorer har två "lägen" för drift: ett "INI"-läge och ett "produktionsläge" — det senare är helt enkelt standardläget (normalläget) som används för att producera sättningsmaterial. INI-läget är ganska annorlunda och du måste använda ett kommandoradsalternativ för att sätta en TeX-motor i INI-läge. Du kan se hur man gör det genom att köra `--help` på kommandoraden. Till exempel, med LuaTeX om du kör

`luatex --help`

ser du många kommandoradsalternativ som stöds av den motorn:

```
Användning: 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, vilket vanligtvis skapar TEXNAME.pdf.
  Eventuella återstående COMMANDS behandlas som luatex-inmatning efter att TEXNAME har lästs.

  Alternativt, om det första argumentet som inte är ett alternativ börjar med ett omvänt snedstreck,
  tolkar luatex alla argument som inte är alternativ som en inmatningsrad.

  Alternativt, om det första argumentet som inte är ett alternativ börjar med ett &,
  tas nästa ord som den FMT som ska läsas, vilket åsidosätter allt annat. Eventuella
  återstående argument behandlas som ovan.

  Om inga argument eller alternativ anges, fråga efter indata.

  Följande vanliga alternativ förstås:

   --credits                     visa kredituppgifter och avsluta
   --debug-format                aktivera felsökning av format
   --draftmode                   slå på utkastläge (genererar ingen utgående PDF)
   --[no-]file-line-error        avaktivera/aktivera meddelanden av typen fil:rad:fel
   --[no-]file-line-error-style  alias för --[no-]file-line-error
   --fmt=FORMAT                  ladda formatfilen FORMAT
   --halt-on-error               stoppa bearbetningen vid det första felet
   --help                        visa hjälp och avsluta
   --ini                         vara iniluatex, för att dumpa format
   --interaction=STRING          ställ in interaktionsläge (STRING=batchmode/nonstopmode/scrollmode/errorstopmode)
   --jobname=STRING              sätt jobbnamnet till STRING
   --kpathsea-debug=NUMBER       sätt felsökningsflaggor för sökning i sökväg enligt bitarna i NUMBER
   --lua=FILE                    ladda och kör ett Lua-initieringsskript
   --[no-]mktex=FMT              avaktivera/aktivera generering av mktexFMT (FMT=tex/tfm)
   --nosocket                    avaktivera Lua:s socketbibliotek
   --output-comment=STRING       använd STRING som kommentar i DVI-filen i stället för datum (ingen effekt för PDF)
   --output-directory=DIR        använd befintliga DIR som katalog att skriva filer i
   --output-format=FORMAT        använd FORMAT för jobbutdata; FORMAT är 'dvi' eller 'pdf'
   --progname=STRING             sätt programnamnet till STRING
   --recorder                    aktivera filnamnsloggning
   --safer                       avaktivera lätt utnyttjbara Lua-kommandon
   --[no-]shell-escape           avaktivera/aktivera systemkommandon
   --shell-restricted            begränsa systemkommandon till en lista med kommandon angivna i texmf.cnf
   --synctex=NUMBER              aktivera synctex (se man synctex)
   --utc                         initiera tiden till UTC
   --version                     visa version och avsluta

Alternativa beteendemodeller kan erhållas med särskilda växlar

  --luaonly                      kör en lua-fil och avsluta sedan
  --luaconly                     bytekompilera en lua-fil och avsluta sedan
  --luahashchars                 de bitar som används av den aktuella Lua-tolken för stränghashning

Se referenshandboken för mer information om uppstartsprocessen.

Skicka felrapporter till dev-luatex@ntg.nl.
```

Bland dessa många alternativ finns två som är relevanta här:

```
--ini              vara iniluatex, för att dumpa format
--fmt=FORMAT       ladda formatfilen FORMAT
```

Här hänvisar LuaTeX till sitt INI-läge med namnet `iniluatex`. Så vad betyder detta `iniluatex` (INI-läge) egentligen? En liten ledtråd är det andra kommandoradsalternativet som visas ovan:

```
--fmt=FORMAT       ladda formatfilen FORMAT
```

### INI-läge? Formatfiler? Jag är förvirrad...

Makropaket, såsom LaTeX, är stora samlingar av komplexa makron: att läsa in och bearbeta råtexten i alla de ingående filerna medför faktiskt en viss tids- och beräkningskostnad; till exempel:

* läsa och genomsöka tiotusentals enskilda tecken i texten;
* tolka, bearbeta och lagra hundratals makron/kommandon;
* initiera interna tabeller för typsnitt och avstavningsdata.

Allt detta måste ske, och resultaten lagras i minnet, innan TeX-motorn faktiskt är redo att bearbeta en användares TeX-dokument som använder makron som tillhandahålls av till exempel makrosamlingarna Plain TeX eller LaTeX. Du kan tänka på detta som TeX-motorns uppstartsprocess: nödvändiga förberedelser innan den är redo att bearbeta ditt dokument.

Kanske som en spegling av sin tids teknik erbjuder TeX-motorer en genväg för att bearbeta textfiler fulla av makrosamlingar: att läsa in förbearbetade binära (*format*) filer.

När en TeX-motor sätts i INI-läge är dess uppgift inte att utföra sättning utan i stället att:

1. läsa in och initiera alla sina primitiva kommandon samt ställa in det absoluta minimum av katkoder (och andra koder) så att TeX-motorn kan påbörja vidare bearbetning.
2. när (1) är klart läser och bearbetar den sedan en användartillhandahållen makrosamling, kallad ett "format" (t.ex. Plain TeX eller LaTeX-makrosamlingen).
3. när den framgångsrikt har slutfört (1) och (2) kommer TeX att utföra en "binär hjärndump" av allt som har lästs in och bearbetats i dess minne och skriva ut det till en binär *format* fil (t.ex., `lualatex.fmt`).

En formatfil är en binär fil som lagrar en representation av TeX:s "tillstånd" efter att ha initierat ett stort antal interna datatabeller (inklusive de primitiva kommandona) och bearbetat alla makrokommandon som finns i den av användaren tillhandahållna makrosamlingen. TeX-motorer gör detta eftersom det går snabbare att läsa in en "förkompilerad" binär fil än att bearbeta om de råa makrona varje gång du vill köra en TeX-motor med till exempel Knuths Plain TeX eller LaTeX-makropaketet — eller i själva verket vilket makropaket som helst utformat som ett "format".

När du bearbetar ett dokument som ska sättas med LaTeX, till exempel, läser TeX-motorn inte om (bearbetar inte om) alla LaTeX:s kärnmakron utan läser i stället in en binär fil som kallas, till exempel, `lualatex.fmt`. De inre detaljerna i formatfiler är specifika för varje TeX-motor och `.fmt` fil. Till exempel, om du uppgraderar din LaTeX-distribution (dvs. själva kärnan i LaTeX, inte tilläggspaket) kan du behöva generera en ny `.fmt` fil också.

### Exempel

I LaTeX:s källkodsfördelning hittar du filer med en `.ini` filändelse, till exempel lualatex.ini, som används för att generera `.fmt` filer — dessa `.ini` filer innehåller vanligtvis motor-specifik initieringskod och fortsätter sedan med att läsa in LaTeX:s kärnmakrofiler. Om du till exempel kör LuaTeX med följande kommandorad:

`luatex --ini lualatex.ini`

kommer LuaTeX att skriva ut en fil som heter `lualatex.fmt`

När detta skrivs, `lualatex.ini` innehåller följande kod:

```
% tex-ini-files 2016-04-15: lualatex.ini
% Ursprungligen skriven 2008 av Karl Berry. Allmän egendom.

\input luatexconfig.tex

\begingroup
  \catcode`\{=1 %
  \catcode`\}=2 %
  % Ställ in citering av jobbnamn innan latex.ltx
  % Web2c pdfTeX/XeTeX citerar jobbnamn som innehåller mellanslag, men LuaTeX gör
  % inte detta på motor-nivå. Beteendet kan ändras med
  % en callback. Ursprungligen lästes denna kod in via lualatexquotejobname.tex
  % men det krävde en hack runt latex.ltx: beteendet har ändrats
  % för att tillåta att callback-vägen används direkt.
  \global\everyjob{\directlua{require("lualatexquotejobname.lua")}}
\endgroup

\input latex.ltx
```

`lualatex.ini` börjar med att läsa in en fil som heter `luatexconfig.tex` som utför viss LuaTeX-specifik initiering — som man kan förvänta sig av en `.ini` (initierings)fil! På sista raden läser den in `latex.ltx` vilket får LuaTeX att läsa och bearbeta LaTeX:s kärnmakron.

Efter att LuaTeX har avslutat bearbetningen av `lualatex.ini` kommer den att skriva ut den binära *formatfilen* som heter `lualatex.fmt`. När LaTeX-koden har kompilerats till ett binärt format kan LuaTeX (eller någon annan TeX-motor) mycket snabbt läsa `.fmt` filen för att starta upp och initiera sina interna tabeller med LaTeX:s makrodefinitioner, typsnitt och så vidare — den behöver inte genomgå den tidskrävande processen att läsa och bearbeta de många tusen tecken som finns i LaTeX-makropaketet.

Du kan nu be LuaTeX att sätta ditt LaTeX-dokument `yourfile.tex` (med hjälp av `lualatex` formatfilen) genom att köra kommandot:

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

`.fmt` filer är vanligtvis specifika för en viss motor: t.ex. LuaTeX:s `.fmt` filer är i allmänhet inte portabla att använda med en annan TeX-motor: t.ex. pdfTeX eller XeTeX. Dessutom, om LuaTeX-körbarfilen uppdateras med nya funktioner är det ganska möjligt att en `.fmt` fil som har förberetts med en äldre version av LuaTeX inte skulle fungera med den nya motorn: du skulle behöva bygga om (kompilera om) `.fmt` -filen.

Om du försöker använda en inkompatibel `.fmt` fil kommer en TeX-motor att misslyckas med att läsa in den och svara med felet:

```
Allvarligt formatfilfel; jag är blockerad
```

På samma sätt, om LaTeX:s kärnmakron uppdateras kan du också behöva bygga om `lualatex.fmt` fil också.

`.fmt` filer kan förberedas från vilket lämpligt makropaket som helst — inte bara LaTeX; till exempel kan Knuths ursprungliga, och mycket enklare, "Plain"-TeX-makron också bearbetas för att generera en `.fmt` fil. Du skulle, om du hade tid, kunna skriva din egen makrosamling och skapa en formatfil för det paketet — observera att du någonstans i ditt makropaket skulle behöva anropa det primitiva kommandot `\dump` som säger åt TeX-motorn att göra sin "binära hjärndump" och skriva ut `.fmt` -filen.

Men den överväldigande majoriteten av användare behöver aldrig oroa sig för TeX-motorernas "INI"-läge eller processen att generera `.fmt` filer: Overleaf och TeX Live-distributionen skyddar dig från dessa detaljer — om du inte behöver leta efter 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/sv/fordjupade-artiklar/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.
