> 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/fr/autres-sujets/39-mltex-enctex-and-synctex-tex-extensions.md).

# Extensions TeX MLTeX, EncTeX et SyncTeX

## Quelques informations de contexte sur les extensions TeX

TeX a une longue histoire de développement — maintenant plus de 4 décennies ! Au cours de cette période, de nouvelles « versions » de TeX ont été développées — telles que e-TeX, pdfTeX, XeTeX, LuaTeX, etc. En plus de moteurs entièrement nouveaux, avec toute une série de fonctionnalités supplémentaires, il y a eu diverses *extensions* qui visent généralement à implémenter une fonctionnalité spécifique afin d’améliorer le logiciel original de Knuth.

Avec l’avènement des moteurs TeX modernes, tels que XeTeX et LuaTeX, le besoin de certaines extensions TeX héritées, ainsi que leur usage, a diminué, car les nouveaux moteurs TeX apportent de puissantes fonctionnalités supplémentaires — comme la prise en charge intégrée du texte encodé en UTF-8. Le but de cette page est de fournir quelques notes sur des extensions, notamment MLTeX et EncTeX, que vous pourriez encore voir mentionnées dans des [options de ligne de commande d’un moteur TeX](/latex/fr/autres-sujets/44-tex-engine-command-line-options-for-pdftex-xetex-and-luatex.md). MLTeX et EncTeX ne sont plus développés, mais une extension très utile, SyncTeX, continue d’être activement développée et est prise en charge par Overleaf.

## MLTeX

*TeX multilingue*, ou MLTeX, a été développé entre 1992 et 1995 comme une modification de TeX permettant la césure des mots contenant des lettres accentuées à l’aide des polices ordinaires Computer Modern (CM).

### Activation de MLTeX

MLTeX est conçu pour fonctionner dans le cadre d’un soi-disant `.fmt` (fichier de format), qui est, en pratique, une version binaire précompilée d’un ensemble de macros TeX. Pour créer des fichiers de format, vous placez un moteur TeX dans son soi-disant `INI` mode, traitez la collection de macros puis exécutez la `\dump` commande pour écrire le `.fmt` fichier. Voir [cet article](/latex/fr/articles-approfondis/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md) pour une discussion des modes INI.

Pour activer MLTeX, *pour les moteurs qui le prennent en charge*, comme pdfTeX, vous écririez

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

où `pdfetex.ini` est un fichier contenu dans la distribution TeX Live.

**Pourquoi l’astérisque (`*`)?** L’astérisque place pdfTeX dans le « mode étendu », ce qui permet la prise en charge des primitives e-TeX. Si vous l’omettez et tapez `pdftex -ini -mltex pdfetex.ini` vous obtiendrez une erreur :

```
Voici pdfTeX, version 3.14159265-2.6-1.40.19 (INITEX)
 \write18 activé.
MLTeX v2.2 activé
(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

! erreur fatale e-TeX : ce fichier ne peut être traité qu’en mode étendu ;
  avez-vous peut-être oublié l’astérisque ?
```

**Remarque**: Au lieu d’utiliser un astérisque pour activer le « mode étendu », vous pouvez utiliser `-etex` l’option de ligne de commande à la place :

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

**Remarque**: En utilisant l’option `-mltex` dans la ligne de commande avec un `.fmt` fichier qui a été *non généré* avec MLTeX activé fonctionnera *pas* fonctionnera : MLTeX doit être « activé » via un fichier de format approprié.

Lorsque vous utilisez l’option `-mltex` pendant `.fmt` la création du fichier, une variable booléenne ayant la valeur « true » est écrite dans le `.fmt` fichier, indiquant au moteur TeX que les extensions MLTeX ont été activées et doivent être mises à disposition de l’utilisateur. Si vous ne définissez pas explicitement l’option `-mltex` alors la variable correspondante sera « false ». Si la valeur de cette variable est détectée comme « false » (lorsque ce `.fmt` fichier est rechargé pendant une exécution TeX), alors essayer d’utiliser les extensions MLTeX entraînera `commande non définie...` une erreur — car les primitives MLTeX n’auront pas été enregistrées (chargées) et ne seront donc pas reconnues.

