====== Comment gérer des compteurs? ======

Un certain nombre de compteurs sont prédéfinis en <latex>\LaTeX</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 :

<code latex>
\newcounter{nom}[maitre]
</code>

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 « [[https://www.latex-fr.net/2_programmation/syntaxe/compteurs/compteurs_maitres_et_esclaves|Comment définir un compteur dépendant d'un autre compteur ?]] »).

La définition d'un compteur s'accompagne de la création d'une commande nommée ''\the//compteur//'', 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 « [[https://www.latex-fr.net/2_programmation/syntaxe/compteurs/comment_fonctionnent_les_compteurs|Comment redéfinir les commandes de compteur \the(...) ?]] »). 

Par défaut, la valeur initiale d'un compteur est 0, comme le montre cet exemple :

<WRAP column 40ex>
<code latex>
\newcounter{moutons}
Comptons les moutons : 
\themoutons{} moutons !
</code>
</WRAP>

<WRAP column 40ex>
<latex>
\newcounter{moutons}
Comptons les moutons : \themoutons{} moutons !
</latex>
</WRAP>
<WRAP clear />


===== Changer la valeur d'un compteur =====

Pour incrémenter cette valeur, on peut utiliser une des deux commandes suivantes :

<code latex>
\stepcounter{compteur}
\refstepcounter{compteur}
</code>

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) :
<code latex>
\addtocounter{compteur}{valeur} 
</code>

Une autre commande lui donne une //valeur// (entière) particulière :

<code latex>
\setcounter{compteur}{valeur}
</code>

Voici un exemple d'utilisation :

<WRAP column 40ex>
<code latex>
\newcounter{moutons}
\stepcounter{moutons}
Comptons les moutons :
\themoutons{} mouton,
\stepcounter{moutons}
\themoutons{} moutons,
\setcounter{moutons}{4}
\alpha{moutons} moutons...
\addtocounter{moutons}{-1}
Ah non, \themoutons{} moutons.
</code>
</WRAP>

<WRAP column 40ex>
<latex>
\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.
</latex>
</WRAP>
<WRAP clear />

===== Obtenir la valeur d'un compteur =====

Pour récupérer la valeur d'un compteur, outre la commande ''\the//compteur//'', on peut utiliser les commandes ''\arabic'', ''\roman'', ''\alph'' et autres décrites à la question [[https://www.latex-fr.net/2_programmation/syntaxe/compteurs/les_differents_compteurs|Quels sont les différents styles de compteur ?]]. Ces commandes mettent en forme différemment le compteur cité. 

<WRAP column 40ex>
<code latex>
\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.
</code>
</WRAP>

<WRAP column 40ex>
<latex>
\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.
</latex>
</WRAP>
<WRAP clear />

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 : 

<code latex>
\newcounter{section}[chapter]
\renewcommand{\thesection}%
             {\thechapter.\roman{section}}
</code>

{{htmlmetatags>metatag-keywords=(LaTeX,programmation,compteurs,dépendance)
metatag-og:title=(Comment gérer des compteurs)
metatag-og:site_name=(FAQ LaTeX francophone)
}}