Accueil > Trucs et astuces > Remettre à zéro le compteur d’exercices
Remettre à zéro le compteur d’exercices
Approfondir sa connaissance de LaTeX
jeudi 11 juillet 2024, par
Toutes les versions de cet article : [English] [français]
La commande \exo
permet de saisir des exercices numérotés (la version étoilée est non numérotée). Un de problèmes qui peuvent se poser est que le compteur n’est jamais remis à zéro tout au long du document, quelle que soit la longueur de ce dernier. Un autre choix était bien sûr possible, mais celui-là m’a semblé le plus simple.
Il est bien entendu toujours possible de remettre ce compteur à zéro « à la main » en saisissant là où cela paraît nécessaire : \setcounter{tgoexo}{0}
, puisque la documentation précise que le nom du compteur est tgoexo
. Cette méthode est sans inconvénient si son emploi demeure ponctuel (par exemple pour une feuille d’exercices en deux parties), mais peut devenir fastidieuse, voire un peu risquée, si on attend une remise à zéro plus systématique du compteur. « Plus systématique », cela peut signifier que l’on souhaite que le compteur soit remis à zéro à chaque nouveau chapitre (pour ceux qui utilisent la version book) ou chaque nouvelle section.
Or il existe une commande LaTeX (de portée générale, raison pour laquelle elle n’est pas documentée dans le mode d’emploi de tango) permettant d’assujettir un compteur à un autre. Cette commande est counterwithin
(ou sa version étoilée counterwithin*
).
Attention : cela ne peut fonctionner qu’avec une commande pourvue d’un compteur opérationnel. En particulier les commandes de sectionnement étoilées telles que \section*
ne fonctionneront pas !
Syntaxe
counterwithin{<counter>}{<parent-counter>}
ou
counterwithin*{<counter>}{<parent-counter>}
Dans les deux cas, une fois la commande exécutée, <counter>
est remis à zéro à chaque fois que <parent-counter>
est incrémenté.
La version étoilée ne change pas l’affichage par défaut de \the<counter>
, tandis que la version non étoilée transforme \the<counter>
en \the<parent-counter>.\arabic{<counter>}
Noter qu’il existe des commandes \counterwithout
et \counterwithout*
qui font tout le contraire de celles dont nous venons de parler.
Il est enfin possible de définir une commande permettant (par exemple) d’introduire les différentes parties d’une feuille d’exercice, pourvu d’un compteur apparent ou non et de subordonner la remise à zéro de \tgoexo
au compteur de cette nouvelle commande.
Exemple 1 : \counterwithin
% !TEX TS-program = LuaLaTeX
\documentclass[french,ColorTheme=Red]{tango}
\counterwithin{tgoexo}{section}
\begin{document}
\section{Exercices de géométrie}
\exo Démontrer que les médiatrices des trois côtés d'un triangle sont concourantes.
\exo Démontrer que les trois médianes d'un triangle sont concourantes.
\section{Exercices d'arithmétique}
\exo Démontrer que la somme de deux entiers pairs est un entier pair.
\exo Démontrer que la somme de deux entiers impairs est un entier pair.
\end{document}
Exemple 2 : \counterwithin*
% !TEX TS-program = LuaLaTeX
\documentclass[french,ColorTheme=Red]{tango}
\counterwithin*{tgoexo}{section}
\begin{document}
\section{Exercices de géométrie}
\exo Démontrer que les médiatrices des trois côtés d'un triangle sont concourantes.
\exo Démontrer que les trois médianes d'un triangle sont concourantes.
\section{Exercices d'arithmétique}
\exo Démontrer que la somme de deux entiers pairs est un entier pair.
\exo Démontrer que la somme de deux entiers impairs est un entier pair.
\end{document}
</codee>
{Exemple 3 : commande personnelle avec compteur apparent}
<code class="latex">
% !TEX TS-program = LuaLaTeX
\documentclass[french,ColorTheme=Red]{tango}
\newcounter{partexo}
\newcommand\partexo[1]{%
\vspace{12pt plus 3pt minus 2pt}\par
\refstepcounter{partexo}
{\color{ColorOne}\bfseries\thepartexo.\hspace{0.5em}\MakeUppercase{#1}}
\vspace{2pt minus 1pt}\par\nobreak
}
\counterwithin*{tgoexo}{partexo}
\begin{document}
\partexo{Exercices de géométrie}
\exo Démontrer que les médiatrices des trois côtés d'un triangle sont concourantes.
\exo Démontrer que les trois médianes d'un triangle sont concourantes.
\partexo{Exercices d'arithmétique}
\exo Démontrer que la somme de deux entiers pairs est un entier pair.
\exo Démontrer que la somme de deux entiers impairs est un entier pair.
\end{document}
Exemple 4 : commande personnelle avec compteur non apparent
% !TEX TS-program = LuaLaTeX
\documentclass[french,ColorTheme=Red]{tango}
\newcounter{partexo}
\newcommand\partexo[1]{%
\vspace{12pt plus 3pt minus 2pt}\par
\stepcounter{partexo}
{\color{ColorOne}\bfseries\MakeUppercase{#1}}
\vspace{2pt minus 1pt}\par\nobreak
}
\counterwithin*{tgoexo}{partexo}
\begin{document}
\partexo{Exercices de géométrie}
\exo Démontrer que les médiatrices des trois côtés d'un triangle sont concourantes.
\exo Démontrer que les trois médianes d'un triangle sont concourantes.
\partexo{Exercices d'arithmétique}
\exo Démontrer que la somme de deux entiers pairs est un entier pair.
\exo Démontrer que la somme de deux entiers impairs est un entier pair.
\end{document}