> 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/mas-temas/39-mltex-enctex-and-synctex-tex-extensions.md).

# Extensiones de TeX MLTeX, EncTeX y SyncTeX

## Algunos detalles de contexto sobre las extensiones de TeX

TeX tiene una larga historia de desarrollo, ¡ya más de 4 décadas! Durante ese tiempo se han desarrollado nuevas “versiones” de TeX, como e-TeX, pdfTeX, XeTeX, LuaTeX, y así sucesivamente. Además de motores completamente nuevos, con todo un conjunto de funciones extra, ha habido varias *extensiones* que suelen centrarse en implementar una característica específica para mejorar el software original de Knuth.

Con la llegada de los motores modernos de TeX, como XeTeX y LuaTeX, la necesidad de algunas extensiones heredadas de TeX, y su uso, ha disminuido, ya que los motores más nuevos de TeX aportan una potente funcionalidad adicional, como el soporte integrado para texto codificado en UTF-8. El propósito de esta página es ofrecer algunas notas sobre extensiones, incluidas MLTeX y EncTeX, que quizá todavía veas mencionadas en una [opciones de línea de comandos de un motor de TeX](/latex/es/mas-temas/44-tex-engine-command-line-options-for-pdftex-xetex-and-luatex.md). MLTeX y EncTeX ya no se desarrollan, pero una extensión muy útil, SyncTeX, sigue desarrollándose activamente y cuenta con el apoyo de Overleaf.

## MLTeX

*TeX multilingüe*, o MLTeX, se desarrolló entre 1992 y 1995 como una modificación de TeX para permitir la separación silábica de palabras con letras acentuadas usando fuentes ordinarias Computer Modern (CM).

### Activando (habilitando) MLTeX

MLTeX está diseñado para funcionar como parte de un llamado `.fmt` (archivo de formato), que, en efecto, es una versión binaria precompilada de un conjunto de macros de TeX. Para crear archivos de formato, pones un motor de TeX en su llamado `INI` modo INI, procesas la colección de macros y luego emites el `\dump` comando para escribir el `.fmt` archivo. Véase [este artículo](/latex/es/articulos-en-profundidad/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md) para una discusión de los modos INI.

Para habilitar MLTeX, *para aquellos motores que lo soportan*, como pdfTeX, escribirías

```
pdftex -ini -mltex *pdfetex.ini
```

donde `pdfetex.ini` es un archivo incluido en la distribución de TeX Live.

**¿Por qué el asterisco (`*`)?** El asterisco pone a pdfTeX en el llamado “modo extendido”, que habilita el soporte de los primitivos de e-TeX. Si lo omites y escribes `pdftex -ini -mltex pdfetex.ini` recibirás un error:

```
Este es pdfTeX, Versión 3.14159265-2.6-1.40.19 (INITEX)
 \write18 habilitado.
MLTeX v2.2 habilitado
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

¡error fatal de e-TeX: este archivo solo puede procesarse en modo extendido;
  ¿quizá olvidaste el asterisco?
```

**Nota**: En lugar de usar un asterisco para habilitar el “modo extendido”, puedes usar la `-etex` opción de línea de comandos en su lugar:

```
pdftex -ini -etex -mltex pdfetex.ini
```

**Nota**: Usar la `-mltex` opción en la línea de comandos con un `.fmt` archivo que fue *no generado* con MLTeX habilitado no *contiene* funcionará: MLTeX debe “activarse” mediante un archivo de formato apropiado.

Cuando usas la `-mltex` opción durante `.fmt` la creación del archivo, se escribe en el archivo una variable booleana con un valor de “true”, `.fmt` archivo indicando al motor de TeX que las extensiones MLTeX han sido activadas y deben ponerse a disposición del usuario. Si no estableces explícitamente la `-mltex` opción, entonces la variable correspondiente será “false”. Si el valor de esa variable se detecta como “false” (cuando ese `.fmt` archivo se vuelve a cargar durante una ejecución de TeX), entonces intentar usar las extensiones MLTeX dará lugar a un `Comando no definido...` error—porque los primitivos de MLTeX no habrán sido registrados (cargados) y, por lo tanto, no se reconocen.

