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

# Le due modalità dei motori TeX: modalità INI e modalità di produzione

Tutti i motori TeX hanno due "modalità" di funzionamento: una modalità "INI" e una modalità "di produzione"—quest'ultima è semplicemente la modalità predefinita (standard) usata per la produzione di materiale impaginato. La modalità INI è piuttosto diversa e per mettere un motore TeX in modalità INI è necessario usare un'opzione da riga di comando. Puoi vedere come farlo con `--help` sulla riga di comando. Ad esempio, con LuaTeX, se esegui

`luatex --help`

vedrai molte opzioni da riga di comando supportate da quel motore:

```
Uso: luatex --lua=FILE [OPTION]... [TEXNAME[.tex]] [COMMANDS]
   oppure: luatex --lua=FILE [OPTION]... \\FIRST-LINE
   oppure: luatex --lua=FILE [OPTION]... &FMT ARGS
  Esegui LuaTeX su TEXNAME, di solito creando TEXNAME.pdf.
  Gli eventuali COMMANDS rimanenti vengono elaborati come input di luatex, dopo che TEXNAME è stato letto.

  In alternativa, se il primo argomento non opzionale inizia con una barra rovesciata,
  luatex interpreta tutti gli argomenti non opzionali come una riga di input.

  In alternativa, se il primo argomento non opzionale inizia con un &, il
  la parola successiva viene presa come il FMT da leggere, ignorando tutto il resto. Qualsiasi
  argomento rimanente viene elaborato come sopra.

  Se non vengono specificati argomenti o opzioni, viene richiesto l'input.

  Le seguenti opzioni ordinarie sono riconosciute:

   --credits                     mostra i crediti ed esce
   --debug-format                abilita il debug del formato
   --draftmode                   attiva la modalità bozza (non genera alcun PDF in uscita)
   --[no-]file-line-error        disabilita/abilita i messaggi in stile file:riga:errore
   --[no-]file-line-error-style  alias di --[no-]file-line-error
   --fmt=FORMAT                  carica il file di formato FORMAT
   --halt-on-error               interrompe l'elaborazione al primo errore
   --help                        mostra l'aiuto ed esce
   --ini                         essere iniluatex, per effettuare il dump dei formati
   --interaction=STRING          imposta la modalità di interazione (STRING=batchmode/nonstopmode/scrollmode/errorstopmode)
   --jobname=STRING              imposta il nome del lavoro su STRING
   --kpathsea-debug=NUMBER       imposta i flag di debug della ricerca dei percorsi in base ai bit di NUMBER
   --lua=FILE                    carica ed esegue uno script di inizializzazione Lua
   --[no-]mktex=FMT              disabilita/abilita la generazione di mktexFMT (FMT=tex/tfm)
   --nosocket                    disabilita la libreria socket di Lua
   --output-comment=STRING       usa STRING per il commento del file DVI invece della data (nessun effetto per PDF)
   --output-directory=DIR        usa DIR esistente come directory in cui scrivere i file
   --output-format=FORMAT        usa FORMAT per l'output del lavoro; FORMAT è 'dvi' o 'pdf'
   --progname=STRING             imposta il nome del programma su STRING
   --recorder                    abilita il registratore dei nomi file
   --safer                       disabilita i comandi Lua facilmente sfruttabili
   --[no-]shell-escape           disabilita/abilita i comandi di sistema
   --shell-restricted            limita i comandi di sistema a un elenco di comandi forniti in texmf.cnf
   --synctex=NUMBER              abilita synctex (vedi man synctex)
   --utc                         imposta l'ora iniziale su UTC
   --version                     mostra la versione ed esce

Modelli di comportamento alternativi possono essere ottenuti con appositi interruttori

  --luaonly                      esegui un file Lua, quindi esci
  --luaconly                     compila in bytecode un file Lua, quindi esci
  --luahashchars                 i bit usati dall'interprete Lua corrente per l'hashing delle stringhe

Vedi il manuale di riferimento per ulteriori informazioni sul processo di avvio.

Invia le segnalazioni di bug a dev-luatex@ntg.nl.
```