Après avoir exécuté `pdftex -ini -mltex *pdfetex.ini` sur la ligne de commande et vous verrez quelque chose de similaire au texte suivant, montrant que MLTeX v2.2 est activé :

```
Voici pdfTeX, version 3.14159265-2.6-1.40.19 (INITEX)
\write18 activé.
passage en mode étendu
MLTeX v2.2 activé
....
....
....
Début du vidage dans le fichier pdfetex.fmt
....
Aucune page de sortie.
Transcription écrite dans pdfetex.log.
```

Cela se traduit par un `.fmt` fichier appelé `pdfetex.fmt` qui vous permet d’utiliser les commandes MLTeX :

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

où `<yourfile.tex>` peut utiliser les primitives spécifiques à MLTeX

MLTeX a été distribué à l’origine comme un fichier de modification séparé, [mltex.ch](http://tug.ctan.org/systems/generic/mltex/mltex.ch), qui pouvait être fusionné avec le code source maître de Knuth ([`tex.web`](https://ctan.org/tex-archive/systems/knuth/dist/tex?lang=en)) pour dériver une nouvelle version de TeX, appelée MLTeX, qui contenait un certain nombre de nouvelles primitives. Aujourd’hui, le code MLTeX provenant de `mltex.ch` est intégré dans le principal `tex.ch` fichier de modification utilisé pour construire la quasi-totalité des moteurs TeX.

### Primitives MLTeX

Les notes suivantes ont été principalement préparées et reproduites à partir du fichier `web2c.info` contenu dans la [TeX Live](https://tug.org/texlive/) distribution.

* **`\charsubdef`**: Définitions de substitution de caractères. Déclare comment construire un glyphe de caractère accentué (n’existant pas nécessairement dans la police courante) à l’aide de deux glyphes de caractères (qui, eux, existent).

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

  Chacun de COMPOSITE, ACCENT et BASE est un numéro de glyphe de police, exprimé dans la syntaxe TeX habituelle : \`\e\` symboliquement, '145 pour l’octal, "65 pour l’hexadécimal, 101 pour le décimal. Ainsi, cela définit si un code de glyphe de caractère, saisi soit comme un seul caractère soit à l’aide de la primitive, sera mappé vers un glyphe de police ou vers une construction de glyphe. `\char` primitive, sera mappé vers un glyphe de police ou vers une `\accent` construction de glyphe.

  Par exemple, si vous supposez un code de glyphe 138 (décimal) pour un e-circonflexe et que vous utilisez les polices Computer Modern, qui ont l’accent circonflexe en position 18 et le « e » minuscule à la position ASCII habituelle 101 décimal, vous utiliseriez `\charsubdef` comme suit :

  ```
  \charsubdef 138 = 18 101
  ```
* **`\charsubdefmax`**: Définit la valeur la plus grande dans la `\charsubdef` liste. Par exemple :

  ```
  \charsubdefmax=-1 % désactiver toutes les substitutions
  \charsubdefmax=256 % activer toutes les substitutions
  ```
* **`\tracingcharsubdef`**: Tracé des substitutions. Pour aider à diagnostiquer les problèmes avec `\charsubdef`, MLTeX fournit un paramètre primitif, `\tracingcharsubdef`. Si la valeur est positive, chaque utilisation de `\charsubdef` sera signalée. Cela peut aider à repérer quand un caractère est redéfini.

## EncTeX

EncTeX a été développé entre 1997 et 2004 comme une extension de TeX qui fournit un réencodage flexible entrée/sortie grâce à l’ajout de nouvelles primitives — par exemple, un moyen de traduire l’entrée au moment de son arrivée dans TeX. Il permet, par exemple, la traduction de séquences multioctets, comme l’encodage UTF-8, pour une utilisation dans les moteurs TeX 8 bits standard.

### Activation d’EncTeX

Comme pour MLTeX, EncTeX est également conçu pour fonctionner dans le cadre d’un soi-disant `.fmt` (fichier de format) — voir [MLTeX](#mltex), ci-dessus, pour une explication des fichiers de format / du mode INI.

Pour activer EncTeX, *pour les moteurs qui le prennent en charge*, comme pdfTeX, vous créeriez un fichier de format activé pour EncTeX en écrivant

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

où `pdfetex.ini` est un fichier contenu dans la distribution TeX Live.

**Pourquoi l’astérisque (`*`)?** L’astérisque place pdfTeX dans le « mode étendu », ce qui permet la prise en charge des primitives e-TeX. Si vous l’omettez et tapez `pdftex -ini -mltex pdfetex.ini` vous obtiendrez une erreur :

```
Voici pdfTeX, version 3.14159265-2.6-1.40.19 (INITEX)
 \write18 activé.
MLTeX v2.2 activé
(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

! erreur fatale e-TeX : ce fichier ne peut être traité qu’en mode étendu ;
  avez-vous peut-être oublié l’astérisque ?
```

**Remarque**: Au lieu d’utiliser un astérisque pour activer le « mode étendu », vous pouvez utiliser `-etex` l’option de ligne de commande à la place :

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

Le `-enc` l’option de ligne de commande déclenche le moteur pdfTeX pour activer EncTeX en écrivant certaines données dans le `pdfetex.fmt` fichier de format résultant.

**Remarque**: En utilisant l’option `-enc` dans la ligne de commande avec un `.fmt` fichier qui a été *non généré* avec EncTeX activé fonctionnera *pas* fonctionnera : EncTeX doit être « activé » via un fichier de format généré de manière appropriée.

### Primitives EncTeX

EncTeX ajoute 10 nouvelles commandes primitives à un moteur TeX :

* 3 primitives dans la version initiale (1997) :
* `\xordcode`
* `\xchrcode`
* `\xprncode`
* 7 primitives supplémentaires (pour la prise en charge UTF-8) en 2003 :
* `\mubyte`
* `\endmubyte`
* `\mubytein`
* `\mubyteout`
* `\mubytelog`
* `\specialout`
* `\noconvert`

L’utilisation et le comportement de ces primitives sont bien documentés dans le [manuel de référence EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf), rédigé par l’auteur d’EncTeX, Petr Olšák. Pour éviter ici des doublons inutiles, les lecteurs intéressés sont renvoyés à ce document.

### Informations supplémentaires sur EncTeX

* [Deuxième version d’EncTeX : prise en charge d’UTF-8](http://mirrors.ctan.org/systems/enctex/eurotex2003-enctex.pdf): un article de l’auteur d’EncTeX, Petr Olšák.
* [manuel de référence EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf) (en anglais).

### Activation de MLTeX et d’EncTeX

Pour activer à la fois MLTeX et EncTeX, vous généreriez un fichier de format approprié à l’aide d’une ligne de commande telle que

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

où `pdfetex.ini` est un fichier contenu dans la distribution TeX Live.

**Pourquoi l’astérisque (`*`)?** L’astérisque place pdfTeX dans le « mode étendu », ce qui permet la prise en charge des primitives e-TeX. Si vous l’omettez et tapez `pdftex -ini -enc -mltex pdfetex.ini` vous obtiendrez une erreur :

```
Voici pdfTeX, version 3.14159265-2.6-1.40.19 (INITEX)
 \write18 activé.
MLTeX v2.2 activé
(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

! erreur fatale e-TeX : ce fichier ne peut être traité qu’en mode étendu ;
  avez-vous peut-être oublié l’astérisque ?
```

**Remarque**: Au lieu d’utiliser un astérisque pour activer le « mode étendu », vous pouvez utiliser `-etex` l’option de ligne de commande à la place :

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

Après avoir exécuté la ligne de commande ci-dessus, vous verriez un message, tel que le suivant, indiquant que MLTeX et EncTeX sont tous deux activés :

```
Voici pdfTeX, version 3.14159265-2.6-1.40.19 (INITEX)
 \write18 activé.
passage en mode étendu
MLTeX v2.2 activé
 encTeX v. Jun. 2004, réencodage activé.
....
....
....
Début du vidage dans le fichier pdfetex.fmt
....
Aucune page de sortie.
Transcription écrite dans pdfetex.log.
```

et le `pdfetex.fmt` un fichier de format, activant à la fois MLTeX et EncTeX, serait produit.

## SyncTeX

L’extension SyncTeX est disponible depuis 2008 et continue d’être activement développée par son créateur, Jérôme Laurens. Elle est largement utilisée, notamment par Overleaf, et est prise en charge par tous les moteurs TeX utilisés aujourd’hui.

### Que fait SyncTeX ?

Lorsque vous consultez un document mis en page par TeX, peut-être pour le relire/vérifier avant de le soumettre à un éditeur, vous pourriez repérer une erreur et devoir la corriger dans le code source TeX. Cependant, trouver l’emplacement exact dans le fichier TeX peut être délicat, surtout s’il s’agit d’un document volumineux. De même, vous pourriez vouloir faire l’inverse : passer d’une position dans un fichier source TeX directement à l’emplacement de la page dans le PDF final mis en page. Dans les deux cas, il faut *synchroniser* un emplacement particulier dans un fichier TeX et son emplacement correspondant au sein d’un affichage de ses résultats mis en page : et c’est ce que SyncTeX fournit — un moyen de lier automatiquement les emplacements dans les fichiers TeX avec les positions des pages dans les documents mis en page.

Si SyncTeX est activé, il écrit un fichier spécial avec l’extension `.synctex.gz` (compressé gz) ou `.synctex` (non compressé) selon les [options de ligne de commande fournies à SyncTeX](#synoptions). Les éditeurs de texte compatibles avec SyncTeX et (pour la plupart) les visionneuses PDF peuvent utiliser ces fichiers pour effectuer la synchronisation nécessaire entre l’entrée (code TeX) et la sortie (affichage du PDF mis en page). De toute évidence, cela ne peut pas simplement « se produire » sans que l’éditeur de texte et la visionneuse de documents PDF de l’utilisateur disposent d’une fonctionnalité appropriée permettant la communication des emplacements du fichier texte / de la visionneuse PDF — sur la base des données contenues dans le fichier `.synctex.gz` (ou `.synctex`) généré par SyncTeX.

En plus des fonctionnalités au sein du moteur TeX — pour générer `.synctex.gz` des fichiers — SyncTeX fournit également un [parseur](https://github.com/jlaurens/synctex/) spécial qui lit `.synctex.gz` (ou `.synctex`) les fichiers pour extraire les informations pertinentes sur l’emplacement des pages/lignes. Les applications utilisent ce parseur pour prendre en charge SyncTeX.

### Activation de SyncTeX

Les moteurs TeX compatibles avec SyncTeX ont deux façons d’activer/désactiver SyncTeX :

* une option de ligne de commande : `-synctex=NUMBER`
* une commande dans le `.tex` fichier : la `\synctex` primitives

### Utilisation de SyncTeX en ligne de commande

Vous pouvez utiliser la `-synctex=NUMBER` option lorsque vous exécutez un moteur TeX qui prend en charge SyncTeX, comme pdfTeX.

#### Exemples

* Activer SyncTeX : sortie `.synctex.gz` (fichier compressé gz) :

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

Produit `myfile.synctex.gz`

* Activer SyncTeX : sortie `.synctex` (fichier non compressé) :

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

Produit `myfile.synctex`

* Désactiver SyncTeX :

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

Aucune sortie SyncTeX n’est produite.

### La seule primitive de SyncTeX

SyncTeX fournit une primitive, `\synctex`, que les utilisateurs peuvent ajouter à leur `.tex` fichier :

* Activer SyncTeX : `\synctex=1`
* Désactiver SyncTeX : `\synctex=0`

### Informations supplémentaires sur SyncTeX

* [Un article TUGBoat de Jérôme Laurens](http://www.tug.org/TUGboat/tb29-3/tb93laurens.pdf), auteur de SyncTeX.
* Le [Dépôt GitHub](https://github.com/jlaurens/synctex) du parseur 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/fr/autres-sujets/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.
