> 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/es/articulos-en-profundidad/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md).

# Los dos modos de los motores TeX: modo INI y modo de producción

Todos los motores TeX tienen dos "modos" de funcionamiento: un modo "INI" y un modo de "producción"; este último es simplemente el modo predeterminado (estándar) que se usa para la producción de material compuesto. El modo INI es bastante diferente y necesitas usar una opción de línea de comandos para poner un motor TeX en modo INI. Puedes ver cómo hacerlo ejecutando `--help` en la línea de comandos. Por ejemplo, con LuaTeX, si ejecutas

`luatex --help`

verás muchas opciones de línea de comandos compatibles con ese motor:

```
Uso: luatex --lua=FILE [OPTION]... [TEXNAME[.tex]] [COMMANDS]
   o: luatex --lua=FILE [OPTION]... \FIRST-LINE
   o: luatex --lua=FILE [OPTION]... &FMT ARGS
  Ejecuta LuaTeX sobre TEXNAME, normalmente creando TEXNAME.pdf.
  Cualquier COMMANDS restante se procesa como entrada de luatex, después de leer TEXNAME.

  Alternativamente, si el primer argumento que no es una opción comienza con una barra invertida,
  luatex interpreta todos los argumentos que no son opciones como una línea de entrada.

  Alternativamente, si el primer argumento que no es una opción comienza con un &,
  la siguiente palabra se toma como el FMT que se va a leer, anulando todo lo demás. Cualquier
  argumento restante se procesa como arriba.

  Si no se especifican argumentos ni opciones, solicita entrada.

  Se entienden las siguientes opciones normales:

   --credits                     muestra los créditos y sale
   --debug-format                habilita la depuración del formato
   --draftmode                   activa el modo borrador (no genera salida PDF)
   --[no-]file-line-error        desactiva/activa mensajes con estilo file:line:error
   --[no-]file-line-error-style  alias de --[no-]file-line-error
   --fmt=FORMAT                  carga el archivo de formato FORMAT
   --halt-on-error               detiene el procesamiento en el primer error
   --help                        muestra la ayuda y sale
   --ini                         ser iniluatex, para volcar formatos
   --interaction=STRING          establece el modo de interacción (STRING=batchmode/nonstopmode/scrollmode/errorstopmode)
   --jobname=STRING              establece el nombre del trabajo en STRING
   --kpathsea-debug=NUMBER       establece las banderas de depuración de búsqueda de rutas según los bits de NUMBER
   --lua=FILE                    carga y ejecuta un script de inicialización de lua
   --[no-]mktex=FMT              desactiva/activa la generación de mktexFMT (FMT=tex/tfm)
   --nosocket                    desactiva la biblioteca lua socket
   --output-comment=STRING       usa STRING para el comentario del archivo DVI en lugar de la fecha (sin efecto para PDF)
   --output-directory=DIR        usa DIR existente como directorio en el que escribir los archivos
   --output-format=FORMAT        usa FORMAT para la salida del trabajo; FORMAT es 'dvi' o 'pdf'
   --progname=STRING             establece el nombre del programa en STRING
   --recorder                    habilita el registrador de nombres de archivo
   --safer                       desactiva comandos lua fácilmente explotables
   --[no-]shell-escape           desactiva/activa comandos del sistema
   --shell-restricted            restringe los comandos del sistema a una lista de comandos dada en texmf.cnf
   --synctex=NUMBER              habilita synctex (consulta man synctex)
   --utc                         inicializa la hora en UTC
   --version                     muestra la versión y sale

Se pueden obtener modelos de comportamiento alternativos mediante interruptores especiales

  --luaonly                      ejecuta un archivo lua y luego sale
  --luaconly                     compila un archivo lua a bytecode y luego sale
  --luahashchars                 los bits usados por el intérprete actual de Lua para el hash de cadenas

Consulta el manual de referencia para más información sobre el proceso de inicio.

Envía los informes de errores por correo a dev-luatex@ntg.nl.
```