Tra quelle molte opzioni, ce ne sono due rilevanti qui:

```
--ini              essere iniluatex, per effettuare il dump dei formati
--fmt=FORMAT       carica il file di formato FORMAT
```

Qui, LuaTeX si riferisce alla sua modalità INI con il nome di `iniluatex`. Quindi che cosa significa questo `iniluatex` (modalità INI) in realtà? Un piccolo indizio è la seconda opzione da riga di comando mostrata sopra:

```
--fmt=FORMAT       carica il file di formato FORMAT
```

### Modalità INI? File di formato? Sono confuso...

I pacchetti di macro, come LaTeX, sono grandi raccolte di macro complesse: caricare ed elaborare il testo grezzo di tutti i file componenti comporta un certo sovraccarico di tempo e di calcolo; per esempio:

* leggere e scandire decine di migliaia di singoli caratteri di testo;
* analizzare, elaborare e memorizzare centinaia di macro/comandi;
* inizializzare le tabelle interne dei font e i dati di sillabazione.

Tutto questo deve avvenire, e i risultati devono essere memorizzati in memoria, prima che il motore TeX sia effettivamente pronto a elaborare il documento TeX dell'utente che fa uso delle macro fornite, per esempio, dalle raccolte di macro Plain TeX o LaTeX. Puoi pensare a questo come al processo di bootstrap di un motore TeX: preparativi essenziali prima che sia pronto a elaborare il tuo documento.

Forse rispecchiando la tecnologia del suo tempo, i motori TeX offrono una scorciatoia per elaborare file di testo pieni di raccolte di macro: il caricamento*formato* ) di formato.

Quando viene messo in modalità INI, il compito di un motore TeX non è quello di eseguire l'impaginazione, ma piuttosto di:

1. caricare e inizializzare tutti i suoi comandi primitivi oltre a impostare il minimo indispensabile di catcode (e altri codici) in modo che il motore TeX possa avviare ulteriori elaborazioni.
2. una volta completato il punto (1), caricherà ed elaborerà una raccolta di macro fornita dall'utente, detta un "formato" (ad es., Plain TeX o la raccolta di macro LaTeX).
3. dopo aver completato con successo (1) e (2), TeX eseguirà un "dump binario del cervello" di tutto ciò che è stato caricato ed elaborato nella sua memoria e lo scriverà in un file binario *formato* file (ad es., `lualatex.fmt`).

Un file di formato è un file binario che memorizza una rappresentazione dello "stato mentale" di TeX dopo aver inizializzato numerose tabelle interne di dati (incluse le primitive) ed elaborato tutti i comandi macro presenti nella raccolta di macro fornita dall'utente. I motori TeX fanno questo perché è più veloce caricare un file binario "precompilato" piuttosto che rielaborare le macro grezze ogni volta che si vuole eseguire un motore TeX usando, ad esempio, il Plain TeX di Knuth o il pacchetto di macro LaTeX—o in effetti qualsiasi pacchetto di macro progettato come un "formato".

Quando elabori un documento che deve essere impaginato con LaTeX, per esempio, il motore TeX non rilegge (rielabora) tutte le macro di base di LaTeX ma invece legge in un file binario chiamato, ad esempio, `lualatex.fmt`. I dettagli interni dei file di formato sono specifici per ogni motore TeX e per ogni versione del pacchetto di macro usato per generare un `.fmt` file. Per esempio, se aggiorni la tua distribuzione LaTeX (cioè il nucleo di LaTeX stesso, non i pacchetti aggiuntivi) allora potresti dover generare anche un nuovo `.fmt` file.

### Esempio

All'interno della distribuzione del codice sorgente di LaTeX troverai file con un'estensione `.ini` ad esempio lualatex.ini, che sono usati per generare `.fmt` file di formato—questi `.ini` file in genere contengono codice di inizializzazione specifico del motore e poi procedono a includere i file macro principali di LaTeX. Per esempio, se esegui LuaTeX con la seguente riga di comando:

