--- myst: html_meta: keywords: LaTeX, programmation, syntaxe, registres --- # Comment prendre la main sur un registre de liste d'unités lexicales ? Manipuler un registre de liste d'unités lexicales utilisé par d'autres commandes peut parfois être nécessaire. Par exemple, lorsque vous voulez ajouter quelque chose à un tel registre du système (`\output` ou `\every*`), mais que vous savez que d'autres commandes utilisent également ce registre. C'est un cas fréquent avec `\everypar` car LaTeX change `\everypar` à chaque fois que l'on touche à quelque chose. La technique suivante, due à David Kastrup, fait ce dont vous avez besoin, et permet à une autre extension d'obtenir un résultat identique : ```{noedit} \let\monpkg@@everypar\everypar \newtoks\monpkg@everypar \monpkg@everypar\expandafter{\the\everypar} \monpkg@@everypar{\monpkg@ajout\the\monpkg@everypar} \def\monpkg@ajout{% ⟨choses à faire au début du registre⟩% } \let\everypar\monpkg@everypar ``` Comme vous pouvez le voir, ce code pour notre extension *monpkg* : - crée un alias pour le registre système `\everypar` (figé dans n'importe quel environnement, et continuant à utiliser l'original) ; - crée un registre pour récupérer `\everypar` et l'initialise avec le contenu actuel de `\everypar` ; - définit l'ancien `\everypar` pour qu'il exécute son propre code supplémentaire, ainsi que le contenu de son propre registre de jetons ; - définit la commande `\monpkg@ajout` pour le code supplémentaire ; et - fait pointer le registre `\everypar` vers le nouveau registre. Les noms de la forme `\monpkg@...` sont recommandés pour les noms internes des commandes des extensions LaTeX, c'est pourquoi cet exemple utilise des macros de cette forme. :::{sources} [Subverting a token register](faquk:FAQ-subverttoks) :::