Entre esas muchas opciones hay dos que aquí son relevantes:

```
--ini              ser iniluatex, para volcar formatos
--fmt=FORMAT       carga el archivo de formato FORMAT
```

Aquí, LuaTeX se refiere a su modo INI con el nombre de `iniluatex`. Entonces, ¿qué significa esto `iniluatex` (modo INI) realmente? Una pequeña pista es la segunda opción de línea de comandos mostrada arriba:

```
--fmt=FORMAT       carga el archivo de formato FORMAT
```

### ¿Modo INI? ¿Archivos de formato? Estoy confundido...

Los paquetes de macros, como LaTeX, son grandes colecciones de macros complejas: cargar y procesar el texto sin procesar de todos los archivos constituyentes sí supone cierto costo de tiempo y computación; por ejemplo:

* leer y examinar decenas de miles de caracteres individuales de texto;
* analizar, procesar y almacenar cientos de macros/comandos;
* inicializar tablas internas de fuentes y datos de separación silábica.

Todo esto tiene que ocurrir, y los resultados almacenarse en memoria, antes de que el motor TeX esté realmente listo para procesar el documento TeX de un usuario que hace uso de las macros proporcionadas, por ejemplo, por las colecciones de macros Plain TeX o LaTeX. Puedes pensar en esto como el proceso de arranque de un motor TeX: preparativos esenciales antes de que esté listo para procesar tu documento.

Quizá reflejando la tecnología de su época, los motores TeX ofrecen un atajo para procesar archivos de texto llenos de colecciones de macros: cargar binarios preprocesados (*formato*)

Cuando se coloca en modo INI, la tarea de un motor TeX no es hacer composición tipográfica, sino:

1. cargar e inicializar todos sus comandos primitivos, además de configurar lo mínimo indispensable de los catcodes (y otros códigos) para que el motor TeX pueda comenzar un procesamiento adicional.
2. una vez hecho (1), cargará y procesará una colección de macros proporcionada por el usuario, denominada un "formato" (por ejemplo, Plain TeX o la colección de macros LaTeX).
3. después de haber completado con éxito (1) y (2), TeX realizará un "volcado binario del cerebro" de todo lo que se ha cargado y procesado en su memoria y lo escribirá en un archivo binario *formato* de (por ejemplo, `lualatex.fmt`).

Un archivo de formato es un archivo binario que almacena una representación del "estado mental" de TeX después de haber inicializado numerosas tablas internas de datos (incluidas las primitivas) y procesado todos los comandos de macro presentes en la colección de macros proporcionada por el usuario. Los motores TeX hacen esto porque es más rápido cargar un archivo binario "precompilado" que reprocesar las macros sin procesar cada vez que quieres ejecutar un motor TeX usando, por ejemplo, las macros Plain TeX de Knuth o el paquete de macros LaTeX, o de hecho cualquier paquete de macros diseñado como un "formato".

Cuando procesas un documento que va a ser compuesto con LaTeX, por ejemplo, el motor TeX no vuelve a leer (reprocesar) todas las macros centrales de LaTeX, sino que carga un archivo binario llamado, por ejemplo, `lualatex.fmt`. Los detalles internos de los archivos de formato son específicos de cada motor TeX y de cada versión del paquete de macros usado para generar un `.fmt` archivo. Por ejemplo, si actualizas tu distribución de LaTeX (es decir, el núcleo de LaTeX en sí, no los paquetes adicionales), entonces quizá también necesites generar un nuevo `.fmt` archivo.

### Ejemplo

Dentro de la distribución del código fuente de LaTeX encontrarás archivos con una `.ini` extensión, por ejemplo lualatex.ini, que se usan para generar `.fmt` archivos; esos `.ini` archivos suelen contener código de inicialización específico del motor y luego proceden a incluir los archivos de macros centrales de LaTeX. Por ejemplo, si ejecutas LuaTeX con la siguiente línea de comandos:

