algorithmc および algorithm 環境でアルゴリズムの番号付けを修正するにはどうすればよいですか?

algorithmc および algorithm 環境でアルゴリズムの番号付けを修正するにはどうすればよいですか?

アルゴリズムの疑似コードがいくつかありますが、問題ないように見えます (コンパイル時に若干のエラーがあります)。しかし、最大の問題は、ステップの番号がアルゴリズムのステップ数と一致しないことです。以下に MWE を示します。

\documentclass[conference]{IEEEtran}
\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{graphicx}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{tabulary}
\usepackage{algpseudocode}
\usepackage{booktabs}
\usepackage{cleveref}
\usepackage{enumitem}
\usepackage{subcaption}
\usepackage{amsmath,amssymb,amsthm,bbm,color,psfrag,amsfonts}
\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\algrenewcommand\algorithmicensure{\textbf{Output:}}
\usepackage{url}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}
\newtheorem{asu}{Assumption}
\newtheorem{remark}{Remark}
\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]
\crefname{lemma}{Lemma}{Lemmas}
\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\algrenewcommand\algorithmicensure{\textbf{Output:}}
\begin{document}
 \begin{algorithm}[H]
 \caption{My Algorithm}\label{alg:greedy}
 \begin{algorithmic}[1]
 \renewcommand{\algorithmicrequire}{\textbf{Input:}}
 \renewcommand{\algorithmicensure}{\textbf{Output:}}
 \Require $M^0=4$.
 \Ensure $V,\text{found}$  
  \WHILE{$P^l \neq \emptyset$}
  \STATE{state}
    \For{$i \in 1....|N|$} 
        \State{Compute }
    \EndFor \label{nio}
    \State Get $\theta$ \%. \label{tre}
    \State $G \gets$ Find vals$) \label{find_vals}
    \State $T,Y^{m+1} \gets $ \Call{Otherfunc}{$I$} \label{p}
 \ENDWHILE
 \end{algorithmic}
 \end{algorithm}
\end{document}

数字「2」が何度も表示されていることにお気づきでしょう。番号の付け方を修正する方法についてご助言いただければ幸いです。何かアイデアはありますか?

PS 役に立つかもしれないので、これは IEEE テンプレートであることに気付くかもしれません。

答え1

またはalgorithmicのどちらか一方を使用する必要がありalgpseudocode、両方を使用することはできません。両方のパッケージの構文が混在しているため、当然エラーが発生します。

パッケージと定義が重複していない正しいバージョンを次に示します。

私は指摘したい

  1. caption(したがってsubcaption) は では使用できませんIEEEtran。サブフロートが必要な場合は、\usepackage[caption=false]{subfig}このパッケージを読み込んで構文を確認してください。

  2. textcompもはや必要ではない

  3. psfrag互換性がありませんpdflatex

\documentclass[conference]{IEEEtran}
\usepackage{cite}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{graphicx}
%\usepackage{textcomp}% no longer necessary
\usepackage{xcolor}
\usepackage{algorithm}
%\usepackage{algorithmic}
\usepackage{algpseudocode}
\usepackage{booktabs}
\usepackage{enumitem}
%\usepackage{subcaption}% not with IEEEtran
\usepackage{url}
\usepackage{cleveref}

\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\algrenewcommand\algorithmicensure{\textbf{Output:}}

\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}
\newtheorem{asu}{Assumption}
\newtheorem{remark}{Remark}
\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]
\crefname{lemma}{Lemma}{Lemmas}


\begin{document}

\begin{algorithm}[H]
\caption{My Algorithm}\label{alg:greedy}
\begin{algorithmic}[1]
\Require $M^0=4$.
\Ensure $V,\text{found}$  
\While{$P^l \neq \emptyset$}
  \State state
  \For{$i \in 1\dots|N|$} 
    \State Compute
  \EndFor \label{nio}
  \State Get $\theta$ \%. \label{tre}
  \State $G \gets$ Find vals \label{find_vals}
  \State $T,Y^{m+1} \gets $ \Call{Otherfunc}{$I$} \label{p}
\EndWhile
\end{algorithmic}
\end{algorithm}

\end{document}

ここに画像の説明を入力してください

また、 をロードすることもお勧めします\usepackage{newtx}(削除はamssymb前者で既にカバーされています)。 数式は Times のようなフォントで表示され、出力は次のようになります。 パッケージがどのように呼び出されるかを確認するため、最初の数行を以下に示します ( の後amsthm)。

\documentclass[conference]{IEEEtran}
\usepackage{cite}
\usepackage{amsmath,amsthm}
\usepackage{newtx}

ここに画像の説明を入力してください

関連情報