--- myst: html_meta: keywords: LaTeX,programmation,compteurs,dépendance --- # Comment gérer des compteurs ? Un certain nombre de compteurs sont prédéfinis en LaTeX. Par exemple, les compteurs de page, de chapitre, de section, de note de bas de page... ## Créer un compteur Pour utiliser un nouveau compteur, il faut avant tout le déclarer. Cela se fait par l'intermédiaire de la commande suivante : ```{noedit} \newcounter{nom}[maitre] ``` L'argument obligatoire contient le *nom* du nouveau compteur (qui est un nom ne commençant pas par une contre-oblique), et l'argument optionnel est le nom d'un compteur « maître » (ici nommé *maitre*) qui, lorsqu'il est modifié, remet à zéro le compteur nouvellement défini (voir la question « [](/2_programmation/syntaxe/compteurs/compteurs_maitres_et_esclaves) »). La définition d'un compteur s'accompagne de la création d'une commande nommée `\thecompteur`, dont le rôle est d'afficher la valeur du compteur dénommé *compteur* (cette commande peut cependant être redéfinie comme indiquée plus bas mais il vaut mieux ici consulter la question « [](/2_programmation/syntaxe/compteurs/comment_fonctionnent_les_compteurs) »). Par défaut, la valeur initiale d'un compteur est 0, comme le montre cet exemple : ``` \newcounter{moutons} Comptons les moutons : \themoutons{} moutons ! ``` ## Changer la valeur d'un compteur Pour incrémenter cette valeur, on peut utiliser une des deux commandes suivantes : ```{noedit} \stepcounter{compteur} \refstepcounter{compteur} ``` La différence est que, dans le deuxième cas, le compteur incrémenté sert de compteur « de référence » pour la prochaine commande `\label`. Cette dernière prend toujours la valeur du dernier compteur qui a été incrémenté par la commande `\refstepcounter`. Une commande permet d'augmenter un compteur d'un certaine *valeur* (un entier positif ou négatif) : ```{noedit} \addtocounter{compteur}{valeur} ``` Une autre commande lui donne une *valeur* (entière) particulière : ```{noedit} \setcounter{compteur}{valeur} ``` Voici un exemple d'utilisation : ``` \newcounter{moutons} \stepcounter{moutons} Comptons les moutons : \themoutons{} mouton, \stepcounter{moutons} \themoutons{} moutons, \setcounter{moutons}{4} \themoutons{} moutons... \alph{moutons} moutons... \addtocounter{moutons}{-1} Ah non, \themoutons{} moutons. ``` ## Obtenir la valeur d'un compteur Pour récupérer la valeur d'un compteur, outre la commande `\thecompteur`, on peut utiliser les commandes `\arabic`, `\roman`, `\alph` et autres décrites à la question [](/2_programmation/syntaxe/compteurs/les_differents_compteurs). Ces commandes mettent en forme différemment le compteur cité. ``` \newcounter{moutons} \stepcounter{moutons} Comptons les moutons : \themoutons{} mouton, \stepcounter{moutons} % en chiffres arabes (par défaut) \arabic{moutons} moutons, \stepcounter{moutons} % en chiffres romains \roman{moutons} moutons, \stepcounter{moutons} % en lettres \alph{moutons} moutons. ``` En voici un exemple plus complexe avec un compteur avec dépendance. Le compteur *section* dépend du compteur *chapter* et sa numérotation sera celle du chapitre suivi d'un point et du numéro de section mis en chiffres romains : ```{noedit} \newcounter{section}[chapter] \renewcommand{\thesection}% {\thechapter.\roman{section}} ```