`luatex --ini lualatex.ini`

LuaTeX escribirá un archivo llamado `lualatex.fmt`

En el momento de escribir esto, `lualatex.ini` contiene el siguiente código:

```
% tex-ini-files 2016-04-15: lualatex.ini
% Escrito originalmente en 2008 por Karl Berry. Dominio público.

\input luatexconfig.tex

\begingroup
  \catcode`\{=1 %
  \catcode`\}=2 %
  % Configurar el entrecomillado del nombre del trabajo antes de latex.ltx
  % Web2c pdfTeX/XeTeX entrecomillan los nombres de trabajo que contienen espacios, pero LuaTeX no
  % hace esto a nivel del motor. El comportamiento se puede cambiar usando
  % una devolución de llamada. Originalmente este código se cargaba mediante lualatexquotejobname.tex
  % pero eso requería un truco alrededor de latex.ltx: el comportamiento se ha modificado
  % para permitir que se use directamente la ruta de la devolución de llamada.
  \global\everyjob{\directlua{require("lualatexquotejobname.lua")}}
\endgroup

\input latex.ltx
```

`lualatex.ini` empieza incluyendo un archivo llamado `luatexconfig.tex` que realiza alguna inicialización específica de LuaTeX, como cabría esperar de un archivo de `.ini` (inicialización). ¡archivo! En la última línea incluye `latex.ltx` lo que hace que LuaTeX lea y procese las macros centrales de LaTeX.

Después de que LuaTeX termine de procesar `lualatex.ini` escribirá el *archivo de formato* binario `lualatex.fmt`llamado `.fmt` . Una vez que el código de LaTeX se ha compilado en un formato binario, LuaTeX (o cualquier otro motor TeX) puede leer muy rápidamente el

archivo para arrancar e inicializar sus tablas internas de definiciones de macros, fuentes, etc.; no tiene que someterse al largo proceso de leer y procesar los muchos miles de caracteres contenidos en el paquete de macros LaTeX. `yourfile.tex` (usando el `lualatex` archivo de formato) mediante el comando:

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

`.fmt` Los archivos suelen ser específicos de un motor concreto: por ejemplo, los archivos de LuaTeX `.fmt` generalmente no son portables para usarse con un motor TeX diferente: por ejemplo, pdfTeX o XeTeX. Además, si el ejecutable de LuaTeX se actualiza con nuevas funciones, es muy posible que un `.fmt` archivo preparado con una versión anterior de LuaTeX no funcione con el nuevo motor: tendrías que reconstruir (recompilar) el `.fmt` archivo.

Si intentas usar un `.fmt` archivo incompatible, entonces un motor TeX no podrá cargarlo y responderá con el error:

```
Error fatal de archivo de formato; estoy atascado
```

De forma similar, si se actualizan las macros centrales de LaTeX, quizá también necesites reconstruir los `lualatex.fmt` archivo.

`.fmt` archivos pueden prepararse a partir de cualquier paquete de macros adecuado, no solo LaTeX; por ejemplo, las macros originales, y mucho más simples, de "Plain" TeX de Knuth también pueden procesarse para generar un `.fmt` archivo. Podrías, si tuvieras tiempo, escribir tu propia colección de macros y producir un archivo de formato para ese paquete; ten en cuenta que en algún lugar de tu paquete de macros tendrías que invocar el comando primitivo `\dump` que le dice al motor TeX que haga su "volcado binario del cerebro" y escriba el `.fmt` archivo.

Sin embargo, la gran mayoría de los usuarios nunca necesita preocuparse por el modo "INI" de los motores TeX, ni por el proceso de generar `.fmt` archivos: Overleaf y la distribución TeX Live te protegen de esos detalles, a menos que necesites ir a buscarlos.


---

# 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/es/articulos-en-profundidad/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.
