¿Incremento incorrecto del contador?

¿Incremento incorrecto del contador?

Contexto

Me gustaría agregar comentarios resaltados numerados automáticamente en el texto.

Intentar

Siguiendo estorespuestaescribí lo siguiente

\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}

que lamentablemente por alguna extraña razón incrementa el contador en pasos de cinco.

ingrese la descripción de la imagen aquí

Pregunta

¿Podría decirme cómo obtener un incremento de unidad en este contador?

PD: Soy un poco novato en la programación con látex. Permítanme disculparme de antemano si esta pregunta es tonta.

Respuesta1

Proporcionando mi comentario como respuesta: no deberías incluirlo \stepcounterdentro del argumento de \hl. En su lugar, incremente el contador anterior y solo colóquelo \themycounterdentro \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}

ingrese la descripción de la imagen aquí

Respuesta2

El procesamiento de \hlrequiere múltiples pasadas sobre su argumento para poder realizar mediciones. Descubriste que hay cinco pases y cada uno incrementa el contador. Tenga en cuenta que \stepcounteractúa globalmente.

Puedes evitar sumergirte en las entrañas soulcon un poco más de trabajo.

\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}

Al agregar \global\steptruese pone en marcha la maquinaria que permite \stepcounteroncehacerlo \stepcountersólo la primera vez.

Tenga en cuenta el grupo adicional, que permite evitar la redeclaración explícita \sethlcolor.

ingrese la descripción de la imagen aquí

información relacionada