Después de ejecutar `pdftex -ini -mltex *pdfetex.ini` en la línea de comandos, verás algo similar al siguiente texto, que muestra que MLTeX v2.2 está habilitado:

```
Este es pdfTeX, Versión 3.14159265-2.6-1.40.19 (INITEX)
\write18 habilitado.
entrando en modo extendido
MLTeX v2.2 habilitado
....
....
....
Comenzando a volcar en el archivo pdfetex.fmt
....
No hay páginas de salida.
Transcripción escrita en pdfetex.log.
```

Esto da como resultado un `.fmt` archivo llamado `pdfetex.fmt` que te permite usar los comandos de MLTeX:

```
pdftex -fmt=pdfetex <yourfile.tex>
```

donde `<tuarchivo.tex>` puede hacer uso de los primitivos específicos de MLTeX

MLTeX se distribuyó originalmente como un archivo de cambios separado, [mltex.ch](http://tug.ctan.org/systems/generic/mltex/mltex.ch), que podía fusionarse con el código fuente maestro de Knuth ([`tex.web`](https://ctan.org/tex-archive/systems/knuth/dist/tex?lang=en)) para derivar una nueva versión de TeX, llamada MLTeX, que contenía una serie de nuevos primitivos. Hoy en día, el código MLTeX de `mltex.ch` está subsumido en el principal `tex.ch` archivo de cambios que se usa para construir casi todos los motores de TeX.

### Primitivos de MLTeX

Las siguientes notas están preparadas en su mayor parte y reproducidas del archivo `web2c.info` contenido en la [TeX Live](https://tug.org/texlive/) distribución.

* **`\charsubdef`**: Definiciones de sustitución de caracteres. Declara cómo construir un glifo de carácter acentuado (que no necesariamente existe en la fuente actual) usando dos glifos de carácter (que sí existen).

  ```
  \charsubdef COMPOSITE [=] ACCENT BASE
  ```

  Cada uno de COMPOSITE, ACCENT y BASE es un número de glifo de fuente, expresado en la sintaxis habitual de TeX: \`\e simbólicamente, '145 para octal, \\"65 para hexadecimal, 101 para decimal. Así, define si un código de glifo de carácter, ya sea tecleado como un solo carácter o usando el `\char` primitivo, se mapeará a un glifo de fuente o a una `\accent` construcción de glifo.

  Por ejemplo, si asumes el código de glifo 138 (decimal) para una e con circunflejo y estás usando las fuentes Computer Modern, que tienen el acento circunflejo en la posición 18 y la ‘e’ minúscula en la posición ASCII habitual 101 decimal, usarías `\charsubdef` de la siguiente manera:

  ```
  \charsubdef 138 = 18 101
  ```
* **`\charsubdefmax`**: Establece el valor más grande en la `\charsubdef` lista. Por ejemplo:

  ```
  \charsubdefmax=-1 % deshabilita todas las sustituciones
  \charsubdefmax=256 % habilita todas las sustituciones
  ```
* **`\tracingcharsubdef`**: Seguimiento de sustituciones. Para ayudar a diagnosticar problemas con `\charsubdef`, MLTeX proporciona un parámetro primitivo, `\tracingcharsubdef`. `\charsubdef` Si es positivo, cada uso de

## EncTeX

EncTeX se desarrolló entre 1997 y 2004 como una extensión de TeX que proporciona una recodificación flexible de la entrada/salida mediante la adición de nuevos primitivos; por ejemplo, un medio de traducir la entrada al pasar a TeX. Permite, por ejemplo, la traducción de secuencias multibyte, como la codificación UTF-8, para su uso en motores estándar de TeX de 8 bits.

### Activando (habilitando) EncTeX

Al igual que MLTeX, EncTeX también está diseñado para funcionar como parte de un llamado `.fmt` (archivo de formato)—véase [MLTeX](#mltex), arriba, para una explicación de los archivos de formato/modo INI.

Para habilitar EncTeX, *para aquellos motores que lo soportan*, como pdfTeX, crearías un archivo de formato habilitado para EncTeX escribiendo

```
pdftex -ini -enc *pdfetex.ini
```

donde `pdfetex.ini` es un archivo incluido en la distribución de TeX Live.

**¿Por qué el asterisco (`*`)?** El asterisco pone a pdfTeX en el llamado “modo extendido”, que habilita el soporte de los primitivos de e-TeX. Si lo omites y escribes `pdftex -ini -mltex pdfetex.ini` recibirás un error:

```
Este es pdfTeX, Versión 3.14159265-2.6-1.40.19 (INITEX)
 \write18 habilitado.
MLTeX v2.2 habilitado
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

¡error fatal de e-TeX: este archivo solo puede procesarse en modo extendido;
  ¿quizá olvidaste el asterisco?
```

**Nota**: En lugar de usar un asterisco para habilitar el “modo extendido”, puedes usar la `-etex` opción de línea de comandos en su lugar:

```
pdftex -ini -etex -mltex pdfetex.ini
```

El `-enc` la opción de línea de comandos hace que el motor pdfTeX habilite EncTeX escribiendo algunos datos en el `pdfetex.fmt` archivo de formato resultante.

**Nota**: Usar la `-enc` opción en la línea de comandos con un `.fmt` archivo que fue *no generado* con EncTeX habilitado *contiene* funcionará: EncTeX debe “activarse” mediante un archivo de formato generado apropiadamente.

### Primitivos de EncTeX

EncTeX añade 10 nuevos comandos primitivos a un motor de TeX:

* 3 primitivos en la versión inicial (1997):
* `\xordcode`
* `\xchrcode`
* `\xprncode`
* 7 primitivos adicionales (para soporte de UTF-8) en 2003:
* `\mubyte`
* `\endmubyte`
* `\mubytein`
* `\mubyteout`
* `\mubytelog`
* `\specialout`
* `\noconvert`

El uso y el comportamiento de estos primitivos están bien documentados en el [manual de referencia de EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf)escrito por el autor de EncTeX, Petr Olšák. Para evitar duplicaciones innecesarias aquí, se remite a los lectores interesados a ese documento.

### Más información sobre EncTeX

* [Segunda versión de EncTeX: soporte para UTF-8](http://mirrors.ctan.org/systems/enctex/eurotex2003-enctex.pdf): un artículo del autor de EncTeX, Petr Olšák.
* [manual de referencia de EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf) (en inglés).

### Activando (habilitando) tanto MLTeX como EncTeX

Para habilitar tanto MLTeX como EncTeX, generarías un archivo de formato adecuado usando una línea de comandos como

```
pdftex -ini -enc -mltex *pdfetex.ini
```

donde `pdfetex.ini` es un archivo incluido en la distribución de TeX Live.

**¿Por qué el asterisco (`*`)?** El asterisco pone a pdfTeX en el llamado “modo extendido”, que habilita el soporte de los primitivos de e-TeX. Si lo omites y escribes `pdftex -ini -enc -mltex pdfetex.ini` recibirás un error:

```
Este es pdfTeX, Versión 3.14159265-2.6-1.40.19 (INITEX)
 \write18 habilitado.
MLTeX v2.2 habilitado
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

¡error fatal de e-TeX: este archivo solo puede procesarse en modo extendido;
  ¿quizá olvidaste el asterisco?
```

**Nota**: En lugar de usar un asterisco para habilitar el “modo extendido”, puedes usar la `-etex` opción de línea de comandos en su lugar:

```
pdftex -ini -etex -enc -mltex pdfetex.ini
```

Después de ejecutar la línea de comandos anterior verías un mensaje, como el siguiente, para informarte de que tanto MLTeX como EncTeX están habilitados:

```
Este es pdfTeX, Versión 3.14159265-2.6-1.40.19 (INITEX)
 \write18 habilitado.
entrando en modo extendido
MLTeX v2.2 habilitado
 encTeX v. Jun. 2004, recodificación habilitada.
....
....
....
Comenzando a volcar en el archivo pdfetex.fmt
....
No hay páginas de salida.
Transcripción escrita en pdfetex.log.
```

y el `pdfetex.fmt` se produciría un archivo de formato, habilitando tanto MLTeX como EncTeX.

## SyncTeX

La extensión SyncTeX ha estado disponible desde 2008 y sigue siendo desarrollada activamente por su creador, Jérôme Laurens. Se usa ampliamente, incluso por Overleaf, y es compatible con todos los motores de TeX en uso hoy en día.

### ¿Qué hace SyncTeX?

Al ver un documento maquetado con TeX, quizá para revisarlo/comprobarlo antes de enviarlo a una editorial, podrías detectar un error y necesitar corregirlo en el código fuente de TeX. Sin embargo, encontrar la ubicación correcta en el archivo TeX puede ser difícil, especialmente si se trata de un documento extenso. Del mismo modo, podrías querer hacer lo contrario: saltar desde una posición en un archivo fuente de TeX directamente a la ubicación de la página en el PDF final maquetado. En ambos casos, existe la necesidad de *sincronizar* una ubicación concreta en un archivo TeX y su ubicación correspondiente dentro de una visualización de sus resultados maquetados: y eso es lo que proporciona SyncTeX: una forma de vincular automáticamente ubicaciones en archivos TeX con las posiciones de página en documentos maquetados.

Si SyncTeX está habilitado, escribe un archivo especial con la extensión `.synctex.gz` (comprimido con gz) o `.synctex` (sin comprimir) según las [opciones de línea de comandos proporcionadas a SyncTeX](#synoptions). Los editores de texto compatibles con SyncTeX y los visores de PDF (en su mayoría) pueden usar esos archivos para realizar la sincronización necesaria entre la entrada (código TeX) y la salida (visualización del PDF compuesto). Claramente, esto no puede simplemente “ocurrir” sin que el editor de texto y el visor de documentos PDF del usuario tengan la funcionalidad apropiada que permita la comunicación de las ubicaciones en el archivo de texto y en el visor de PDF—basada en datos contenidos en el `.synctex.gz` (o `.synctex`) archivo generado por SyncTeX.

Además de la funcionalidad dentro del motor de TeX—para generar `.synctex.gz` archivos—SyncTeX también proporciona un [analizador](https://github.com/jlaurens/synctex/) que lee `.synctex.gz` (o `.synctex`) archivos para extraer la información relevante sobre la ubicación de página/línea. Las aplicaciones usan ese analizador para proporcionar soporte para SyncTeX.

### Activando (habilitando) SyncTeX

Los motores de TeX con SyncTeX tienen dos formas de activar/desactivar SyncTeX:

* una opción de línea de comandos: `-synctex=NUMBER`
* un comando en el `.tex` archivo: el `\synctex` primitivas

### Usando SyncTeX en la línea de comandos

Puede usar el `-synctex=NUMBER` opción cuando ejecutas un motor de TeX que admite SyncTeX, como pdfTeX.

#### Ejemplos

* Habilitar SyncTeX: salida `.synctex.gz` (archivo comprimido con gz):

```
pdftex -synctex=1 myfile.tex
```

Produce `myfile.synctex.gz`

* Habilitar SyncTeX: salida `.synctex` (archivo sin comprimir):

```
pdftex -synctex=-1 myfile.tex
```

Produce `myfile.synctex`

* Deshabilitar SyncTeX:

```
pdftex -synctex=0 myfile.tex
```

No se produce salida de SyncTeX.

### El único primitivo de SyncTeX

SyncTeX proporciona un primitivo, `\synctex`, que los usuarios pueden añadir a sus `.tex` archivo personalizado:

* Habilitar SyncTeX: `\synctex=1`
* Deshabilitar SyncTeX: `\synctex=0`

### Más información sobre SyncTeX

* [Un artículo de TUGBoat de Jérôme Laurens](http://www.tug.org/TUGboat/tb29-3/tb93laurens.pdf), autor de SyncTeX.
* El [repositorio de GitHub](https://github.com/jlaurens/synctex) del analizador de SyncTeX.


---

# 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/mas-temas/39-mltex-enctex-and-synctex-tex-extensions.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.
