Teks kustom, bukan nomor baris dengan paket algpseudocode

Sep 02 2020

Alih-alih mencetak 1 :, 2:, .. Saya ingin mencetak Langkah 1 :, Langkah 2:, .. di awal setiap baris. Ini kode saya:

\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}

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

\end{document}

Saya melihat pertanyaan ini , solusi tidak berhasil untuk saya, acara

Perintah ALC @ lno tidak ditentukan.

Saya rasa ini karena saya menggunakan paket algpseudocode, dan solusinya menggunakan paket algoritmik. Selain itu, saya ingin nomor baris diganti dengan "Langkah 1", "Langkah 2", dan seterusnya; tetapi solusi itu mengganti nomor baris dengan simbol tetap.

Jawaban

1 Marijn Sep 03 2020 at 08:52

Anda dapat menentukan ulang \ALG@stepmakro internal untuk menambahkan teks sebelum mencetak nomor. Definisi di bawah ini disalin dari algoritmicxsumber (yang digunakan oleh algpseudocode) dengan kata Langkah ditambahkan. Karena makro berisi @karakter yang Anda butuhkan untuk meletakkan \makeatletterdan \makeatothermengelilingi definisi.

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

Hasil: