
Вместо того, чтобы печатать 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}
Результат: