LaTeX で algpseudocode パッケージ(擬似コード用)を使ったときに行番号と末尾がおかしくなる問題の対処

起こった問題

こういうやつ.

擬似コード(行番号がおかしい,末尾に余計な「=0」が付く)
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{algpseudocode}

\begin{algorithm}[tbh]
    \caption{疑似コード}
    \begin{algorithmic}[1]
        \REQUIRE hoge
        \ENSURE hoge
        \Function {main}{ $void$ }
            \State $ N \leftarrow 1 $
            \State hoge$ \leftarrow $ foo\_class(initial\_setting)
            \State hoge.execute(OBJECTIVE, N)
            \PRINT hoge.best\_value
        \EndFunction
        \Function {objective}{ bar }
            \State $ a \leftarrow 1 $
            \RETURN a
        \EndFunction
    \end{algorithmic}
\end{algorithm}




解決法

原因としてはパッケージが混在しているのが良くなかった[1][2]

  • algorithmic パッケージを削除する
  • 大文字のやつを小文字に置き換える(\REQUIRE → \Require など)
  • \Print などは無いため,\State \textbf{print} (もしくは \State \PRINT)で置き換える
擬似コード(修正後)
\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{algorithm}[tbh]
    \caption{擬似コード}
    \begin{algorithmic}[1]
        \Require hoge
        \Ensure hoge
        \Function {main}{ void }
            \State $ N \leftarrow 1 $
            \State hoge$ \leftarrow $ foo\_class(initial\_setting)
            \State hoge.execute(OBJECTIVE, N)
            \State \textbf{print} hoge.best\_trial
        \EndFunction
        \Function {objective}{ bar }
            \State $ a \leftarrow 1 $
            \State \textbf{return} a
        \EndFunction
    \end{algorithmic}
\end{algorithm}




参考サイト
[1] algorithmicxを使いLaTeXに擬似コードを追加 – Qiita
[2] how to remove the end for =0 in latex algorithm? – Stack Overflow