> 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/01-a-six-part-series-how-do-tex-macros-actually-work.md).

# Une série en six parties : comment fonctionnent réellement les macros TeX ?

## À propos de cette série

Cette série d’articles a un objectif ambitieux : expliquer, pas à pas, *comment* comment fonctionnent réellement les macros TeX, telles que les commandes LaTeX, en explorant les processus qui se déroulent à l’intérieur du logiciel du moteur TeX. Elle tente de raconter l’histoire du comportement de traitement de TeX :

* la lecture des caractères d’entrée et l’utilisation des codes de catégorie ;
* la production de jetons de caractères et de commandes — et les formules qu’utilise TeX ;
* la manière dont TeX identifie, puis traite, les commandes TeX ;
* les détails internes du stockage des définitions de macros et des arguments de macro, sous forme de listes de jetons — à l’aide de graphiques produits à partir de données internes de TeX ;
* et se conclut par l’exploration de ce que l’expansion des macros *vraiment* signifie — en utilisant des données réelles provenant de l’intérieur d’un moteur TeX.

Cependant, comme les moteurs TeX sont des logiciels si complexes, nous ne pouvons espérer tout couvrir, mais nous avons essayé d’aborder les aspects les plus importants et essentiels des capacités de traitement des macros de TeX.

#### Barre de navigation

Chaque article comporte la barre de navigation suivante avant et après le texte afin que vous puissiez passer rapidement à un autre article de la série :

[Partie 1](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_1?preview=true) [Partie 2](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_2?preview=true) [Partie 3](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_3?preview=true) [Partie 4](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_4?preview=true) [Partie 5](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_5?preview=true) [Partie 6](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_6?preview=true)

### Partie 1 : Codes de catégorie

Cet article examine le raisonnement qui sous-tend le concept de codes de catégorie chez TeX : ce qu’ils sont et comment TeX les utilise pour filtrer son entrée en contenu à mettre en page et en commandes à exécuter.

### Partie 2 : Lire l’entrée à travers les « yeux » de TeX

À travers une série de graphiques, nous utilisons l’analogie éprouvée selon laquelle TeX a des « yeux » avec lesquels il lit (analyse) son entrée. Nous explorons des exemples de l’utilisation des codes de catégorie par TeX pour créer des jetons de caractères et la manière dont TeX reconnaît et traite les commandes en utilisant le code de catégorie 0 (« caractère d’échappement »).

### Partie 3 : Du texte d’entrée aux commandes

Cet article examine en profondeur la manière dont TeX reconnaît et traite les commandes détectées dans l’entrée. Nous explorons comment TeX stocke et récupère des informations sur les commandes : les codes de commande, les modificateurs de commande, et passons en revue quelques variables internes que TeX utilise pour stocker des informations sur les éléments lus dans l’entrée. Une partie de l’article relève d’un niveau assez bas et peut être ignorée lors d’une première lecture.

### Partie 4 : La structure d’une macro

Nous présentons et utilisons le « cadre » suivant pour décrire la structure des macros :

```
<primitive de macro TeX><nom de macro><texte de paramètre>{<texte de remplacement>}
```

Nous explorons ensuite toute une série d’exemples pour montrer le rôle et la fonction de la `<texte de paramètre>` en tant que « modèle de jetons » pouvant être construit grâce à l’utilisation de jetons agissant comme *délimiteurs*.

### Partie 5 : Listes de jetons et stockage interne des macros de TeX

Cet article explore en détail la manière dont TeX utilise des listes de jetons pour stocker les définitions de macros. À l’aide de nombreux schémas générés avec une version spécialement modifiée de TeX, nous explorons les jetons spécialisés que TeX utilise pour identifier et traiter les arguments de macro de l’utilisateur.

### Partie 6 : Expansion et traitement des macros

Dans la partie 6, nous utilisons des graphiques détaillés pour expliquer et explorer le sens exact de l’expansion des macros et les conséquences de la tokenisation par TeX des arguments de macro avant de les introduire dans une .

## Petite note : utiliser « TeX » et non LaTeX

Comme expliqué dans l’article [Ce qu’il y a dans un nom : guide des nombreuses variantes de TeX](/latex/fr/articles-approfondis/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) une grande variété de termes est utilisée pour désigner/décrire TeX, LaTeX et leurs dérivés. Par conséquent, il vaut la peine de clarifier brièvement notre usage/signification de « TeX » dans le contexte de cette série.

