====== 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) }}