Mauvaise incrémentation du compteur?
Le contexte
Je souhaite ajouter des commentaires surlignés automatiquement numérotés dans le texte.
Tentative
Suite à cette réponse, j'ai écrit ce qui suit
\documentclass{article}
\usepackage{color}
\usepackage{soul}
\newcounter{mycounter}
\newcommand\showmycounter{\stepcounter{mycounter}\themycounter}
\definecolor{aquamarine}{rgb}{0.5, 1.0, 0.83}
\newcommand{\my}[1]{\sethlcolor{aquamarine}
\protect\hl{Comment \showmycounter: #1} \sethlcolor{yellow}}
\begin{document}
some text
\my{my first comment}\\
some more text
\my{my second comment}
\end{document}
qui malheureusement pour une raison étrange incrémente le compteur par pas de cinq.
Question
Pourriez-vous s'il vous plaît me dire comment obtenir un incrément d'unité sur ce compteur?
PS: Je suis un peu novice en programmation latex. Permettez-moi de m'excuser à l'avance si cette question est stupide.
Réponses
En fournissant mon commentaire comme réponse: vous ne devriez pas mettre à l' \stepcounterintérieur de l'argument de \hl. Au lieu de cela, incrémentez le compteur avant et ne mettez qu'à l' \themycounterintérieur \hl:
\documentclass{article}
\usepackage{color}
\usepackage{soul}
\newcounter{mycounter}
\definecolor{aquamarine}{rgb}{0.5, 1.0, 0.83}
\DeclareRobustCommand{\my}[1]
{%
\sethlcolor{aquamarine}\stepcounter{mycounter}%
\protect\hl{Comment \themycounter: #1} \sethlcolor{yellow}%
}
\begin{document}
some text
\my{my first comment}\\
some more text
\my{my second comment}
\end{document}
Le traitement de \hlnécessite plusieurs passages sur son argument pour effectuer des mesures. Vous avez découvert qu'il y a cinq passes et chacune incrémente le compteur. Notez que \stepcounteragit globalement.
Vous pouvez éviter de plonger dans les entrailles de soulavec un peu plus de travail.
\documentclass{article}
\usepackage{color}
\usepackage{soul}
\definecolor{aquamarine}{rgb}{0.5, 1.0, 0.83}
\newif\ifstep
\newcommand{\stepcounteronce}[1]{%
\ifstep
\global\stepfalse
\stepcounter{#1}%
\fi
}
\newcounter{mycounter}
\newcommand\showmycounter{\stepcounteronce{mycounter}\themycounter}
\newcommand{\my}[1]{{% an additional group to do \sethlcolor locally
\global\steptrue
\sethlcolor{aquamarine}%
\hl{Comment \showmycounter: #1}%
}}
\begin{document}
some text
\my{my first comment}
some more text
\my{my second comment}
This is again \hl{yellow}
\end{document}
En ajoutant \global\steptruevous démarrez la machinerie qui permet \stepcounteroncede ne faire \stepcounterque la première fois.
Notez le groupe supplémentaire, qui permet d'éviter de redéclarer explicitement \sethlcolor.