====== 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 :
\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|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 « [[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 :
\newcounter{moutons}
Comptons les moutons :
\themoutons{} moutons !
\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 :
\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) :
\addtocounter{compteur}{valeur}
Une autre commande lui donne une //valeur// (entière) particulière :
\setcounter{compteur}{valeur}
Voici un exemple d'utilisation :
\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.
\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 ''\the//compteur//'', on peut utiliser les commandes ''\arabic'', ''\roman'', ''\alph'' et autres décrites à la question [[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é.
\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.
\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 :
\newcounter{section}[chapter]
\renewcommand{\thesection}%
{\thechapter.\roman{section}}
{{htmlmetatags>metatag-keywords=(LaTeX,programmation,compteurs,dépendance)
metatag-og:title=(Comment gérer des compteurs)
metatag-og:site_name=(FAQ LaTeX francophone)
}}