Texto personalizado em vez de números de linha com pacote algpseudocode

Texto personalizado em vez de números de linha com pacote algpseudocode

Em vez de imprimir 1:, 2:,.. Quero imprimir Step 1:, Step 2:,.. no início de cada linha. Aqui está o meu código:

\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}

\begin{algorithm}
    \caption{My algorithm}
\begin{algorithmic}[1]
    \State foo
    \State bar
\end{algorithmic}
\end{algorithm}

\end{document}

eu olheiessepergunta, a solução não funcionou para mim, mostra

Comando ALC@lno indefinido.

Acho que é porque estou usando o pacote algpseudocode e a solução está usando o pacote algorítmico. Além disso, quero que os números das linhas sejam substituídos por "Etapa 1", "Etapa 2" e assim por diante; mas essa solução é substituir os números das linhas por um símbolo fixo.

Responder1

Você pode redefinir a \ALG@stepmacro interna para adicionar um texto antes de imprimir o número. A definição abaixo foi copiada da algoritmicxfonte (que é usada por algpseudocode) com a palavraEtapaadicionado. Porque a macro contém o @caractere que você precisa colocar \makeatletterem \makeatothertorno da definição.

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}

\makeatletter
\def\ALG@step%
   {%
   \addtocounter{ALG@line}{1}%
   \addtocounter{ALG@rem}{1}%
   \ifthenelse{\equal{\arabic{ALG@rem}}{\ALG@numberfreq}}%
      {\setcounter{ALG@rem}{0}\alglinenumber{Step \arabic{ALG@line}}}%
      {}%
   }%
\makeatother

\begin{document}

\begin{algorithm}
    \caption{My algorithm}
\begin{algorithmic}[1]
    \State foo
    \State bar
\end{algorithmic}
\end{algorithm}

\end{document}

Resultado:

insira a descrição da imagem aqui

informação relacionada