Incremento errado do contador?

Incremento errado do contador?

Contexto

Gostaria de adicionar comentários destacados numerados automaticamente no texto.

Tentar

Seguindo istoresponderEu escrevi o seguinte

\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 infelizmente, por algum motivo estranho, aumenta o contador em etapas de cinco.

insira a descrição da imagem aqui

Pergunta

Você poderia me dizer como obter um incremento de unidade neste contador?

PS: Sou um pouco novato em programação de látex. Deixe-me pedir desculpas antecipadamente se esta pergunta for idiota.

Responder1

Fornecendo meu comentário como resposta: você não deve colocar \stepcounterdentro do argumento de \hl. Em vez disso, aumente o contador antes dele e coloque apenas \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}

insira a descrição da imagem aqui

Responder2

O processamento de \hlrequer múltiplas passagens sobre seu argumento para fazer medições. Você descobriu que existem cinco passagens e cada uma aumenta o contador. Observe que \stepcounteratua globalmente.

Você pode evitar mergulhar nas entranhas soulcom mais trabalho.

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

Ao adicionar \global\steptruevocê inicia o maquinário que permite \stepcounteroncefazer \stepcounterapenas na primeira vez.

Observe o grupo adicional, que permite evitar a redeclaração explícita \sethlcolor.

insira a descrição da imagem aqui

informação relacionada