« TeX » est, de manière quelque peu confuse, à la fois le nom d’un programme exécutable et le nom d’un langage de composition. Pour distinguer les deux, le terme *moteur TeX* est utilisé pour différencier un programme TeX exécutable du langage de composition. Certaines données, informations et précisions spécifiques utilisées dans cette série proviennent d’un examen détaillé du code source du logiciel TeX original de Knuth, mais les principes décrits sont communs à tous les moteurs TeX. Ainsi, tout au long de notre discussion, l’emploi de « TeX » doit être compris comme désignant l’un des moteurs TeX exécutables — tels que le TeX original de Knuth, pdfTeX, XeTeX ou LuaTeX.

Dans les articles, nous utilisons la commande primitive TeX `\def` pour définir nos exemples de macros : nous n’utilisons pas la commande LaTeX `\newcommand` qui est presque certainement plus familière à la plupart des utilisateurs d’Overleaf. Il y a une très bonne raison à cela : notre objectif est de comprendre les principes fondamentaux qui sous-tendent le comportement des macros de TeX, mais pour cela nous devons utiliser les commandes de base (primitives) intégrées au logiciel TeX. Les commandes LaTeX, comme `\newcommand`, sont elles-mêmes des macros : des commandes dotées d’un comportement programmé spécifique et qui, en fin de compte, sont construites à partir de couches de commandes primitives TeX de niveau inférieur. Pour mieux comprendre le comportement fondamental de TeX, nous devons utiliser les primitives TeX, pas les macros LaTeX.

## Exemples et graphiques

Au lieu de nous appuyer uniquement sur une série de macros d’exemple conçues pour démontrer diverses fonctionnalités, cas limites et comportements de TeX, nous utilisons également un large éventail de graphiques pour regarder à l’intérieur de TeX lui-même et voir *comment* et *pourquoi* comment son traitement des macros fonctionne comme il le fait. Nombre des graphiques (listes de jetons/diagrammes de nœuds) ont été préparés à l’aide d’une version spécialement modifiée du TeX original de Knuth.

Overleaf a adapté le TeX de Knuth avec du code supplémentaire (écrit en C) qui « s’accroche » au traitement des macros de TeX et explore des données, ainsi que des structures de données, normalement inaccessibles aux utilisateurs. Chaque fois qu’une macro est appelée, le moteur TeX modifié génère des fichiers de sortie supplémentaires contenant des données dans un format qui peut être traité à l’aide de [Graphviz](https://www.graphviz.org/)Graphviz, un programme open source de visualisation de graphes. Le résultat final est constitué de graphiques (diagrammes de listes de nœuds) qui montrent exactement comment TeX stocke la définition d’une macro, ainsi qu’une représentation graphique de tous les arguments fournis par l’utilisateur lorsque la macro a été appelée.

Par nécessité, les objectifs de cette série exigent d’aborder un large éventail de sujets, dont beaucoup sont assez bas niveau et peuvent, au départ, sembler très éloignés de la tâche de composition de vos documents. Nous espérons qu’après cette plongée en profondeur, vous en ressortirez avec des bases vous permettant de mieux comprendre, ce qui, au final, vous fera gagner beaucoup de temps et, peut-être, réduira aussi votre niveau de frustration. Nous espérons également que les graphiques spécialement générés qui accompagnent cette série offriront un éclairage particulièrement précieux pour aider et soutenir les lecteurs dans leur quête d’une meilleure compréhension des macros TeX.

## La version personnalisée de TeX d’Overleaf

La vidéo montre une brève démonstration de la version modifiée de TeX d’Overleaf, adaptée pour générer des diagrammes de nœuds Graphviz (`.gv` fichiers)—aucun autre aspect du comportement de TeX n’est affecté par ces changements. Les `.gv` fichiers contiennent des représentations des listes de jetons TeX utilisées pour stocker les définitions de macros et les arguments de macro. La visualisation Graphviz est exportée en SVG, puis importée dans [Inkscape](https://inkscape.org/) pour une annotation supplémentaire avant d’incorporer le graphique dans un article.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/40EAwKxZnNwgxwe9SpAwNY/5bce5de21509f3324bc50527ec6815e7/texdemo.mp4>" %}


---

# 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/01-a-six-part-series-how-do-tex-macros-actually-work.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.
