Пользовательский текст вместо номеров строк с пакетом algpseudocode

Пользовательский текст вместо номеров строк с пакетом algpseudocode

Вместо того, чтобы печатать 1:, 2:,.. Я хочу печатать Step 1:, Step 2:,.. в начале каждой строки. Вот мой код:

\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}

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

\end{document}

я посмотрел наэтотвопрос, решение не сработало для меня, показывает

Команда ALC@lno не определена.

Я думаю, это потому, что я использую пакет algpseudocode, а решение использует алгоритмический пакет. Более того, я хочу, чтобы номера строк были заменены на «Шаг 1», «Шаг 2» и так далее; но это решение заменяет номера строк фиксированным символом.

решение1

Вы можете переопределить внутренний \ALG@stepмакрос, чтобы добавить текст перед печатью числа. Определение ниже скопировано из источника algoritmicx(который используется algpseudocode) со словомШагдобавлено. Поскольку макрос содержит @символ, который нужно поместить \makeatletterвокруг \makeatotherопределения.

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

Результат:

введите описание изображения здесь

Связанный контент