`luatex --ini lualatex.ini`

LuaTeX scriverà un file chiamato `lualatex.fmt`

Al momento in cui scriviamo, `lualatex.ini` contiene il seguente codice:

```
% tex-ini-files 2016-04-15: lualatex.ini
% Scritto originariamente nel 2008 da Karl Berry. Dominio pubblico.

\\input luatexconfig.tex

\begingroup
  \\catcode`\\{=1 %
  \\catcode`\\}=2 %
  % Imposta la quotatura del nome del job prima di latex.ltx
  % Web2c pdfTeX/XeTeX racchiude tra virgolette i nomi dei job contenenti spazi, ma LuaTeX
  % non lo fa a livello del motore. Il comportamento può essere modificato usando
  % un callback. Originariamente questo codice veniva caricato tramite lualatexquotejobname.tex
  % ma ciò richiedeva un trucco attorno a latex.ltx: il comportamento è stato modificato
  % per consentire l'uso diretto della via del callback.
  \\global\\everyjob{\\directlua{require("lualatexquotejobname.lua")}}
\endgroup

\\input latex.ltx
```

`lualatex.ini` inizia includendo un file chiamato `luatexconfig.tex` che esegue una certa inizializzazione specifica di LuaTeX—come ci si potrebbe aspettare da un `.ini` file di (inizializzazione)! Nell'ultima riga include `latex.ltx` che fa sì che LuaTeX legga ed elabori le macro principali di LaTeX.

Dopo che LuaTeX ha terminato l'elaborazione di `lualatex.ini` scriverà il binario *file di formato* chiamato `lualatex.fmt`. Una volta che il codice LaTeX è stato compilato in un formato binario, LuaTeX (o qualsiasi altro motore TeX) può leggere molto rapidamente il `.fmt` file per avviare e inizializzare le sue tabelle interne delle definizioni di macro di LaTeX, dei font e così via—non deve affrontare il lungo processo di lettura ed elaborazione delle molte migliaia di caratteri contenuti nel pacchetto di macro LaTeX.

Ora puoi istruire LuaTeX a impaginare il tuo documento LaTeX `yourfile.tex` (usando il `lualatex` file di formato) con il comando:

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

`.fmt` I file di formato sono solitamente specifici per un particolare motore: ad es., quelli di LuaTeX `.fmt` i file di formato generalmente non sono portabili per l'uso con un motore TeX diverso: ad es., pdfTeX o XeTeX. Inoltre, se l'eseguibile LuaTeX viene aggiornato con nuove funzionalità è del tutto possibile che un `.fmt` file preparato con una versione più vecchia di LuaTeX non funzioni con il nuovo motore: dovresti ricostruire (ricompilare) il `.fmt` file.

Se provi a usare un `.fmt` file incompatibile, allora un motore TeX non riuscirà a caricarlo e risponderà con l'errore:

```
Errore fatale del file di formato; sono bloccato
```

Allo stesso modo, se le macro principali di LaTeX vengono aggiornate potresti dover ricostruire anche i `lualatex.fmt` file.

`.fmt` I file di formato possono essere preparati a partire da qualsiasi pacchetto di macro adatto—non solo LaTeX; ad esempio, anche le macro TeX "Plain" originali di Knuth, molto più semplici, possono essere elaborate per generare un `.fmt` file. Potresti, se avessi tempo, scrivere una tua raccolta di macro e produrre un file di formato per quel pacchetto—nota che da qualche parte nel tuo pacchetto di macro dovresti invocare il comando primitivo `\\dump` che dice al motore TeX di eseguire il suo "dump binario del cervello" e scrivere il `.fmt` file.

Tuttavia, la grande maggioranza degli utenti non deve mai preoccuparsi della modalità "INI" dei motori TeX, né del processo di generazione dei `.fmt` file di formato: Overleaf e la distribuzione TeX Live ti proteggono da quei dettagli—a meno che tu non debba andare a cercarli.


---

# 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/it/articoli-approfonditi/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.
